MCP サーバー選択ガイド:Claude Code ワークフローに最適なツールを見つける
Claude Code 向け MCP サーバーの選択と設定の実践ガイド。必須サーバーから専門ツールまで、最適な開発環境を構築します。
Model Context Protocol (MCP) エコシステムは急速に成長しており、様々な目的で利用できる 80 以上のサーバーがあります。適切な組み合わせを選ぶことで Claude Code の生産性を大幅に向上させることができますが、選びすぎるとコンテキストが膨張し、処理が遅くなります。
このガイドでは、特定のニーズに合わせて最適な MCP サーバーの組み合わせを選択する方法を説明します。
MCP コンテキストコストの理解
サーバーを選択する前に、このトレードオフを理解してください:
より多くの MCP サーバー = より多くの機能 + より高いコンテキストコスト
有効化された各 MCP サーバーは:
- Claude のコンテキストにツール定義を追加(サーバーごとに約 500〜2000 トークン)
- 起動時間が増加
- 他のサーバーと競合する可能性がある
経験則:3〜5 個の必須サーバーから始め、必要な場合にのみ追加する。
必須スターターキット
これらのサーバーは最小限のコンテキストオーバーヘッドで最大の価値を提供します:
1. Filesystem サーバー(必須)
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-filesystem", "."]
}
}
}
理由:コアファイル操作。Claude Code がコードファイルの読み書きに必要。
コンテキストコスト:約 800 トークン
2. Memory サーバー(強く推奨)
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-memory"]
}
}
}
理由:セッション間での永続的な知識。プロジェクトコンテキスト、決定、学習したパターンを保存。
コンテキストコスト:約 600 トークン
使用タイミング:
- 複数のセッションで複雑なプロジェクトに取り組む場合
- アーキテクチャの決定を覚えておく必要がある場合
- セッション間で一貫した動作が必要な場合
3. Git サーバー(チームにお勧め)
{
"mcpServers": {
"git": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-git"]
}
}
}
理由:基本的な CLI を超える強化された git 操作。
コンテキストコスト:約 700 トークン
使用タイミング:
- チームリポジトリで作業する場合
- インテリジェントなコミット提案が必要な場合
- ブランチ管理のサポートが必要な場合
サーバーカテゴリと選択
カテゴリ 1:データベースサーバー
| サーバー | 最適な用途 | コンテキストコスト |
|---|---|---|
mcp-postgres | PostgreSQL データベース | 約 900 トークン |
mcp-supabase | Supabase プロジェクト | 約 1100 トークン |
mcp-sqlite | ローカル SQLite DB | 約 600 トークン |
mcp-mongodb | MongoDB データベース | 約 800 トークン |
選択ガイド:
技術スタックに基づいて1つのデータベースサーバーを選択:
- Supabase プロジェクト? → mcp-supabase
- PostgreSQL バックエンド? → mcp-postgres
- ローカルプロトタイピング? → mcp-sqlite
- ドキュメントデータベース? → mcp-mongodb
設定例(Supabase):
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server"],
"env": {
"SUPABASE_URL": "${SUPABASE_URL}",
"SUPABASE_SERVICE_ROLE_KEY": "${SUPABASE_SERVICE_ROLE_KEY}"
}
}
}
}
カテゴリ 2:API & 統合サーバー
| サーバー | 最適な用途 | コンテキストコスト |
|---|---|---|
mcp-fetch | HTTP リクエスト | 約 500 トークン |
mcp-brave-search | ウェブ検索 | 約 600 トークン |
mcp-github | GitHub API | 約 1200 トークン |
mcp-slack | Slack 統合 | 約 700 トークン |
選択ガイド:
ワークフローのニーズに基づいて API サーバーを追加:
- ウェブリサーチが必要? → mcp-brave-search
- GitHub ヘビーユーザー? → mcp-github
- API リクエストを行う? → mcp-fetch
- チームコミュニケーション? → mcp-slack
設定例(GitHub):
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}
カテゴリ 3:開発ツール
| サーバー | 最適な用途 | コンテキストコスト |
|---|---|---|
mcp-puppeteer | ブラウザ自動化 | 約 1000 トークン |
mcp-chromium-devtools | Chrome デバッグ | 約 900 トークン |
mcp-docker | コンテナ管理 | 約 800 トークン |
mcp-kubernetes | K8s クラスター | 約 1100 トークン |
選択ガイド:
プロジェクトタイプに基づいて開発ツールを追加:
- E2E テストが必要? → mcp-puppeteer
- フロントエンドデバッグ? → mcp-chromium-devtools
- コンテナ化アプリ? → mcp-docker
- K8s デプロイメント? → mcp-kubernetes
カテゴリ 4:ドキュメント & ナレッジ
| サーバー | 最適な用途 | コンテキストコスト |
|---|---|---|
mcp-context7 | ライブラリドキュメント | 約 500 トークン |
mcp-notion | Notion ワークスペース | 約 700 トークン |
mcp-confluence | Atlassian ドキュメント | 約 800 トークン |
選択ガイド:
以下の場合にナレッジサーバーを追加:
- 不慣れなライブラリを使用 → mcp-context7
- チームが Notion を使用 → mcp-notion
- エンタープライズドキュメント → mcp-confluence
設定例(Context7):
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"]
}
}
}
推奨される組み合わせ
🎯 ソロ開発者(Web アプリ)
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-filesystem", "."]
},
"memory": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-memory"]
},
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server"],
"env": {
"SUPABASE_URL": "${SUPABASE_URL}",
"SUPABASE_SERVICE_ROLE_KEY": "${SUPABASE_SERVICE_ROLE_KEY}"
}
}
}
}
合計コンテキストコスト:約 2500 トークン
この組み合わせの理由:
- Filesystem でコード操作
- Memory でプロジェクト知識の永続化
- Supabase で DB + 認証 + ストレージをワンストップ
🎯 フルスタックチーム
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-filesystem", "."]
},
"memory": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-memory"]
},
"git": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-git"]
},
"github": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
}
}
}
合計コンテキストコスト:約 4200 トークン
この組み合わせの理由:
- コアファイル + memory 操作
- Git でバージョン管理
- GitHub で PR/Issue 管理
- PostgreSQL で本番データベース
🎯 データ分析
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-filesystem", "."]
},
"sqlite": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-sqlite", "./data.db"]
},
"fetch": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-fetch"]
},
"brave-search": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-brave-search"],
"env": {
"BRAVE_API_KEY": "${BRAVE_API_KEY}"
}
}
}
}
合計コンテキストコスト:約 2500 トークン
この組み合わせの理由:
- Filesystem でデータファイル
- SQLite でローカルデータ分析
- Fetch で API データ収集
- Brave Search でリサーチ
🎯 DevOps/インフラストラクチャ
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-filesystem", "."]
},
"git": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-git"]
},
"docker": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-docker"]
},
"kubernetes": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-kubernetes"],
"env": {
"KUBECONFIG": "${KUBECONFIG}"
}
}
}
}
合計コンテキストコスト:約 3400 トークン
この組み合わせの理由:
- コアファイル + git 操作
- Docker でコンテナ管理
- Kubernetes でクラスター操作
🎯 フロントエンド開発者
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-filesystem", "."]
},
"memory": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-memory"]
},
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"]
},
"puppeteer": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-puppeteer"]
}
}
}
合計コンテキストコスト:約 2900 トークン
この組み合わせの理由:
- コアファイル + memory
- Context7 で React/Vue/フレームワークドキュメント
- Puppeteer で E2E テスト
コンテキスト最適化戦略
戦略 1:遅延読み込み
すべてのサーバーを一度に有効にしない。プロジェクト固有の設定を使用:
project-a/.claude/settings.json → データベースサーバー
project-b/.claude/settings.json → インフラサーバー
戦略 2:エージェント専用 MCP
上級ユーザーは、特定の MCP サーバーを特定のエージェントに割り当てることができます:
# CLAUDE.md
## エージェント MCP 割り当て
### security-auditor
- filesystem (読み取り専用)
- データベースアクセスなし
### developer
- filesystem (フル)
- database
- git
### doc-writer
- filesystem (読み取り専用)
- context7
注意:これは概念的なパターンです。MCP Context Isolation の RFC については Issue #17668 を参照してください。
戦略 3:環境ベースの設定
# 開発環境
export MCP_PROFILE=dev
claude --mcp-config ./mcp-dev.json
# 本番環境
export MCP_PROFILE=prod
claude --mcp-config ./mcp-prod.json
よくある問題のトラブルシューティング
問題:コンテキスト使用量が高い
症状:「Context limit exceeded」または遅い応答
解決策:
- 有効なサーバーを確認:
claude --list-mcp - 未使用のサーバーを削除
- グローバル設定ではなくプロジェクト固有の設定を使用
問題:サーバー起動失敗
症状:「MCP server failed to start」
解決策:
# npx がパッケージを見つけられるか確認
npx -y @anthropic/mcp-filesystem --version
# npx キャッシュをクリア
rm -rf ~/.npm/_npx
# 環境変数を確認
env | grep -E "(SUPABASE|GITHUB|DATABASE)"
問題:権限拒否
症状:MCP サーバーから「Access denied」
解決策:
- ターゲットディレクトリのファイル権限を確認
- API トークンに正しいスコープがあることを確認
- 必要な権限について MCP サーバーのドキュメントを確認
問題:サーバーの競合
症状:予期しない動作、ツール名の重複
解決策:
- 同じデータベースに複数のデータベースサーバーを使用しない
- サーバードキュメントでツール名の競合を確認
- 可能な限りカテゴリごとに1つのサーバーを使用
上級:カスタム MCP サーバーの作成
既存のサーバーがニーズを満たさない場合:
基本的なカスタムサーバー構造
// my-mcp-server.js
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({
name: "my-custom-server",
version: "1.0.0"
}, {
capabilities: {
tools: {}
}
});
// ツールを定義
server.setRequestHandler("tools/list", async () => ({
tools: [{
name: "my_tool",
description: "有用な何かをする",
inputSchema: {
type: "object",
properties: {
input: { type: "string" }
}
}
}]
}));
// ツール呼び出しを処理
server.setRequestHandler("tools/call", async (request) => {
if (request.params.name === "my_tool") {
return { content: [{ type: "text", text: "結果" }] };
}
});
// サーバーを開始
const transport = new StdioServerTransport();
await server.connect(transport);
いつカスタムを構築するか
以下の場合にカスタム MCP サーバーを構築:
- ✅ 内部 API 統合が必要
- ✅ プロプライエタリデータベースアクセス
- ✅ 会社固有のツール
- ✅ 特化したドメインロジック
カスタムを構築しない場合:
- ❌ 既存のサーバーが 80%+ のニーズをカバー
- ❌ 小さな変更のみ必要(代わりにフォーク)
- ❌ 一回限りのユースケース(代わりに fetch MCP を使用)
クイックリファレンス:人気のサーバー
| サーバー | パッケージ | 主な機能 |
|---|---|---|
| Filesystem | @anthropic/mcp-filesystem | ファイル操作 |
| Memory | @anthropic/mcp-memory | 永続的な知識 |
| Git | @anthropic/mcp-git | バージョン管理 |
| GitHub | @anthropic/mcp-github | GitHub API |
| PostgreSQL | @anthropic/mcp-postgres | SQL データベース |
| Supabase | @supabase/mcp-server | フル Supabase スタック |
| Fetch | @anthropic/mcp-fetch | HTTP リクエスト |
| Puppeteer | @anthropic/mcp-puppeteer | ブラウザ自動化 |
| Context7 | @context7/mcp-server | ライブラリドキュメント |
| Brave Search | @anthropic/mcp-brave-search | ウェブ検索 |
スタートチェックリスト
今日(10分)
- ✅ 現在の MCP サーバーを監査:
cat .claude/settings.json - ✅ 未使用のサーバーを削除
- ✅ 必須サーバーが設定されていることを確認
今週
- ✅ プロジェクト固有の MCP 設定を設定
- ✅ ユースケースに合った推奨組み合わせをテスト
- ✅ CLAUDE.md に設定を文書化
今月
- ✅ コンテキスト使用パターンを監視
- ✅ 実際の使用状況に基づいて最適化
- ✅ 繰り返しのニーズにカスタム MCP を検討
主なポイント
- 小さく始める - 3〜5 個の必須サーバーから始める
- ワークフローに合わせる - 実際の作業に合ったサーバーを選択
- コンテキストを監視 - トークン使用量を追跡して最適化
- プロジェクト固有 - 異なるプロジェクトには異なる設定を使用
- 最新を維持 - MCP エコシステムは急速に進化
適切な MCP の組み合わせは、Claude Code 体験を良いものから卓越したものに変えることができます。時間をかけて適切に設定してください。