Model Context Protocol(MCP)とは、Anthropicが2024年に公開したオープン標準プロトコルで、LLM(大規模言語モデル)アプリケーションと外部データソースやツールを標準化された方法で接続するための仕様である。
Model Context Protocol(MCP)は、LLMアプリケーションが外部のデータソース、ツール、サービスと統一的に連携するためのオープン標準プロトコルである。Anthropicが2024年11月に公開し、2025年3月にはStreamable HTTPトランスポートの追加や認証フレームワーク(OAuth 2.1)の統合など大幅改訂が行われた。USB-Cが様々なデバイスに共通接続を提供するように、MCPはLLMに「ユニバーサルコネクタ」を提供する。
従来のLLMアプリケーション開発では、外部データソースやツールとの連携にAPI固有のラッパーや独自プロトコルが必要だった。各サービスごとにアダプターを実装するN×M問題が深刻化し、開発コストとメンテナンス負荷が指数関数的に増加していた。
MCPはこの問題を「ホスト→クライアント→サーバー」の3層アーキテクチャで解決する。ホスト(Claude Desktop、Claude Code、Cursor、Windsurf等のLLMアプリケーション)がMCPクライアントを内蔵し、クライアントが各MCPサーバーと1:1のステートフル接続を確立する。サーバー側は統一されたプロトコルでツール・リソース・プロンプトを公開するため、一度MCPサーバーを構築すれば任意のMCPホストから利用できる。
2025年にはOpenAI Agents SDKがMCPサポートを追加し、Google ADKやMicrosoft Copilot Studioも対応を発表するなど、業界横断の標準プロトコルとしての地位を確立しつつある。2026年6月時点でGitHubのMCPサーバーレジストリには4,000以上のコミュニティ製サーバーが登録されている。
MCPプロトコルは以下の3つのプリミティブで構成される。
file:///path/to/doc.md や postgres://db/table 等のスキームで識別するこれらに加え、以下の機能が補助的に提供される。
| ホスト/クライアント | MCP対応バージョン | トランスポート | 特徴 |
|---|---|---|---|
| Claude Desktop | 2024年11月〜 | stdio, SSE, Streamable HTTP | Anthropic公式、最初のMCPホスト |
| Claude Code | 2025年2月〜 | stdio, SSE, Streamable HTTP | CLI/IDE統合、プロジェクト設定対応 |
| Cursor | 2025年3月〜 | stdio, SSE | AI IDEの先駆者、MCP設定UIあり |
| Windsurf (Codeium) | 2025年4月〜 | stdio | エディタ統合MCPサポート |
| OpenAI Agents SDK | 2025年3月〜 | stdio, SSE | MCPServerStdio/MCPServerSseクラス提供 |
| VS Code (GitHub Copilot) | 2025年4月〜 | stdio | mcp.json設定ファイル対応 |
| Zed Editor | 2025年3月〜 | stdio | Rust製エディタのネイティブMCP統合 |
MCPの通信レイヤーはJSON-RPC 2.0プロトコルに基づく。リクエスト・レスポンス・通知の3種類のメッセージを使い分ける。
// リクエスト(レスポンス必須)
{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "read_file", "arguments": {"path": "/src/main.ts"}}}
// レスポンス
{"jsonrpc": "2.0", "id": 1, "result": {"content": [{"type": "text", "text": "file contents..."}]}}
// 通知(レスポンス不要)
{"jsonrpc": "2.0", "method": "notifications/progress", "params": {"progressToken": "abc", "progress": 50, "total": 100}}
接続確立時にはCapabilityネゴシエーションが行われ、クライアントとサーバーがそれぞれサポートする機能セットを交換する。プロトコルバージョンの互換性確認もinitializeメソッドで自動的に行われる。
2025年のプロトコル改訂でOAuth 2.1ベースの認証フレームワークが正式統合された。リモートMCPサーバーへのアクセスにはAuthorizationヘッダーによるBearerトークン認証が標準となり、PKCEフローによるセキュアなトークン取得が推奨される。
ローカルstdioサーバーはOSのプロセス分離で保護され、リモートサーバーはTLS + OAuth 2.1で保護される。ツール呼び出し時にはユーザー承認(Human-in-the-loop)の仕組みが組み込まれており、危険な操作を自動実行しない安全策が標準装備されている。
Q1: MCPとFunction Calling / Tool Useの違いは何ですか? A: Function Callingは特定のLLMプロバイダ(OpenAI、Anthropic等)のAPI仕様であり、ツール定義のフォーマットはプロバイダごとに異なる。MCPはプロバイダ非依存のオープン標準プロトコルで、一度MCPサーバーを構築すれば任意のMCP対応ホストから利用できる。MCPはFunction Callingの「上位レイヤー」として機能し、ツールだけでなくリソースやプロンプトも統一的に扱える。
Q2: MCPサーバーの開発に必要な技術スタックは?
A: Anthropicが公式SDKをTypeScript(@modelcontextprotocol/sdk)、Python(mcpパッケージ)、Java、Kotlin、C#で提供している。最小構成ではTypeScript版で50行程度のコードでMCPサーバーを実装できる。JSON-RPCの通信やCapabilityネゴシエーションはSDKが自動処理するため、開発者はツール/リソースのビジネスロジックに集中できる。
Q3: MCPはローカル環境以外でも使えますか? A: 使える。当初はstdio(ローカルプロセス通信)が主流だったが、2025年のStreamable HTTPトランスポート追加により、クラウドホスティングされたリモートMCPサーバーへのHTTPベース接続が標準化された。Cloudflare Workers、AWS Lambda、Google Cloud Run等のサーバーレス環境でMCPサーバーを運用する事例が増えている。