複数のMCPサーバーを組み合わせる方法
複数MCPの組み合わせでできること
Section titled “複数MCPの組み合わせでできること”一つのMCPサーバーだけでなく、複数のMCPサーバーを組み合わせることで、ツール間を跨いだ複雑なワークフローが実現できます。
例: GitHub + Slack の組み合わせ 「このIssueの修正PRを作成して、完成したらSlackの #dev チャンネルに通知して」
例: Supabase + Notion の組み合わせ 「Notionの仕様書を読んで、Supabaseのスキーマを更新するマイグレーションを作成して」
例: Linear + GitHub の組み合わせ 「Linearで自分にアサインされているタスクを確認して、それぞれのブランチとPRを作成して」
※マイグレーション: データベースのスキーマ(テーブル構造)を安全に変更するための手順書。※ブランチ: Gitでコードの変更履歴を分岐させる仕組み。本番コードに影響を与えずに新機能を開発できる。※スキーマ: データベースのテーブル構造や型定義のこと。※MCP: Model Context Protocol の略。Claude Codeと外部ツール(GitHub・Supabaseなど)を接続するための標準プロトコル。
settings.json の実際のコード
Section titled “settings.json の実際のコード”複数のMCPサーバーを設定する例:
{ "mcpServers": { "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}" } }, "supabase": { "command": "npx", "args": [ "-y", "@supabase/mcp-server-supabase@latest", "--project-ref", "your-project-ref" ], "env": { "SUPABASE_ACCESS_TOKEN": "${SUPABASE_ACCESS_TOKEN}" } }, "slack": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-slack"], "env": { "SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}", "SLACK_TEAM_ID": "T0XXXXXXX" } }, "notion": { "command": "npx", "args": ["-y", "@notionhq/client-mcp"], "env": { "NOTION_API_KEY": "${NOTION_API_KEY}" } } }}※API: Application Programming Interface の略。外部サービスとプログラム間でデータをやりとりするための接続口。
複数MCPサーバーが登録されると、Claude Codeは全てのツールを同時に使えるようになります。
- 各MCPサーバーは独立したプロセスとして起動
- Claudeはどのツールを使うかを文脈から判断
- 一つのタスクで複数のMCPサーバーのツールを組み合わせて使用可能
実際の組み合わせパターン
Section titled “実際の組み合わせパターン”パターン1: GitHub + Slack で開発通知を自動化
Section titled “パターン1: GitHub + Slack で開発通知を自動化”「今日マージされたPR一覧を確認して、その内容を要約してSlackの #general チャンネルに投稿してください。投稿フォーマット:- 今日のリリース内容:- [PR番号] [PR名] by [担当者]- 影響範囲: [簡単な説明]」パターン2: Notion + GitHub で仕様実装ループ
Section titled “パターン2: Notion + GitHub で仕様実装ループ”「Notionのバックログページ(URL: xxx)から、'優先度: 高' かつ 'ステータス: 仕様完了' のタスクを一覧取得してください。
最優先のタスクについて:1. 仕様書を読む2. Gitブランチを作成(feature/[タスク名])3. 実装する4. PR を作成5. NotionのステータスをPRレビュー待ちに更新」パターン3: Supabase + GitHub でスキーマ管理
Section titled “パターン3: Supabase + GitHub でスキーマ管理”「Supabaseの現在のスキーマを確認して、Notionの設計ドキュメント(URL: xxx)と比較してください。
差異があれば:1. 必要なマイグレーションSQLを生成2. migrations/ ディレクトリに保存3. GitHubにPRとして上げる」※マージ: Gitで別ブランチの変更を現在のブランチに統合すること。
競合・混乱を避けるコツ
Section titled “競合・混乱を避けるコツ”ツール名が重複しないように確認する
Section titled “ツール名が重複しないように確認する”複数のMCPサーバーに同じ名前のツールがあると、Claudeが混乱することがあります。
# 起動後に使えるツール一覧を確認claude/mcp明示的にMCPを指定する
Section titled “明示的にMCPを指定する”# ❌ 曖昧な依頼(どのMCPを使うか不明)「データベースを確認して」
# ✅ 明示的な依頼「Supabase MCPを使って、usersテーブルの構造を確認して」「GitHubのmain-service リポジトリのオープンIssueを確認して」重要なMCPとプロジェクト固有のMCPを分ける
Section titled “重要なMCPとプロジェクト固有のMCPを分ける”// ~/.claude/settings.json(グローバル・常に使うもの){ "mcpServers": { "github": { ... }, "slack": { ... } }}
// .claude/settings.json(プロジェクト固有){ "mcpServers": { "supabase": { ... }, "notion": { ... } }}※リポジトリ: Gitでコードと変更履歴を管理するフォルダ。GitHubなどのサービスで共有できる。
トラブルシューティング
Section titled “トラブルシューティング”MCPサーバーの起動確認
Section titled “MCPサーバーの起動確認”# 接続状態の確認claude/mcp
# 特定のサーバーのログを確認# MCPサーバーはstderrにログを出力することが多いMCPサーバーが応答しない場合
Section titled “MCPサーバーが応答しない場合”# npxのキャッシュをクリアnpm cache clean --force
# 最新版を強制的に使う(-yオプション付き)# settings.jsonの args: ["-y", "package@latest"]環境変数が読み込まれない場合
Section titled “環境変数が読み込まれない場合”# 環境変数が設定されているか確認echo $GITHUB_TOKENecho $SUPABASE_ACCESS_TOKEN
# ~/.bashrc や ~/.zshrc に記述されているか確認grep "GITHUB_TOKEN" ~/.bashrc ~/.zshrc※キャッシュ: 一度取得したデータを一時的に保存しておき、同じリクエストへの応答を速くする仕組み。※環境変数: APIキーやデータベース接続情報など、コードに直接書きたくない値をOSやサーバーに設定する仕組み。※npm: Node.jsのパッケージ管理ツール。`npm install` でライブラリをインストールする。
パフォーマンスへの影響
Section titled “パフォーマンスへの影響”複数のMCPサーバーを同時に起動すると、メモリ使用量が増加します。
- 1サーバーあたり約50〜200MBのメモリを使用(サーバーによる)
- 起動時間が増加する(初回の
npx実行時) - 使わないサーバーはコメントアウトするとよい