MCP (Model Context Protocol): 完全ガイド
Claude Code の MCP システムをマスターしましょう。公式 Model Context Protocol を通じて、外部ツール、データベース、サービスと連携し、Claude の機能を拡張する方法を学びます。
MCP (Model Context Protocol) は、外部ツール、データベース、サービスに接続することで Claude の機能を拡張する Claude Code のプラグインシステムです。このガイドでは、MCP を効果的に活用するために必要な知識をすべて解説します。
MCP とは?
公式 Anthropic ドキュメントによると、MCP は AI アシスタントに以下の機能を提供する標準化されたプロトコルです:
- 外部データソースへのアクセス(データベース、API、ファイルシステム)
- 特殊なツールの実行(Git、パッケージマネージャー、クラウドサービス)
- 永続的なコンテキストの維持(メモリ、ナレッジグラフ)
- 開発ツールとの統合(IDE、CI/CD、プロジェクト管理)
MCP サーバーは、Claude に基本機能を超えた新しい能力を与えるプラグインと考えてください。
MCP アーキテクチャ
┌─────────────────────────────────────────────────────────┐
│ Claude Code CLI │
│ ┌─────────────────────────────────────────────────┐ │
│ │ MCP Client │ │
│ │ Manages connections to MCP servers │ │
│ └─────────────────────────────────────────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ MCP Server 1 │ │ MCP Server 2 │ │ MCP Server 3 │ │
│ │ (filesystem) │ │ (memory) │ │ (git) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ Local Files Knowledge Git Repository │
│ Graph │
└─────────────────────────────────────────────────────────┘
MCP サーバーの追加
公式 CLI メソッド(推奨)
Claude Code ドキュメントによると、常に CLI を使用してください:
# Basic syntax
claude mcp add [--scope <scope>] <name> [options] -- <command>
# Scopes:
# --scope user → ~/.claude/settings.json (all projects)
# --scope project → .claude/settings.json (this project)
よく使用される MCP サーバー
1. ファイルシステムアクセス
claude mcp add --scope project filesystem \
-- npx -y @modelcontextprotocol/server-filesystem .
機能:
- ファイルの読み書き
- ディレクトリの作成
- ディレクトリ内容の一覧表示
- ファイル検索とパターンマッチング
2. Memory(ナレッジグラフ)
# IMPORTANT: Always use MEMORY_FILE_PATH for project isolation
claude mcp add --scope project memory \
-e MEMORY_FILE_PATH=./.claude/memory.json \
-- npx -y @modelcontextprotocol/server-memory
機能:
- 永続的な知識の保存
- エンティティと関係の追跡
- セッションをまたいだメモリ
- セマンティック検索
⚠️ 重要: MEMORY_FILE_PATH を設定しないと、すべてのプロジェクトが同じメモリを共有します!
3. Git 操作
claude mcp add --scope project git \
-- npx -y @modelcontextprotocol/server-git
機能:
- Git status、log、diff
- ブランチ操作
- コミット履歴
- File blame
4. GitHub 統合
claude mcp add --scope user github \
-e GITHUB_TOKEN=<your-token> \
-- npx -y @modelcontextprotocol/server-github
機能:
- Issue と PR
- リポジトリ管理
- コード検索
- Actions ワークフロー
5. Sequential Thinking
claude mcp add --scope user sequential-thinking \
-- npx -y @modelcontextprotocol/server-sequential-thinking
機能:
- 構造化された推論
- マルチステップ分析
- 複雑な問題の分解
6. Context7(ライブドキュメント)
claude mcp add --scope user context7 \
-- npx -y context7-mcp
機能:
- リアルタイムの公式ドキュメント
- 最新のライブラリリファレンス
- フレームワークガイダンス
データベース MCP サーバー
PostgreSQL
claude mcp add --scope project postgres \
-e DATABASE_URL="postgresql://user:pass@localhost:5432/db" \
-- npx -y @modelcontextprotocol/server-postgres
機能:
- クエリ実行
- スキーマ検査
- テーブル操作
- マイグレーションサポート
SQLite
claude mcp add --scope project sqlite \
-e DATABASE_PATH="./data/app.db" \
-- npx -y @modelcontextprotocol/server-sqlite
MongoDB
claude mcp add --scope project mongodb \
-e MONGODB_URI="mongodb://localhost:27017/db" \
-- npx -y @modelcontextprotocol/server-mongodb
クラウドサービス MCP サーバー
AWS
claude mcp add --scope user aws \
-e AWS_ACCESS_KEY_ID=<key> \
-e AWS_SECRET_ACCESS_KEY=<secret> \
-e AWS_REGION=us-east-1 \
-- npx -y @modelcontextprotocol/server-aws
Cloudflare
claude mcp add --scope user cloudflare \
-e CLOUDFLARE_API_TOKEN=<token> \
-- npx -y @anthropic/cloudflare-mcp
Vercel
claude mcp add --scope user vercel \
-e VERCEL_TOKEN=<token> \
-- npx -y vercel-mcp
MCP 設定ファイル
プロジェクト設定(.claude/settings.json)
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
},
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"],
"env": {
"MEMORY_FILE_PATH": "./.claude/memory.json"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
}
},
"enableAllProjectMcpServers": true
}
ユーザー設定(~/.claude/settings.json)
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
},
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
}
}
}
MCP スコープと階層
MCP サーバーは Claude Code の 4 層階層に従います:
┌─────────────────────────────────────────────┐
│ Layer 1: Enterprise │
│ Location: /etc/claude-code/settings.json │
│ Control: IT department │
│ Use: Restrict MCP servers via allowlist │
├─────────────────────────────────────────────┤
│ Layer 2: User Global │
│ Location: ~/.claude/settings.json │
│ Use: Personal MCP servers (github, etc.) │
├─────────────────────────────────────────────┤
│ Layer 3: Project │
│ Location: .claude/settings.json │
│ Use: Project-specific servers (db, memory) │
├─────────────────────────────────────────────┤
│ Layer 4: Project Local │
│ Location: .claude/settings.local.json │
│ Use: Personal overrides (gitignored) │
└─────────────────────────────────────────────┘
優先順位: Local > Project > User > Enterprise
MCP コンテキストコスト
各 MCP サーバーはコンテキストトークンを消費します。コストに注意してください:
| MCP サーバー | 概算トークン数 | 推奨 |
|---|---|---|
| hubspot | ~1,800 | ✅ 小さい、推奨 |
| netlify | ~2,000 | ✅ 小さい、推奨 |
| figma | ~2,500 | ✅ 許容範囲 |
| notion | 最適化済み | ✅ 公式最適化 |
| vercel | ~3,000 | ✅ 許容範囲 |
| stripe | ~4,000 | ⚠️ 中程度 |
| linear | ~6,200 | ⚠️ 大きい |
| atlassian | ~7,100 | ⚠️ 大きい |
| asana | ~12,800 | ❌ 大きすぎる |
| sentry | ~14,000 | ❌ 大きすぎる、控えめに使用 |
ベストプラクティス: 実際に使用する MCP サーバーのみを有効にしてください。サーバーが多いほど = コンテキストが多い = コストが高く、レスポンスが遅くなります。
MCP 管理コマンド
# List all MCP servers
claude mcp list
# Add a new server
claude mcp add --scope project <name> -- <command>
# Remove a server
claude mcp remove --scope project <name>
# Check server status
claude mcp status
# Reset project MCP choices (troubleshooting)
claude mcp reset-project-choices
MCP の実践的な使用例
例 1: データベースクエリ
postgres MCP が有効な場合:
ユーザー: "過去7日間にサインアップしたユーザーを表示して"
Claude: [postgres MCP を使用]
→ クエリ: SELECT * FROM users WHERE created_at > NOW() - INTERVAL '7 days'
→ フォーマットされた結果を返す
→ クエリが遅い場合はインデックスを提案
例 2: ナレッジの永続化
memory MCP が有効な場合:
ユーザー: "すべての API バリデーションに Zod を使用することを覚えておいて"
Claude: [memory MCP を使用]
→ エンティティを作成: "API Validation"
→ 観察を追加: "Use Zod for all API validation"
→ 将来のセッションでも利用可能
例 3: GitHub 統合
github MCP が有効な場合:
ユーザー: "議論したログインバグの Issue を作成して"
Claude: [github MCP を使用]
→ タイトル、本文、ラベル付きで Issue を作成
→ 関連するコードにリンク
→ 指定された場合はチームメンバーにアサイン
Memory MCP 詳細解説
Memory MCP は永続的なプロジェクト知識を可能にするため、特別な注意が必要です。
Memory コマンド
# Built-in skills for memory management
/memory-save # Save important knowledge
/memory-search # Search saved knowledge
/memory-list # List all entities
/memory-audit # Check memory health
Memory 構造
{
"entities": [
{
"name": "Authentication System",
"type": "Architecture",
"observations": [
"Uses JWT with 24-hour expiration",
"Refresh tokens stored in httpOnly cookies",
"Located in src/lib/auth.ts"
]
},
{
"name": "Database Schema",
"type": "Infrastructure",
"observations": [
"PostgreSQL with Prisma ORM",
"Users table has email_verified column",
"Soft deletes using deleted_at"
]
}
],
"relations": [
{
"from": "Authentication System",
"to": "Database Schema",
"type": "uses"
}
]
}
Memory のベストプラクティス
## 保存すべきもの
✅ アーキテクチャの決定とその理由
✅ コードパターンと規約
✅ バグ修正とその根本原因
✅ 重要な設定の詳細
✅ チームの決定と制約
## 保存すべきでないもの
❌ 一時的なデバッグ情報
❌ 一度きりの実装詳細
❌ CLAUDE.md に既にある情報
❌ 頻繁に変更されるデータ
MCP のトラブルシューティング
サーバーが読み込まれない
# Check if server is registered
claude mcp list
# Verify settings file
cat .claude/settings.json
# Reset and re-add
claude mcp reset-project-choices
claude mcp add --scope project <name> -- <command>
権限の問題
プロジェクト設定で enableAllProjectMcpServers: true を確認してください:
{
"enableAllProjectMcpServers": true,
"mcpServers": { ... }
}
環境変数の問題
環境変数には ${VAR_NAME} 構文を使用してください:
{
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
}
または -e フラグで直接指定します:
claude mcp add --scope project postgres \
-e DATABASE_URL="postgresql://..." \
-- npx -y @modelcontextprotocol/server-postgres
エンタープライズ MCP 管理
エンタープライズ環境では、allowlist を使用して使用可能な MCP サーバーを制御します:
// /etc/claude-code/settings.json
{
"mcpServers": {
"allowlist": [
"filesystem",
"memory",
"git"
]
}
}
これにより、ユーザーが許可されていない MCP サーバーを追加することを防ぎます。
カスタム MCP サーバーの作成
特殊なニーズに対応するためにカスタム MCP サーバーを作成できます。プロトコル仕様は modelcontextprotocol.io にあります。
基本構造
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
const server = new Server(
{ name: 'my-custom-mcp', version: '1.0.0' },
{ capabilities: { tools: {} } }
);
server.setRequestHandler('tools/list', async () => ({
tools: [
{
name: 'my_tool',
description: 'Does something useful',
inputSchema: {
type: 'object',
properties: {
input: { type: 'string' }
}
}
}
]
}));
server.setRequestHandler('tools/call', async (request) => {
// Handle tool calls
});
const transport = new StdioServerTransport();
await server.connect(transport);
MCP と他のツールの比較
| 機能 | MCP | ビルトインツール | Hooks |
|---|---|---|---|
| 外部データアクセス | ✅ 主目的 | ❌ 限定的 | ❌ なし |
| 永続ストレージ | ✅ Memory MCP | ❌ セッションのみ | ❌ なし |
| カスタム統合 | ✅ 拡張可能 | ❌ 固定 | ✅ コマンド経由 |
| コンテキストコスト | 可変 | 含まれる | 最小限 |
| セットアップ複雑度 | 中程度 | なし | 低い |
MCP を始めよう
今日:
- プロジェクトに filesystem と memory MCP を追加
- プロジェクト分離のために
MEMORY_FILE_PATHを使用 - 重要な決定を 1 つメモリに保存
今週:
- 該当する場合はデータベース MCP を追加
- Issue トラッキングのために GitHub MCP を設定
- memory コマンド(/memory-*)を探索
今月:
- コンテキスト効率のために MCP 選択を最適化
- プロジェクト固有の MCP 設定を作成
- 特殊なニーズにはカスタム MCP を検討
MCP は Claude Code をスタンドアロンのアシスタントから統合開発プラットフォームへと変革します。サーバーを賢く選択し、Claude の完全な可能性を解放しましょう。
出典: Model Context Protocol、Claude Code Documentation、MCP Servers Repository