MCP(Model Context Protocol)— AIツール連携の標準規格
はじめに:AIの「手と足」を繋ぐ規格
2024年11月、Anthropicがある規格を公開した。MCP(Model Context Protocol)だ。
これはAIモデルと外部ツール(データベース、API、ファイルシステム等)を繋ぐための「共通言語」である。USBが様々なデバイスを繋ぐ標準だったように、MCPはAIとツールを繋ぐ標準になりつつある。
2026年現在、OpenAI、Google、Microsoft等もMCP対応を表明し、事実上の業界標準となった。
MCPが解決する問題
従来の問題:M×N地獄
AIアプリがM個、ツールがN個ある場合:
従来:
AIアプリごとに、ツールごとに、個別の連携を実装
→ M × N 個の統合コードが必要
例:
- ChatGPT用のGitHub連携
- Claude用のGitHub連携
- Gemini用のGitHub連携
...(ツールの数だけ実装)MCPの解決:M+N
MCPでは:
- ツール側: MCPサーバーを1つ実装
- AIアプリ側: MCPクライアントを1つ実装
→ M + N 個の実装で済む
例:
- GitHub MCPサーバー(1つ)
- ChatGPT、Claude、Geminiがすべて接続MCPのアーキテクチャ
3つの構成要素
[AIアプリ(MCPホスト/クライアント)]
例: Claude Desktop、Cursor、ChatGPT
↓ 接続
[MCPサーバー]
例: GitHub MCPサーバー
↓ アクセス
[外部リソース]
例: GitHub APIMCPサーバーが提供する3つの能力
1. ツール(Tools)
AIが「実行」できる機能
例: ファイル作成、Issue作成、メール送信
2. リソース(Resources)
AIが「読み取る」できるデータ
例: ファイル内容、DBレコード、APIレスポンス
3. プロンプト(Prompts)
あらかじめ定義されたプロンプトテンプレート
例: 「コードレビュー用プロンプト」通信プロトコル
トランスポート:
- stdio: ローカル実行(プロセス間通信)
- HTTP + SSE: リモート実行(サーバー間通信)
メッセージ形式: JSON-RPC 2.0
例(ツール実行):
クライアント → サーバー:
{
"method": "tools/call",
"params": {
"name": "create_issue",
"arguments": {
"title": "バグ報告",
"body": "詳細..."
}
}
}
サーバー → クライアント:
{
"result": {
"content": "Issue #42 を作成しました"
}
}実際のMCPサーバー例
ファイルシステム
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/projects"
]
}
}
}AIができること:
ファイルの読み書き
ディレクトリ一覧
ファイル検索
ファイル移動・名前変更
GitHub
機能:
- Issue・PRの作成・検索・更新
- リポジトリ情報の取得
- コードレビューのコメント
- ブランチ操作データベース(PostgreSQL等)
機能:
- クエリ実行(SELECT等)
- スキーマ確認
- テーブル構造の分析
→ AIに「このDBのユーザー数を調べて」と頼めるWeb検索(Brave等)
機能:
- キーワード検索
- 特定URLの内容取得
→ AIがリアルタイム情報を取得できるSlack
機能:
- メッセージ送信
- チャンネル履歴の読み取り
- スレッド返信
→ 「このチャンネルの今朝の議論をまとめて」と頼める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: "weather-server",
version: "1.0.0",
});
// ツール定義
server.tool(
"get_weather",
"指定都市の天気を取得",
{
city: z.string().describe("都市名"),
},
async ({ city }) => {
const weather = await fetchWeather(city);
return {
content: [
{ type: "text", text: `${city}: ${weather.temp}°C, ${weather.cond}` }
],
};
}
);
// 起動
const transport = new StdioServerTransport();
await server.connect(transport);設計のポイント
1. ツール名は明確に
❌ "do_something"
✅ "create_github_issue"
2. 説明文はAIが理解できるように
AIはこの説明を読んでツールを選ぶ
「何をするツールか」「いつ使うべきか」を書く
3. 引数は構造化(JSON Schema)
型、必須/任意、説明を定義
4. エラーは丁寧に
AIがエラーを読んで回復行动を取れるように
5. 権限は最小限に
必要な操作のみ提供(セキュリティ)MCPのセキュリティ
リスク理解
MCPはAIに「実行権限」を与える:
リスク例:
- ファイル削除ツール → 重要ファイルの誤削除
- DB書込ツール → データ破壊
- メール送信ツール → 誤送信
- シェル実行ツール → 任意コード実行セキュリティベストプラクティス
1. 読み取り専用から始める
最初はRead系ツールのみ → 安全確認後、Write系追加
2. スコープを限定
❌ ファイルシステム全体
✅ 特定プロジェクトディレクトリのみ
3. ユーザー確認を挟む
破壊的操作はAIが実行前にユーザー承認を要求
4. 監査ログ
どのツールがいつ呼ばれたかを記録
5. プロンプトインジェクション対策
ツールが取得したデータに悪意ある指示が
埋め込まれている可能性を考慮MCPエコシステムの現状(2026年)
主要クライアント
- Claude Desktop / Claude Code
- Cursor
- ChatGPT(MCP対応)
- Gemini
- Zed エディタ
- 各種AIエージェントフレームワークサーバーレジストリ
- MCP公式レジストリ
- Smithery
- Glama
- PulseMCP
→ 数千のMCPサーバーが公開されている企業での採用
- 銀行: 社内DB照会をMCPサーバー化
- SaaS企業: 自社製品のMCPサーバーを公開
- 開発チーム: CI/CD、モニタリングをMCP経由でAI操作まとめ:MCPはAIの「USB規格」
MCPはAIとツールを繋ぐ標準規格だ。
M×N問題の解決: 統合コストをM×NからM+Nへ
3つの能力: ツール(実行)、リソース(読取)、プロンプト(定型)
JSON-RPC: シンプルなプロトコル
自作も簡単: SDKで数十行から作成可能
セキュリティ重要: 権限は最小限、監査ログ必須
2026年、MCPはAIエージェント開発の前提知識となった。AIアプリ開発者はMCPサーバーを「作る」か「使う」か、どちらにせよMCPの理解が必須だ。
道具が繋がれば、AIのできることは飛躍的に広がる。MCPはその「繋ぎ」の標準なのである。
参考情報:
MCP公式: modelcontextprotocol.io
MCP GitHub: github.com/modelcontextprotocol
Smithery(レジストリ): smithery.ai
Anthropic MCP発表: anthropic.com/news
