📚 この記事は「Claude Code 完全攻略シリーズ」の Episode 15 です。
Claude Codeは単体でも強力なAIコーディングツールですが、MCP(Model Context Protocol) と連携させることで、データベース・外部API・クラウドサービスなどと直接やり取りできる「万能開発アシスタント」に進化します。
「Claude Codeからデータベースのスキーマを確認して、それに合ったAPIコードを生成したい」「プロジェクト管理ツールのチケットを読み取って、そのまま実装に入りたい」——こうしたワークフローをMCPが実現します。
本記事では、MCPの基本概念からClaude Codeでの設定方法、SES現場で即使える実践パターンまでを体系的に解説します。
MCPとは?Claude Codeの能力を拡張するプロトコル

Model Context Protocolの基本概念
MCP(Model Context Protocol)は、Anthropic社が策定したAIモデルと外部データソース・ツールを接続するためのオープンプロトコルです。USBポートが様々なデバイスを統一的に接続するように、MCPはAIと外部システムの橋渡し役を果たします。
MCPの構成要素は以下の3つです。
| 構成要素 | 役割 | 具体例 |
|---|---|---|
| MCPホスト | MCPを利用するアプリケーション | Claude Code、Claude Desktop |
| MCPクライアント | サーバーとの接続を管理 | Claude Code内蔵のMCPクライアント |
| MCPサーバー | 外部リソースへのアクセスを提供 | PostgreSQL MCP、GitHub MCP |
なぜClaude Code × MCPが強力なのか
Claude Codeはファイル操作やコマンド実行の能力を持っていますが、MCPを追加することで直接アクセスできなかったリソースにも手が届くようになります。
MCP なしの場合:
ユーザー: 「本番DBのusersテーブルの構造を確認して」
Claude Code: 「直接DBに接続する手段がありません。接続情報を教えてください」
→ ユーザーが手動でクエリを実行し、結果を貼り付ける必要がある
MCP ありの場合:
ユーザー: 「本番DBのusersテーブルの構造を確認して」
Claude Code: (MCPサーバー経由でDBに接続)
→ 即座にスキーマ情報を取得し、分析・コード生成まで一気通貫で実行
この差は、SES現場のように複数のシステムを横断して作業するケースで特に大きくなります。
Claude CodeでMCPサーバーを設定する方法
設定ファイルの種類と配置場所
Claude CodeのMCP設定は、.mcp.json ファイルに記述します。配置場所によってスコープが異なります。
| 配置場所 | スコープ | 用途 |
|---|---|---|
プロジェクトルート/.mcp.json | プロジェクト単位 | チーム共有の設定 |
~/.claude/.mcp.json | ユーザー単位 | 個人の共通設定 |
SES現場では、プロジェクト固有の設定はプロジェクトルートに、個人的に使うツール(メモ、タスク管理など)はホームディレクトリに配置するのがベストプラクティスです。
.mcp.json の基本構文
{
"mcpServers": {
"サーバー名": {
"command": "実行コマンド",
"args": ["引数1", "引数2"],
"env": {
"環境変数名": "値"
}
}
}
}
CLIから簡単に追加する方法
設定ファイルを手動で編集する代わりに、claude mcp add コマンドで追加できます。
# ローカル(プロジェクト)スコープで追加
claude mcp add my-server -s project -- command arg1 arg2
# ユーザースコープで追加
claude mcp add my-server -s user -- command arg1 arg2
# 環境変数付きで追加
claude mcp add my-server -e API_KEY=xxx -- command arg1
# 登録済みサーバーの一覧確認
claude mcp list
# サーバーの削除
claude mcp remove my-server
実践:よく使うMCPサーバーの導入と活用
1. PostgreSQL MCPサーバー — DB操作を自動化
SES現場で最も効果的なMCP連携の一つが、データベースへの直接アクセスです。
# PostgreSQL MCPサーバーを追加
claude mcp add postgres -s project \
-e DATABASE_URL=postgresql://user:pass@localhost:5432/mydb \
-- npx -y @modelcontextprotocol/server-postgres
活用例:
プロンプト: 「usersテーブルとordersテーブルのリレーションを確認して、
注文履歴を取得するAPIエンドポイントを実装して」
Claude Codeの動作:
1. MCPでDBスキーマを取得
2. テーブル間のリレーションを分析
3. 適切なJOINクエリを含むAPIコードを生成
4. 型定義も自動生成
2. GitHub MCPサーバー — Issue駆動開発を加速
claude mcp add github -s user \
-e GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxxx \
-- npx -y @modelcontextprotocol/server-github
活用例:
プロンプト: 「Issue #42の内容を確認して、そのまま実装してPRを作成して」
Claude Codeの動作:
1. MCPでIssueの詳細を取得
2. 要件に基づいてコードを実装
3. ブランチを作成してコミット
4. PRを作成(Issueへの参照を含む)
3. ファイルシステムMCPサーバー — 安全なファイルアクセス
特定のディレクトリにのみアクセスを許可し、セキュリティリスクを最小化できます。
claude mcp add filesystem -s project \
-- npx -y @modelcontextprotocol/server-filesystem \
/path/to/allowed/directory
4. Slack MCPサーバー — 開発チャットとの連携
claude mcp add slack -s user \
-e SLACK_BOT_TOKEN=xoxb-xxxx \
-- npx -y @anthropic/mcp-server-slack
開発チャンネルの会話を読み取り、議論の内容を踏まえたコード実装が可能になります。
SES現場での実践パターン3選
パターン1:レガシーシステムの調査と移行
SES案件で頻出する「既存システムの調査」を大幅に効率化できます。
{
"mcpServers": {
"legacy-db": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://readonly:pass@legacy-server:5432/old_system"
}
}
}
}
プロンプト: 「legacy-dbのテーブル一覧を取得して、
各テーブルの行数と最終更新日を調べて、
移行優先度の高い順にリストアップして」
このように、調査→分析→計画策定までをClaude Codeが一気通貫で行えます。従来は数日かかっていたDB調査が、数分で完了する可能性があります。
パターン2:マイクロサービス間のAPI統合テスト
複数のMCPサーバーを組み合わせて、サービス間の連携をテストできます。
{
"mcpServers": {
"service-a-db": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": { "DATABASE_URL": "postgresql://..." }
},
"service-b-api": {
"command": "npx",
"args": ["-y", "mcp-server-fetch"]
}
}
}
プロンプト: 「service-a-dbのusersテーブルのデータを確認し、
service-b-apiの/api/notificationsエンドポイントに
テスト用のリクエストを送信する統合テストを書いて」
パターン3:ドキュメント自動生成パイプライン
MCPでDBスキーマやAPI仕様を取得し、ドキュメント自動生成と組み合わせます。
プロンプト: 「DBのスキーマ情報を取得して、
全テーブルのER図をMermaid形式で生成し、
各カラムの説明付きのAPI仕様書をMarkdownで作成して」
MCPサーバーの自作方法
既存のMCPサーバーでは対応できないケースでは、独自のMCPサーバーを作成できます。
TypeScriptでの最小実装
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "my-custom-server",
version: "1.0.0"
});
// ツール(AIが呼び出せる機能)を定義
server.tool(
"get_project_status",
{ projectId: z.string() },
async ({ projectId }) => {
// 社内システムからプロジェクト情報を取得
const status = await fetchProjectStatus(projectId);
return {
content: [{ type: "text", text: JSON.stringify(status) }]
};
}
);
// リソース(AIが参照できるデータ)を定義
server.resource(
"config://app",
"アプリケーション設定",
async () => ({
contents: [{ uri: "config://app", text: "..." }]
})
);
const transport = new StdioServerTransport();
await server.connect(transport);
SES現場では、社内の勤怠管理システムやプロジェクト管理ツールに対するMCPサーバーを自作することで、Claude Codeから直接操作できるようになります。
自作サーバーの登録
claude mcp add my-custom -s project -- node ./mcp-servers/my-custom/index.js
MCPのセキュリティベストプラクティス
MCPは外部システムへのアクセスを提供するため、セキュリティ対策が重要です。
最小権限の原則
{
"mcpServers": {
"production-db": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://readonly_user:pass@prod:5432/app"
}
}
}
}
必ず読み取り専用ユーザーで接続しましょう。本番DBに書き込み権限を与えると、AIの誤操作で重大な事故につながります。
環境変数による認証情報の管理
.mcp.json にシークレットを直接書かず、環境変数を活用します。
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}
.mcp.json をリポジトリに含める場合は、認証情報は環境変数で参照するのが鉄則です。.env ファイルは .gitignore に追加してください。
MCPサーバーの信頼性確認
サードパーティ製のMCPサーバーを導入する際は、以下を確認しましょう。
- ソースコードが公開されているか
- メンテナンスが継続されているか(最終更新日)
- npmダウンロード数や★数が一定以上あるか
- 権限のスコープが最小限か
Claude Code Hooksと組み合わせて、MCPサーバーの実行をログに記録するのも有効です。
トラブルシューティング
MCPサーバーが認識されない
# サーバー一覧を確認
claude mcp list
# サーバーの詳細を確認
claude mcp get サーバー名
サーバーが表示されない場合は、.mcp.json の配置場所とJSON構文を確認してください。
接続エラーが発生する
# MCPサーバーを単体でテスト
npx -y @modelcontextprotocol/server-postgres
# 環境変数が正しく設定されているか確認
echo $DATABASE_URL
MCPサーバーの多くは stdio トランスポートを使用するため、標準入出力に余計なログを出力するプログラムとは併用できません。デバッグ出力は stderr に出すようにしましょう。
パフォーマンスの最適化
MCPサーバーへのリクエストが遅い場合は、以下を検討してください。
- コネクションプーリングの有効化
- 不要なMCPサーバーの無効化(使わないサーバーは削除)
- ローカルキャッシュの導入
まとめ:MCPでClaude Codeを「万能開発環境」に
MCP連携により、Claude Codeは単なるコード生成ツールから、開発ワークフロー全体をカバーする統合環境に進化します。
| 活用レベル | 内容 | SES現場での効果 |
|---|---|---|
| Level 1 | DB接続で調査効率化 | 既存システム理解の時間を大幅短縮 |
| Level 2 | 複数MCPの組み合わせ | サービス間連携の開発・テストを自動化 |
| Level 3 | 自作MCPサーバー | 社内固有のシステムとの連携 |
まずはClaude Codeの基本操作を押さえた上で、PostgreSQLやGitHubなど身近なMCPサーバーから試してみてください。MCPの導入は段階的に進めるのが成功のコツです。
参考リンク: