メインコンテンツへスキップ

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_TOKENSMCP ツール結果 1 件あたりの最大トークン数(デフォルト 25000、10,000 超で警告)
ENABLE_TOOL_SEARCHtrue(デフォルトの動作)、auto、auto:N、false
MCP_CONNECTION_NONBLOCKING0 にすると最初のプロンプトの前にサーバー接続を待つ

エンタープライズ 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 を始めよう

今日:

  1. プロジェクトに filesystem と memory MCP を追加
  2. プロジェクト分離のために絶対パスの MEMORY_FILE_PATH を使用
  3. 重要な決定を 1 つメモリに保存

今週:

  1. 該当する場合はデータベース MCP を追加
  2. Issue トラッキングのために GitHub MCP を設定
  3. memory のツールを試す(または独自の /memory-* スキルを作る)

今月:

  1. コンテキスト効率のために MCP 選択を最適化
  2. プロジェクト固有の MCP 設定を作成
  3. 特殊なニーズにはカスタム MCP を検討

MCP は Claude Code をスタンドアロンのアシスタントから統合開発プラットフォームへと変革します。サーバーを賢く選択し、Claude の完全な可能性を解放しましょう。

出典: Model Context Protocol、Claude Code MCP Documentation、MCP Servers Repository