MCP(Model Context Protocol)(エムシーピー)
Anthropicが2024年11月に公開したLLMとデータソース・ツール間の標準接続プロトコル。サーバー/クライアントアーキテクチャでツール統合を標準化し、N×Mの個別実装問題を解決する。
MCPとは
MCP(Model Context Protocol)は、Anthropicが2024年11月にオープンソースとして公開した、LLMアプリケーションと外部データソース・ツールを接続するための標準プロトコルである。従来はLLMアプリケーションごとにツール連携を個別実装する必要があったが、MCPにより「MCPサーバー(ツール提供側)」と「MCPクライアント(LLMアプリ側)」の標準インターフェースを定義し、N個のツール × M個のLLMアプリのO(N×M)問題をO(N+M)に削減する。
MCPのアーキテクチャ
MCPクライアント(Claude Code, Cursor等)
↕ JSON-RPC 2.0
MCPサーバー(GitHub, Slack, DB等)
↕
外部リソース(API, ファイル, DB)
| コンポーネント | 役割 | 例 |
|---|---|---|
| MCPホスト | LLMアプリケーション本体 | Claude Desktop, VS Code |
| MCPクライアント | サーバーとの通信層 | Claude Code内蔵クライアント |
| MCPサーバー | ツール・リソースを公開 | GitHub MCP Server, Slack MCP Server |
MCPの3つのプリミティブ
MCPは以下の3つの通信プリミティブを定義している:
Tools(ツール)
LLMが能動的に呼び出す関数。Function Callingと同等の概念だが、MCPの標準スキーマで定義される。
Resources(リソース)
LLMが参照できるデータソース。ファイル内容、データベースレコード、API応答等をURIベースで公開する。
Prompts(プロンプトテンプレート)
MCPサーバーが提供する再利用可能なプロンプトテンプレート。特定のタスクに最適化されたプロンプトをサーバー側で管理・配布する。
| プリミティブ | 方向 | 用途 |
|---|---|---|
| Tools | クライアント→サーバー | アクション実行・データ取得 |
| Resources | サーバー→クライアント | コンテキスト情報の提供 |
| Prompts | サーバー→クライアント | タスク特化プロンプトの配布 |
MCPサーバーのエコシステム
2026年6月時点で公式・コミュニティ合わせて数百のMCPサーバーが公開されている。
| カテゴリ | 代表的なMCPサーバー |
|---|---|
| 開発ツール | GitHub, GitLab, Linear, Sentry |
| コミュニケーション | Slack, Discord, Gmail |
| データベース | PostgreSQL, Supabase, Neon |
| ファイル・ストレージ | Google Drive, Notion, Confluence |
| ブラウザ | Playwright, Puppeteer |
| 検索 | Exa, Brave Search |
MCPとOpenAI Function Callingの比較
| 観点 | MCP | OpenAI Function Calling |
|---|---|---|
| 標準化 | オープンプロトコル(JSON-RPC) | OpenAI独自API仕様 |
| ツール提供 | 独立したサーバープロセス | APIリクエストにインライン定義 |
| 状態管理 | サーバー側で永続化可能 | ステートレス |
| 認証 | サーバーごとに独立管理 | APIキーに統合 |
| エコシステム | マルチベンダー対応 | OpenAI/Azure限定 |
| 採用LLMアプリ | Claude Code, Cursor, Zed | ChatGPT, Copilot |
MCPサーバーの実装
MCPサーバーはTypeScript SDK(公式推奨)またはPython SDKで実装できる。最小構成は以下の通り:
1. MCPサーバーインスタンスの作成
2. ツール定義の登録(名前・説明・入力スキーマ)
3. ツールハンドラーの実装(引数を受けて結果を返す)
4. トランスポートの起動(stdio / SSE / Streamable HTTP)
トランスポートは3種類あり、ローカル実行にはstdio、リモートサーバーにはStreamable HTTP(2025年3月追加の推奨方式)を使用する。
FAQ
Q: MCPはFunction Callingを置き換えるのか?
A: 直接的な置き換えではない。Function CallingはLLM APIの呼び出しインターフェースであり、MCPはツール側の標準化プロトコルである。MCPサーバーが提供するツールは、最終的にはLLM APIのFunction Callingを通じて呼び出される。両者は補完関係にある。
Q: MCPサーバーのセキュリティリスクは?
A: MCPサーバーは任意のコードを実行できるため、信頼できないサーバーの接続は危険。公式リポジトリやverified publisherのサーバーを優先し、接続前にソースコードを確認すること。また、MCPサーバーが持つ認証情報(APIキー等)の管理も重要。
Q: 自社ツールをMCPサーバー化するメリットは?
A: 一度MCPサーバーとして実装すれば、Claude Code・Cursor・Zed・Windsurf等のMCP対応エディタ全てで利用可能になる。個別のプラグイン開発が不要になり、保守コストが大幅に削減される。