MCP とは?Model Context Protocol をわかりやすく解説(2026)
MCP とは?Model Context Protocol は AI アプリをツールやデータにつなぐオープン標準です。アーキテクチャ、プリミティブ、トランスポート、実例、2026 年の最新仕様まで解説します。
MCP(Model Context Protocol)は、AI アプリケーションが外部のツール、データ、サービスに共通のインターフェースで接続できるようにするオープン標準です。 アプリやモデルごとに個別の連携を書く代わりに、開発者は MCP サーバー(GitHub、データベース、ブラウザ、Figma など)を一度作るだけで、Claude、ChatGPT、Cursor、VS Code といった MCP 対応のホストならどれでもそれを使えます。よく「AI のための USB-C」と呼ばれます。プラグの形は一つ、つながるデバイスはたくさん、というわけです。
Anthropic は 2024 年 11 月に MCP をオープンソースプロジェクトとして公開しました。2025 年 12 月には Linux Foundation 傘下の directed fund である Agentic AI Foundation に寄贈され、今ではエージェントが外部の世界にアクセスする標準的な手段になっています。現在の仕様リビジョンは 2026-07-28 で、このリビジョンでプロトコルはステートレスになりました。このガイドでは、MCP とは何か、各要素がどう組み合わさるのか、そして今年何が変わったのかを解説します。
MCP が解決する問題
言語モデル単体では、プロンプトを読んでテキストを書くことしかできません。役に立つには、コンテキスト(ファイル、チケット、ドキュメント、データベースの行)と、行動する能力(PR を作る、クエリを実行する、メッセージを送る)が必要です。MCP 以前は、AI 製品ごとにこうしたコネクタを独自の形式で作っていました。M 個のアプリと N 個のサービスがあれば、およそ M × N 個の連携が必要で、しかもどれも再利用できませんでした。
MCP はこれを M + N に変えます。各サービスは MCP サーバーを一つ用意し、各 AI アプリは MCP クライアントを一つ実装し、全員が同じ JSON-RPC 2.0 メッセージで話します。この設計は、プログラミング言語とコードエディタの間で同じことを実現した Language Server Protocol を公然と参考にしています。
MCP のアーキテクチャ:ホスト、クライアント、サーバー
仕様は三つの役割を定義しています。
| 役割 | 何か | 例 |
|---|---|---|
| ホスト(Host) | ユーザーが操作する AI アプリケーション。モデル、会話、権限の確認を管理する。 | Claude Code、Claude Desktop、ChatGPT、Cursor、VS Code |
| クライアント(Client) | ホストがサーバーごとに作るコネクタ。一つのクライアントは一つのサーバーとだけ通信する。 | ホスト内部の MCP クライアントオブジェクト |
| サーバー(Server) | MCP 経由でツール、データ、プロンプトを公開するプログラム。ローカルでもリモートでも動く。 | GitHub、Filesystem、Playwright、Sentry、Notion の各サーバー |
VS Code をファイルシステムサーバーと Sentry サーバーにつなぐと、VS Code(ホスト)はサーバーごとに一つずつ、計二つのクライアントを作ります。サーバー同士はお互いを見ることができず、会話全体も見えません。各サーバーが何を受け取るかはホストが決めます。この分離は仕様が意図的に定めたセキュリティ原則です。
サーバー側をさらに詳しく知りたい場合は MCP サーバーとは を、クライアント側と MCP 対応アプリの一覧は MCP クライアントガイド をご覧ください。
構成要素:MCP のプリミティブ
MCP サーバーが提供する機能は三種類あり、仕様は誰が制御するかで分類しています。
| プリミティブ | 制御するのは | 何か | 例 |
|---|---|---|---|
| Tools(ツール) | モデル | モデルが呼び出しを判断できる関数。入力は JSON Schema で定義される | create_issue、run_query、browser_navigate |
| Resources(リソース) | アプリケーション | URI で識別される読み取り専用データ。ホストがコンテキストとして添付できる | ファイル、DB スキーマ、ログ |
| Prompts(プロンプト) | ユーザー | 再利用できるテンプレート。通常はスラッシュコマンドとして表示される | /review-pr、「このインシデントを要約して」 |
圧倒的によく使われるのはツールです。ほとんどのホストはサーバーのツールを一覧し、その名前とスキーマをモデルに渡し、モデルが求めたときに呼び出しを実行します。どれをいつ使うべきかは Resources と Tools の比較ガイド で詳しく説明しています。
クライアント側からサーバーに機能を提供することもできます。主なものは エリシテーション(elicitation) で、サーバーはタスクの途中でユーザーに入力(足りないパラメータ、確認、サインイン用に開く URL など)を求められます。古い二つのクライアント機能、サンプリング(sampling)(サーバーがホストのモデルを借りる)と roots(ホストがサーバーに使ってよいフォルダを伝える)は引き続き動作しますが、プロトコルレベルのロギングとともに 2026-07-28 で非推奨になりました。
コアの上には、オプトイン方式の 拡張(extensions) があります。代表的なのは MCP Apps(チャット内にインタラクティブな UI を描画)と Tasks(永続的なハンドルを持ち、ポーリングできる長時間ジョブ)です。
トランスポート:stdio と Streamable HTTP
同じメッセージを二つの標準トランスポートで運べます。
- stdio:ホストがサーバーをローカルのサブプロセスとして起動し、stdin と stdout で改行区切りの JSON をやり取りします。ほとんどのローカルサーバー(filesystem、git、Playwright)はこの方式で動きます。認証情報は通常、環境変数から渡します。
- Streamable HTTP:サーバーは
https://example.com/mcpのような URL で動きます。各メッセージは HTTP POST で送られ、サーバーは JSON か短い Server-Sent Events ストリームで返します。「リモート MCP サーバー」とはこの方式のことで、サインインには OAuth を使います。
2024 年の古い HTTP+SSE トランスポートは非推奨です。クライアントを /sse エンドポイントに向けるよう指示しているガイドは古くなっています。移行方法は SSE と Streamable HTTP を、リモートサーバーでの OAuth の仕組みは MCP の認証 をご覧ください。
MCP のやり取りの実例
SDK が代わりに処理してくれるので、生の MCP メッセージを書くことはほとんどありませんが、一度見るとプロトコルが具体的にイメージできます。ここではクライアントが天気ツールを呼び出しています。2026-07-28 リビジョンでは、すべてのリクエストが _meta にプロトコルバージョンとクライアントの機能を含むため、サーバー側で事前のハンドシェイクは不要です。
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "weather_current",
"arguments": { "location": "San Francisco", "units": "imperial" },
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientInfo": {
"name": "example-client",
"version": "1.0.0"
},
"io.modelcontextprotocol/clientCapabilities": { "elicitation": {} }
}
}
}
サーバーからの応答は次のとおりです。
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"resultType": "complete",
"content": [
{
"type": "text",
"text": "Current weather in San Francisco: 68°F, partly cloudy"
}
]
}
}
この例は公式のアーキテクチャガイドを元にしています。一連の流れ全体(ディスカバリー、tools/list、呼び出し、エリシテーションの往復、変更通知)は MCP はどのように動くのか で解説しています。
最小構成の MCP サーバー
サーバーを作るのに必要なコードはわずかです。以下は公式 Python SDK の README にある完全な例です(uv add "mcp[cli]")。
from mcp.server import MCPServer
mcp = MCPServer("Demo")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
@mcp.resource("greeting://{name}")
def greeting(name: str) -> str:
"""Greet someone by name."""
return f"Hello, {name}!"
型ヒントがツールの JSON Schema になり、docstring がツールの説明になります。uv run mcp dev server.py を実行すると MCP Inspector で開けるので、add を手動で呼び出せます。公式 SDK は TypeScript、C#、Go、Rust、Ruby、Java、Swift、PHP、Kotlin にもあります(SDK 一覧)。さらに進むなら、MCP サーバーを作る や Python MCP サーバーのチュートリアル に沿って進めてください。
既存のサーバーを使う
ほとんどの人はサーバーを自作せず、インストールして使います。Claude Code なら、ホスト型の Notion サーバーは Claude Code のドキュメントにあるコマンド一つで追加できます。
claude mcp add --transport http notion https://mcp.notion.com/mcp
デスクトップアプリでは JSON の設定ファイルを使います。以下は公式クイックスタートのファイルシステムサーバーの設定で、claude_desktop_config.json に記述します。
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop"
]
}
}
}
最初の一歩として人気なのは、GitHub MCP サーバー、ブラウザ自動化の Playwright MCP、最新のライブラリドキュメントを取得する Context7、そして Filesystem サーバー です。クライアントごとの手順は、Claude Code、Cursor、VS Code、ChatGPT のセットアップガイドをご覧ください。
MCP に対応しているのは誰か
Anthropic が MCP を Linux Foundation に移管した際、アクティブな公開 MCP サーバーは 10,000 を超え、ChatGPT、Cursor、Gemini、Microsoft Copilot、Visual Studio Code が対応していると発表しました。Claude Code、Codex、Cursor などのコーディングエージェントは、MCP を主要な拡張の仕組みとして扱っています。サーバー側では、主要な SaaS ベンダーのほとんどがホスト型の MCP エンドポイントを提供しており、MCP.so のようなディレクトリや公式の MCP Registry(現在プレビュー中)がそれらを収録しています。
歴史とガバナンス
| 時期 | 出来事 |
|---|---|
| 2024 年 11 月 | Anthropic が MCP をオープンソース化。最初の仕様リビジョン 2024-11-05(stdio と HTTP+SSE) |
| 2025 年 3 月 | リビジョン 2025-03-26 で Streamable HTTP と OAuth ベースの認可フレームワークを導入 |
| 2025 年 6 月 | リビジョン 2025-06-18 でエリシテーション、構造化されたツール出力、MCP-Protocol-Version ヘッダーを追加 |
| 2025 年 11 月 | リビジョン 2025-11-25。HTTP+SSE は引き続き非推奨で、Client ID Metadata Documents が推奨のクライアント登録方式に |
| 2025 年 12 月 | MCP を Linux Foundation 傘下の Agentic AI Foundation(Anthropic、Block、OpenAI が共同設立)に寄贈 |
| 2026 年 7 月 | リビジョン 2026-07-28:ステートレスなプロトコル、server/discover、マルチラウンドトリップリクエスト、Tasks を拡張へ移行 |
バージョン文字列は日付で、それぞれ後方互換性のない最後の変更日を示します。プロジェクトの正式名称は "Model Context Protocol a Series of LF Projects, LLC" で、技術的ガバナンスはリードメンテナー、コアメンテナー、ワーキンググループが担い、変更は SEP(Specification Enhancement Proposal)として提案されます。メンバーシップは企業ではなく個人に属します。
2026-07-28 で何が変わったか
2025 年に MCP を学んだ人にとって、違いは三つあります(変更履歴)。
initializeハンドシェイクとセッションがなくなりました。 各リクエストがバージョンと機能を持ち運ぶため、リモートサーバーを通常のロードバランサーの背後に置けます。新しいserver/discover呼び出しは、クライアントが事前に知りたいときにサーバーのバージョンと機能を返します。- サーバーはクライアントにリクエストを送らなくなりました。 サーバーがユーザーの入力を必要とするときは
input_requiredの結果を返し、クライアントが答えを付けて呼び出しを再試行します(マルチラウンドトリップリクエスト、MRTR パターン)。 - 変更通知は
subscriptions/listenに移りました。 クライアントがオプトインする、一本の長時間接続ストリームです。
古いクライアントやサーバーも文書化された互換モードで引き続き動作し、公式 SDK は新旧両方の世代に対応しています。
MCP と関数呼び出し、API、RAG の違い
- 関数呼び出し(Function calling) はモデルの機能で、モデルがあなたの定義した関数を呼ぶ構造化リクエストを出力します。MCP は、その関数をアプリの外から、実行時に発見できる形で、どのベンダーからでも供給するレイヤーです。
- REST API はプログラム向けに作られています。MCP サーバーは通常 API をラップしますが、モデル向けに書かれた説明とスキーマ、ユーザー向けの同意と認証のフローが加わります。
- RAG は文章の断片を検索してプロンプトに詰め込みます。MCP は検索の経路にもなりますが、行動もカバーします。詳しくは MCP と RAG の違い をご覧ください。
- A2A(Agent2Agent)はエージェント同士をつなぎ、MCP はエージェントとツールをつなぎます。両者は組み合わせて使えます。詳しくは A2A と MCP の違い をご覧ください。
MCP は安全か?
MCP はプロトコルなので、安全性はどのサーバーを信頼するか、そしてそれを動かすホストによって決まります。仕様は、ツールを呼び出す前にユーザーの明示的な同意を得ることをホストに求め、信頼できないサーバーからのツール説明を信頼できない入力として扱うよう定めています。実際には、信頼できる公開元からサーバーをインストールし、トークンを貼り付けるより OAuth 対応の公式ホスト型エンドポイントを選び、書き込みができるツールは承認プロンプトの後ろに置き、ファイルシステムサーバーは必要なフォルダだけに制限しましょう。プロンプトインジェクション、ツールポイズニング、トークンの扱いについては MCP セキュリティのベストプラクティス で詳しく解説しています。
次のステップ
- MCP.so ディレクトリで 1,000 以上のサーバーを探すか、おすすめの MCP サーバーから始めましょう。
- MCP はどのように動くのかで、ワイヤープロトコルを一歩ずつ学べます。
- MCP クライアント一覧からアプリを選び、そのセットアップガイドに従ってください。
よくある質問
AI における MCP とは何の略ですか?
- MCP は Model Context Protocol の略で、AI アプリを外部のツール・データ・サービスにつなぐためのオープン標準です。2024 年 11 月に Anthropic が公開し、現在は Linux Foundation 傘下の Agentic AI Foundation で運営されています。
MCP は Claude 専用ですか?
- いいえ。MCP はベンダー中立で、ChatGPT、Cursor、Gemini、Microsoft Copilot、VS Code、Codex など多くのアプリが対応しています。一度書いたサーバーは対応するどのクライアントでも使えます。
MCP と API の違いは何ですか?
- API はプログラム向けに作られていますが、MCP サーバーはツールやデータに LLM が理解できる説明とスキーマを付け、ディスカバリー・同意・認証の仕組みも提供します。多くの MCP サーバーは既存の REST API を薄く包んだものです。
MCP 仕様の最新バージョンは?
- 現在のリビジョンは 2026-07-28 です。initialize ハンドシェイクとセッションを廃止して MCP をステートレスにし、server/discover を追加し、elicitation 用のマルチラウンドトリップリクエスト(MRTR)を導入しました。