Skip to content

複数の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など)を接続するための標準プロトコル。

複数のMCPサーバーを設定する例:

~/.claude/settings.json
{
"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サーバーのツールを組み合わせて使用可能

パターン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 “ツール名が重複しないように確認する”

複数のMCPサーバーに同じ名前のツールがあると、Claudeが混乱することがあります。

Terminal window
# 起動後に使えるツール一覧を確認
claude
/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などのサービスで共有できる。
Terminal window
# 接続状態の確認
claude
/mcp
# 特定のサーバーのログを確認
# MCPサーバーはstderrにログを出力することが多い
Terminal window
# npxのキャッシュをクリア
npm cache clean --force
# 最新版を強制的に使う(-yオプション付き)
# settings.jsonの args: ["-y", "package@latest"]

環境変数が読み込まれない場合

Section titled “環境変数が読み込まれない場合”
Terminal window
# 環境変数が設定されているか確認
echo $GITHUB_TOKEN
echo $SUPABASE_ACCESS_TOKEN
# ~/.bashrc や ~/.zshrc に記述されているか確認
grep "GITHUB_TOKEN" ~/.bashrc ~/.zshrc
キャッシュ: 一度取得したデータを一時的に保存しておき、同じリクエストへの応答を速くする仕組み。環境変数: APIキーやデータベース接続情報など、コードに直接書きたくない値をOSやサーバーに設定する仕組み。npm: Node.jsのパッケージ管理ツール。`npm install` でライブラリをインストールする。

複数のMCPサーバーを同時に起動すると、メモリ使用量が増加します。

  • 1サーバーあたり約50〜200MBのメモリを使用(サーバーによる)
  • 起動時間が増加する(初回の npx 実行時)
  • 使わないサーバーはコメントアウトするとよい