MCP (Model Context Protocol): 完全ガイド
Claude Code の MCP システムをマスターしましょう。公式 Model Context Protocol を通じて、外部ツール、データベース、サービスと連携し、Claude の機能を拡張する方法を学びます。
2026年10月21日更新: Claude Code 2.1.305 に合わせて全面的に見直しました。MCP のスコープと設定ファイル(
.mcp.jsonと~/.claude.json)を訂正し、廃止済み・存在しないサーバーパッケージを現行の公式サーバーに置き換え、tool search、組織による MCP ポリシー、Memory サーバーのMEMORY_FILE_PATHを絶対パスで指定する必要性を追記しました。
MCP (Model Context Protocol) は、Claude Code が外部ツール、データベース、サービスに接続して Claude の機能を拡張するためのオープンなプロトコルです。このガイドでは、MCP を効果的に活用するために必要な知識をすべて解説します。
MCP とは?
Model Context Protocol のドキュメントによると、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 の MCP ドキュメントに従い、CLI でサーバーを追加します:
# Local stdio server: everything after -- is the server's own command
claude mcp add [--scope <scope>] <name> [-e KEY=value] -- <command> [args...]
# Remote HTTP server (the recommended transport for cloud services)
claude mcp add --transport http [--scope <scope>] <name> <url>
# Scopes:
# --scope local → ~/.claude.json, this project only (default)
# --scope project → .mcp.json in the project root (shared via git)
# --scope user → ~/.claude.json, all your projects
以下の公式リファレンスサーバー(
@modelcontextprotocol/server-*)は 2026 年 10 月に 2.0 をリリースし、Node.js 24 以上を要件としています。
よく使用される MCP サーバー
1. ファイルシステムアクセス
claude mcp add --scope project filesystem \
-- npx -y @modelcontextprotocol/server-filesystem .
機能:
- ファイルの読み書き
- ディレクトリの作成
- ディレクトリ内容の一覧表示
- ファイル検索とパターンマッチング
2. Memory(ナレッジグラフ)
# IMPORTANT: Use an absolute MEMORY_FILE_PATH for project isolation
# (run from the project root; the shell expands $PWD)
claude mcp add memory \
-e MEMORY_FILE_PATH="$PWD/.claude/memory.jsonl" \
-- npx -y @modelcontextprotocol/server-memory
機能:
- 永続的な知識の保存
- エンティティと関係の追跡
- セッションをまたいだメモリ
- エンティティ名・タイプ・観察内容を対象としたキーワード検索
⚠️ 重要: MEMORY_FILE_PATH を設定しないと、すべてのプロジェクトが同じメモリを共有します!相対パスでは解決しません。サーバーは相対パスをプロジェクトではなく自身のパッケージディレクトリを基準に解決するため、必ず絶対パスを指定してください(~/ で始まるパスも使えます)。
3. Git 操作
# The official Git server is a Python package; run it with uv's uvx
claude mcp add --scope project git \
-- uvx mcp-server-git --repository .
機能:
- Git status、log、diff
- ブランチ操作
- コミット履歴
- ステージングとコミット
4. GitHub 統合
# GitHub's remote MCP server, authenticated with a fine-grained personal access token
claude mcp add --transport http --scope user github \
https://api.githubcopilot.com/mcp/ \
--header "Authorization: Bearer <your-github-pat>"
機能:
- Issue と PR
- リポジトリ管理
- コード検索
- Actions ワークフロー
5. Sequential Thinking
claude mcp add --scope user sequential-thinking \
-- npx -y @modelcontextprotocol/server-sequential-thinking
機能:
- 構造化された推論
- マルチステップ分析
- 複雑な問題の分解
6. Context7(ライブドキュメント)
# Remote server; an API key is optional but recommended for higher rate limits
claude mcp add --transport http --scope user context7 \
https://mcp.context7.com/mcp \
--header "Authorization: Bearer <your-context7-api-key>"
機能:
- リアルタイムの公式ドキュメント
- 最新のライブラリリファレンス
- フレームワークガイダンス
データベース MCP サーバー
PostgreSQL
# DBHub (@bytebase/dbhub) is the example the Claude Code docs use.
# Connect with a read-only database user.
claude mcp add --transport stdio db \
-- npx -y @bytebase/dbhub \
--dsn "postgresql://readonly:pass@localhost:5432/db"
機能:
- SQL の実行(
execute_sql) - スキーマとテーブルの検索(
search_objects) - クエリプランとヘルスチェック(オプトインのツール)
- MySQL、MariaDB、SQL Server、Oracle、SQLite にも対応
SQLite
claude mcp add sqlite \
-- npx -y @bytebase/dbhub --dsn "sqlite:///path/to/app.db"
MongoDB
# MongoDB's official server; --readOnly blocks create/update/delete tools
claude mcp add mongodb \
-e MDB_MCP_CONNECTION_STRING="mongodb://localhost:27017/db" \
-- npx -y mongodb-mcp-server@latest --readOnly
クラウドサービス MCP サーバー
AWS
# AWS MCP Server (managed, OAuth sign-in); pick your Region's endpoint
claude mcp add --transport http --scope user aws-mcp \
https://aws-mcp.us-east-1.api.aws/mcp
Cloudflare
# Cloudflare API MCP Server: sign in with OAuth from /mcp,
# or add --header "Authorization: Bearer <api-token>"
claude mcp add --transport http --scope user cloudflare \
https://mcp.cloudflare.com/mcp
Vercel
# Vercel's official remote server; authenticate from /mcp
claude mcp add --transport http --scope user vercel \
https://mcp.vercel.com
OAuth を使うリモートサーバーは、Claude Code 内で /mcp(または claude mcp login <name>)を実行してサインインを完了します。
MCP 設定ファイル
プロジェクトのサーバー(.mcp.json)
claude mcp add --scope project はプロジェクトルートの .mcp.json に書き込みます。コミットすればチーム全員が同じサーバーを使えます。command、args、env、url、headers 内の ${VAR} と ${VAR:-default} は展開されます:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
},
"db": {
"command": "npx",
"args": ["-y", "@bytebase/dbhub", "--dsn", "${DATABASE_URL}"]
},
"docs-api": {
"type": "http",
"url": "${API_BASE_URL:-https://api.example.com}/mcp",
"headers": {
"Authorization": "Bearer ${API_KEY}"
}
}
}
}
対話セッションでは、Claude Code は .mcp.json のサーバーを使う前に承認を求めます。事前に承認するには、.claude/settings.local.json または ~/.claude/settings.json で enableAllProjectMcpServers を設定します(または enabledMcpjsonServers に名前を列挙)。同じキーをプロジェクトの .claude/settings.json にコミットしても、フォルダーを信頼するまでは無視されます。
ローカルとユーザーのサーバー(~/.claude.json)
ローカルスコープ(デフォルト)とユーザースコープのサーバーは、Claude Code が管理する ~/.claude.json に保存されます。ローカルのサーバーはそのプロジェクトのエントリ配下に、ユーザーのサーバーはトップレベルの mcpServers に入ります:
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer <your-github-pat>"
}
},
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
}
}
}
このファイルを手で編集するより、claude mcp add / claude mcp remove を使いましょう。settings.json に mcpServers ブロックを書かないでください。設定ファイルに入るのは承認やポリシー(enableAllProjectMcpServers や allowedMcpServers など)であり、自分のサーバー定義ではありません。唯一の例外は、組織だけがマネージド設定で使う managedMcpServers です。
MCP スコープと階層
MCP サーバーは 3 つのスコープと、組織が管理する設定から読み込まれます:
┌─────────────────────────────────────────────┐
│ Organization (managed) │
│ managed-mcp.json or managedMcpServers │
│ allowedMcpServers / deniedMcpServers │
├─────────────────────────────────────────────┤
│ Local scope (default) │
│ ~/.claude.json, this project only │
│ Use: personal or credentialed servers │
├─────────────────────────────────────────────┤
│ Project scope │
│ .mcp.json in the project root │
│ Use: team-shared servers (committed) │
├─────────────────────────────────────────────┤
│ User scope │
│ ~/.claude.json, all your projects │
│ Use: personal tools (github, docs) │
└─────────────────────────────────────────────┘
優先順位: Local > Project > User > プラグインが提供するサーバー > claude.ai コネクター。同じサーバーが複数の場所で定義されている場合、Claude Code は優先順位が最も高いソースのエントリ全体を使います(フィールドはマージされません)。組織が managedMcpServers で提供するサーバーは、これらすべてより優先されます。
MCP コンテキストコスト
ツール定義は読み込まれるたびにコンテキストトークンを消費します。以下は、このガイドが 2026 年 1 月に掲載した事前読み込み時の概算コストです:
| 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 サーバーのみを有効にしてください。接続中のサーバーは、どのセッションにもツール名とサーバーの説明を追加し、サーバーが多いほど起動時の処理も増えます。
Tool search(デフォルトで有効): Claude Code は MCP ツールの定義を遅延させ、
ToolSearchツールで必要なときに読み込みます。そのためセッション開始時に読み込まれるのは、ツール名とサーバーの説明だけです。ENABLE_TOOL_SEARCH=falseを設定した場合、"alwaysLoad": trueを指定したサーバー、tool search に対応していないモデルやデプロイでは、ツールは事前に読み込まれます。ENABLE_TOOL_SEARCH=auto(またはauto:N)は、ツール定義がコンテキストウィンドウの 10%(または N%)に達するまで事前に読み込みます。実際の消費量は/contextで確認できます。
MCP 管理コマンド
# List all MCP servers with a health status
claude mcp list
# Add a new server
claude mcp add --scope project <name> -- <command>
# Add a server from a JSON config block
claude mcp add-json <name> '<json>'
# Inspect one server (status, approval, last error)
claude mcp get <name>
# Remove a server
claude mcp remove --scope project <name>
# Reset approvals for project .mcp.json servers (troubleshooting)
claude mcp reset-project-choices
# Inside a session: status, OAuth sign-in, enable/disable, reconnect
/mcp
MCP の実践的な使用例
例 1: データベースクエリ
データベース MCP(DBHub など)が有効な場合:
ユーザー: "過去7日間にサインアップしたユーザーを表示して"
Claude: [db 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 コマンド
サーバーは Claude が直接呼び出す 9 つのツールを提供します:create_entities、create_relations、add_observations、delete_entities、delete_observations、delete_relations、read_graph、search_nodes、open_nodes。「〜を覚えておいて」と頼むだけで十分です。ショートカットが欲しければ、これらのツールをカスタムスキルにまとめましょう。以下は Claude Code のビルトインではありません:
# Custom skills you can create for memory management
/memory-save # Save important knowledge
/memory-search # Search saved knowledge
/memory-list # List all entities
/memory-audit # Check memory health
Memory 構造
read_graph はナレッジグラフを次の形で返します(ディスク上では、サーバーは .jsonl ファイルに 1 行 1 JSON オブジェクトで保存します):
{
"entities": [
{
"name": "Authentication System",
"entityType": "Architecture",
"observations": [
"Uses JWT with 24-hour expiration",
"Refresh tokens stored in httpOnly cookies",
"Located in src/lib/auth.ts"
]
},
{
"name": "Database Schema",
"entityType": "Infrastructure",
"observations": [
"PostgreSQL with Prisma ORM",
"Users table has email_verified column",
"Soft deletes using deleted_at"
]
}
],
"relations": [
{
"from": "Authentication System",
"to": "Database Schema",
"relationType": "uses"
}
]
}
Memory のベストプラクティス
## 保存すべきもの
✅ アーキテクチャの決定とその理由
✅ コードパターンと規約
✅ バグ修正とその根本原因
✅ 重要な設定の詳細
✅ チームの決定と制約
## 保存すべきでないもの
❌ 一時的なデバッグ情報
❌ 一度きりの実装詳細
❌ CLAUDE.md に既にある情報
❌ 頻繁に変更されるデータ
MCP のトラブルシューティング
サーバーが読み込まれない
# Check if server is registered and healthy
claude mcp list
# See one server's status and last error
claude mcp get <name>
# Verify the project config file
cat .mcp.json
# Reset approvals and re-add
claude mcp reset-project-choices
claude mcp add --scope project <name> -- <command>
権限の問題
.mcp.json のプロジェクトサーバーは、対話セッションで承認するまで「Pending approval」のままです。事前に承認するには、.claude/settings.local.json または ~/.claude/settings.json に次を追加します:
{
"enableAllProjectMcpServers": true
}
disabledMcpjsonServers に記載されたサーバーは、いずれの場合も拒否されたままです。
環境変数の問題
.mcp.json では ${VAR_NAME}(または ${VAR_NAME:-default})構文を使用してください:
{
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
}
または -e フラグで直接指定します:
claude mcp add --scope project mongodb \
-e MDB_MCP_CONNECTION_STRING="mongodb://..." \
-- npx -y mongodb-mcp-server@latest --readOnly
未設定でデフォルトのない ${VAR} は展開されずに残り、claude mcp list に警告が表示されます。リモートサーバーの url と headers では、ANTHROPIC_API_KEY などの認証情報の変数は常に空として読まれるため、トークンは独自の名前の変数にコピーしてください。
便利な環境変数
| 変数 | 用途 |
|---|---|
MCP_TIMEOUT | サーバー起動のタイムアウト(ミリ秒、デフォルト 30000) |
MCP_TOOL_TIMEOUT | ツール実行のタイムアウト(ミリ秒) |
MAX_MCP_OUTPUT_TOKENS | MCP ツール結果 1 件あたりの最大トークン数(デフォルト 25000、10,000 超で警告) |
ENABLE_TOOL_SEARCH | true(デフォルトの動作)、auto、auto:N、false |
MCP_CONNECTION_NONBLOCKING | 0 にすると最初のプロンプトの前にサーバー接続を待つ |
エンタープライズ MCP 管理
管理者はマネージド設定で MCP サーバーを制御します:
managed-mcp.jsonは固定のサーバーセットを排他的に配布します(macOS は/Library/Application Support/ClaudeCode/、Linux と WSL は/etc/claude-code/、Windows はC:\Program Files\ClaudeCode\)。- マネージド設定の
managedMcpServersは、各ユーザー自身のサーバーに加えて全ユーザーにサーバーを提供します。 allowedMcpServers/deniedMcpServersは読み込めるサーバーを制限します。各エントリにはserverName、serverCommand、serverUrlのいずれか 1 つだけを指定します。拒否リストは許可リストより優先されます。
// managed-settings.json
{
"allowManagedMcpServersOnly": true,
"allowedMcpServers": [
{ "serverName": "github" },
{ "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },
{ "serverUrl": "https://mcp.example.com/*" }
]
}
allowManagedMcpServersOnly を設定すると、ユーザー・プロジェクト・ローカルの許可リストではマネージドのリストを広げられないため、ユーザーは許可されていない MCP サーバーを読み込めなくなります。
カスタム MCP サーバーの作成
特殊なニーズに対応するためにカスタム MCP サーバーを作成できます。プロトコル仕様は modelcontextprotocol.io にあります。公式の「Build an MCP server」ガイドは TypeScript SDK v2(npm install @modelcontextprotocol/server zod、Node.js 20 以上)を使っています。
基本構造
import { McpServer } from '@modelcontextprotocol/server';
import { serveStdio } from '@modelcontextprotocol/server/stdio';
import { z } from 'zod';
// serveStdio calls this whenever it needs an instance,
// so return a fresh server every time
function createServer() {
const server = new McpServer({ name: 'my-custom-mcp', version: '1.0.0' });
server.registerTool(
'my_tool',
{
description: 'Does something useful',
inputSchema: z.object({
input: z.string().describe('What to process'),
}),
},
async ({ input }) => ({
content: [{ type: 'text', text: `Processed: ${input}` }],
}),
);
return server;
}
serveStdio(createServer, {
onerror: (error) => console.error('my-custom-mcp error:', error),
});
ビルドしたら登録します:claude mcp add my-custom-mcp -- node /path/to/build/index.js。
MCP と他のツールの比較
| 機能 | MCP | ビルトインツール | Hooks |
|---|---|---|---|
| 外部データアクセス | ✅ 主目的 | ❌ 限定的 | ❌ なし |
| 永続ストレージ | ✅ Memory MCP | ✅ ビルトインの auto memory | ❌ なし |
| カスタム統合 | ✅ 拡張可能 | ❌ 固定 | ✅ コマンド経由 |
| コンテキストコスト | 可変(tool search 有効時は低い) | 含まれる | 最小限 |
| セットアップ複雑度 | 中程度 | なし | 低い |
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 MCP Documentation、MCP Servers Repository