MCPの仕組みを、Model Context Protocol の仕様の原文に沿って説明します。MCPが何のための規格か、どう設定するかは MCPとは?MCPサーバーの仕組み・できること・設定方法を図解 にまとめました。この記事はその一段下、ホストとサーバーのあいだで何が流れ、仕様の改訂で何が変わったかを扱います。自分でサーバーを書く手順は MCPサーバーの作り方2026年完全ガイド:TypeScript・Python両対応チュートリアル で扱っています。
ONE REQUEST AT A TIME2026-07-28版の流れ
握手をせず、毎回のリクエストが版と能力を持つ
-
01
server/discover(任意)
サーバーが対応する版・能力・名前を返す
-
02
tools/list
ツールの名前・説明・入力の型。有効期間つきでキャッシュできる
-
03
tools/call
_meta に版とクライアントの能力を入れて1回呼ぶ
-
04
結果
complete なら完了。input_required なら入力を足して呼び直す
30秒でわかるMCPの仕組み
- ・登場人物:ホスト(AIアプリ)の中のクライアントが、サーバーと JSON-RPC 2.0 で話す
- ・3つの機能:ツール(実行)・リソース(読むデータ)・プロンプト(定型の指示)
- ・通信路:ローカルの stdio と、ネットワーク越しの Streamable HTTP
- ・最新の版:2026-07-28版でステートレスに。毎回のリクエストが版と能力を持ち、最初の握手(initialize)はなくなった
MCPの仕組みの全体像とホスト・クライアント・サーバー
仕様は登場人物を3つに分けています。ホストは接続を始める AI アプリ、クライアントはホストの中の接続部品、サーバーは機能を提供するプログラムです。1つのホストが複数のサーバーにつなぐときは、サーバーの数だけクライアントを持ちます。
メッセージは JSON-RPC 2.0 です。種類はリクエスト(返事が要る)、レスポンス(返事)、通知(返事が要らない)の3つです。仕様は、プログラミング言語の機能をエディタに共通の方法で足す LSP(Language Server Protocol)から着想を得たと書いています。
| 層 | 決めていること |
|---|---|
| データ層 | メッセージの形、ツール・リソース・プロンプトの呼び方、エラーの番号 |
| トランスポート層 | 通信路(stdio・Streamable HTTP)、HTTP のヘッダー、認可 |
3つの機能:ツール・リソース・プロンプト
サーバーが提供できるものは3つで、主に誰が使うかで分かれます。
| 機能 | 何か | 主に使う側 | 呼び方 |
|---|---|---|---|
| ツール | AI が呼んで実行する関数 | モデル | tools/list・tools/call |
| リソース | AI や利用者に読ませるデータ(URI で指す) | アプリ | resources/list・resources/read |
| プロンプト | 利用者が選んで使う定型の指示 | 利用者 | prompts/list・prompts/get |
実際の流れでは、ツールがいちばんよく使われます。2026-07-28版の仕様にある tools/call の例は次のとおりです。結果には、完了を表す resultType が必ず付くようになりました。
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"resultType": "complete",
"content": [
{ "type": "text", "text": "Current weather in New York:\nTemperature: 72°F\nConditions: Partly cloudy" }
],
"isError": false
}
}
ツールの定義には入力の型(JSON Schema)が付き、AI はそれを見て引数を組み立てます。2026-07-28版では JSON Schema 2020-12 のキーワードを広く使えるようになりました。
リクエストの流れ:2026-07-28版でステートレスに
2025-11-25版までの MCP は、接続の最初に initialize で版と能力を交換し、その接続を1つの会話として扱っていました。2026-07-28版はこれをやめ、すべてのリクエストを独立させました。仕様の言葉では、リクエストを処理するのに必要な情報はすべてそのリクエストの中にあり、同じ接続の前のリクエストから状態を推測してはいけません。
2025-11-25 → 2026-07-28何が変わったか
接続を「会話」として扱うのをやめた
2025-11-25版まで
2026-07-28版
2025-11-25版まで: 最初に initialize で版と能力を交換
2026-07-28版: 毎回の _meta に版と能力を入れる
2025-11-25版まで: Mcp-Session-Id で接続を覚える
2026-07-28版: セッションなし。続きはサーバーが発行する識別子で
2025-11-25版まで: サーバーから sampling などを要求
2026-07-28版: input_required を返し、クライアントが呼び直す
2025-11-25版まで: GET と resources/subscribe で通知
2026-07-28版: subscriptions/listen の1本に
毎回のリクエストは _meta に次の値を入れます。
_meta のキー |
必須 | 中身 |
|---|---|---|
io.modelcontextprotocol/protocolVersion |
必須 | このリクエストの版(例:"2026-07-28") |
io.modelcontextprotocol/clientCapabilities |
必須 | このリクエストに関係するクライアントの能力 |
io.modelcontextprotocol/clientInfo |
任意(付けることを推奨) | クライアントの名前と版 |
必須の値が無いリクエストを、サーバーは -32602(Invalid params)で拒否します。サーバーは server/discover を必ず実装し、対応する版・能力・名前を返します。クライアントは最初にこれを呼んで版を選んでもよく、呼ばずに直接リクエストを送ってもかまいません。
サーバーが利用者の追加入力やファイルの場所を必要とするときは、以前はサーバーからクライアントへ要求を送っていました。2026-07-28版では、サーバーが resultType: "input_required" の結果を返し、クライアントが答えを足して同じリクエストを送り直します(Multi Round-Trip Requests)。あわせて Roots・Sampling・Logging は非推奨になりました。動き続けますが、新しく実装しないよう求められています。
通信路:stdio と Streamable HTTP
| stdio | Streamable HTTP | |
|---|---|---|
| どこで動くか | ホストが子プロセスとして起動 | ネットワーク越し(ローカルでも可) |
| やり取り | 標準入出力に JSON-RPC を流す | HTTP POST。応答をストリームで返せる |
| 認証 | 起動したユーザーの権限で動く | OAuth ベースの認可を仕様で定義 |
| 2026-07-28版の変化 | 1つのプロセスを会話とみなさない | Mcp-Session-Id を廃止。Mcp-Method・Mcp-Name ヘッダーが必須に |
古い解説にある「HTTP+SSE」は2025-03-26版で Streamable HTTP に置き換わった方式です。新しく作るサーバーでは使いません。
仕様の改訂:5つの版で変わったこと
MCPの仕様は日付で版を分けています。リポジトリ modelcontextprotocol/modelcontextprotocol の docs/specification/ に版ごとのフォルダがあり、それぞれに変更点(changelog)があります。
| 版 | 主な変更(changelog より) |
|---|---|
| 2024-11-05 | 初版。Anthropic が公開 |
| 2025-03-26 | OAuth ベースの認可、HTTP+SSE を Streamable HTTP に置き換え、ツールの注釈 |
| 2025-06-18 | JSON-RPC のバッチを削除、構造化されたツール出力、Elicitation(利用者への入力依頼)、HTTP で版のヘッダーを必須に |
| 2025-11-25 | 認可の拡張(OpenID Connect Discovery など)、ツールなどのアイコン、実験的な Tasks |
| 2026-07-28 | ステートレス化、server/discover、input_required、subscriptions/listen、一覧の結果に有効期間(ttlMs)、Tasks を拡張機能へ移動、Roots・Sampling・Logging を非推奨に |
「MCP対応」と書かれた製品でも、実装している版が違えばつながらないことがあります。不具合を調べるときは、製品名より先に、双方がどの版を話しているかを確かめてください。2026-07-28版は古い版のサーバーへの後方互換の手順(server/discover を使った確認)も定めています。
MCPを REST API の代わりに使うべきかは、使い手で決まります。AI に複数のツールを渡すなら MCP、画面とバックエンドの通信のような AI と関係ない連携なら従来の API が向きます。既存の API はそのままにして、MCPサーバーで包む使い方もよくあります。サーバーが画面を配る拡張は MCP Appsとは で扱っています。
参照ソース
・Model Context Protocol 仕様 2026-07-28版(index・Statelessness・_meta・Tools・changelog)— modelcontextprotocol/modelcontextprotocol(コミット 86f6e0c、2026-10-14)
・2025-03-26版・2025-06-18版・2025-11-25版の changelog
・Model Context Protocol 公式ドキュメント
・Introducing the Model Context Protocol — Anthropic






