MCP入門 ─ エージェントとツールをつなぐ標準規格
結論から言うと、MCPは「AIエージェントが外部ツールやデータと繋がるための共通規格(プロトコル)」です。Anthropicが2024年11月にオープンソースとして公開し、Claude・ChatGPT・VS Code・Cursorなど多数のアプリが採用しています。MCPがあれば、ツールごとに独自の接続コードを書く必要がなくなります。
なぜMCPが必要なのか?
AIエージェントは、ツールを呼び出すことで外界に働きかけます(前のレッスン:ツール使用参照)。しかし従来は、GitHub・Slack・データベースなど接続先が増えるたびに専用の統合コードを書き直す必要がありました。
Anthropicの公式発表では「すべての新しいデータソースが独自の実装を必要とするため、真に連携したシステムのスケールが難しい」と問題提起されています。
MCPはこの課題を解決する統一インターフェースです。よく「AIアプリのUSB-C」と例えられます。USB-Cが機器を問わず同じ口で繋がるように、MCPに対応したサーバーは、どのMCP対応AIアプリとも自動的に繋がります。
MCPの3者構成
MCPはクライアント・サーバーモデルで動きます。登場人物は3つです。
- ホスト(Host): AIアプリケーション本体(例:Claude Code、VS Code、Claude Desktop)。エージェントが動く場所。
- クライアント(Client): ホストが各サーバーとの接続を管理するために作るコンポーネント。接続先ごとに1つ作られる。
- サーバー(Server): 外部ツールやデータを提供するプログラム。ローカル(STDIO経由)でも、リモート(HTTP経由)でも動く。
例えばVS CodeがGitHub用のMCPサーバーとSentry用のMCPサーバーに繋ぐとき、VS Codeはそれぞれに対応するクライアントを内部で作り、専用の接続を維持します。
3つのプリミティブ(サーバーが提供するもの)
MCPサーバーは3種類のプリミティブ(基本要素)を提供できます。
| プリミティブ | 役割 | 例 |
|---|---|---|
| ツール(Tools) | AIが呼び出して実行できる関数 | ファイル読み書き、API呼び出し、DB検索 |
| リソース(Resources) | AIに渡すデータ・文脈情報 | ファイル内容、DBスキーマ、設定値 |
| プロンプト(Prompts) | 再利用できるテンプレート | システムプロンプト、few-shot例 |
エージェントがGitHubのMCPサーバーに繋いだとき、ツールとして「PR作成」「コード検索」などを、リソースとして「リポジトリのREADME」などを利用できる、というイメージです。
通信の仕組み(概要)
MCPはJSON-RPC 2.0という軽量なメッセージ形式を使います。接続が始まると、まずクライアントとサーバーが「どの機能に対応しているか」を確認し合います(ケイパビリティネゴシエーション)。その後、クライアントはtools/listでツール一覧を取得し、tools/callでツールを実行します。
// ツール実行の例(JSON-RPC 2.0)
{ "method": "tools/call",
"params": { "name": "search_code", "arguments": { "query": "function login" } } }
サーバーはツール一覧が変わったときに通知を送ることもできるため、エージェントは常に最新の機能を把握できます。
広がるエコシステム
2026年時点で、GitHub・Slack・Google Driveなどの公式MCPサーバーが公開されており、ブロック社やApollo社などがすでに本番導入しています。MCP対応のAIアプリから、これらのサーバーに繋ぐだけで多彩なツールが使えるようになっています。
まとめ
- MCPはAnthropicが公開したオープン規格で、AIエージェントと外部ツール・データをつなぐ統一インターフェース
- ホスト・クライアント・サーバーの3者構成で動き、JSON-RPC 2.0で通信する
- サーバーはツール・リソース・プロンプトの3プリミティブを提供できる
- 一度MCP対応にすれば、どのMCP対応AIアプリとも繋がれる
- GitHubやSlackなど公式サーバーが整備され、実用的なエコシステムが広がっている
MCPを理解すると、エージェントが「なぜこれほど多くのツールを扱えるのか」がクリアに見えてきます。次のレッスンでは、エージェントにおけるプロンプト設計の型を取り上げる予定です。