AI の技術メモ

Model Context Protocol MCP は何を解こうとしているのか

MCP は共通の配線規格です。AI アプリケーションを、外部のデータやツールにつなぐためのものです。ここでは三つの役割、提供される三種類のもの、そして 2026 年の改訂で何がひっくり返ったのかを、平たく説明します。

仕様の改訂版 2026-07-28 にもとづく

01 — ひとことで

どの AI アプリケーションからでも、同じやり方でどのデータ源にもつなげる。それが MCP です。

正式名称は Model Context Protocol。Anthropic が 2024 年に提案しましたが、2025 年 12 月以降は Anthropic のものではありません。仕様は Agentic AI Foundation(Linux Foundation の下で Block、OpenAI とともに設立)へ寄贈され、いまはコミュニティが運営しています。

02 — なぜ要るのか

AI アプリケーションが 4 つ、つなぎたい先が 5 つあるとします。Google Drive、GitHub、データベース、Slack、社内 API。

共通の規格がない場合

4 × 5 = 20

「アプリ × データ源」の組み合わせごとに、その都度つなぎ込みを書きます。アプリが 1 つ増えれば 5 組、データ源が 1 つ増えれば 4 組。

共通の規格がある場合

4 + 5 = 9

アプリは「クライアントのふるまい」を一度書くだけ。データ源は「サーバのふるまい」を一度書くだけ。

これが N×M 問題です。MCP の価値はこの一文に尽きます。どの MCP クライアントも、どの MCP サーバにもつながる。USB と同じ話です。あれ以前は、周辺機器ごとに専用の口がありました。

03 — 三つの役割

MCP には三つの役割があります。取り違えられるのは、たいてい最初の二つです。「MCP クライアント」と言うとき、頭に浮かんでいるのはたいてい Claude Desktop ですが、あれはホストです。

MCP の三つの役割 ホストの中にクライアントが三つあり、それぞれが一つのサーバにつながっています。前の二つのサーバは手元、三つ目は遠隔にあります。データベースはサーバの外側に描かれ、サーバがデータの手前に立つ仲介であることを示しています。 HOST AI アプリケーション Client 1 Client 2 Client 3 Server A Server B Server C stdio(子プロセス) Streamable HTTP あなたのデータ
クライアントはホストのにあり、サーバ一つにつき一つ。矢印はつねにクライアント側から出ます。
Host(ホスト)
AI アプリケーションそのもの。Claude Desktop、VS Code、Claude Code はすべてホストです。モデルを持ち、会話を持ち、権限を決めます。ホストとは、その「アプリ」のことです。
Client(クライアント)
ホストのにある接続部品で、サーバ一つにつき一つ。アプリではなく、アプリの内側の部品です。VS Code が二つのサーバにつなげば、クライアントは二つになります。
Server(サーバ)
ツールとデータを外に出すプログラム。手元の機械で動かすことも、遠隔に置くこともできます。会話は見えず、ほかのサーバも見えません。意図してそう設計されています。

04 — サーバが出すもの

サーバが出すものは三種類。その違いは「読み」対「書き」ではありません。そこがいちばんよくある取り違えです。

ほんとうの違いは誰が使うと決めるかです。次の三つの場面で、答えはそれぞれ違います。

答え:Resource — 決めるのはアプリ

書類を会話にドラッグする、あるいはホストが「この質問にはこのファイルが要る」と判断する。決めているのはアプリで、モデルではありません。モデルは中身を受け取っただけです。

よくある例:ファイルの中身、git の履歴、データベースのスキーマ。

答え:Tool — 決めるのはモデル

「このバグをチケットにして」と言えば、どの機能をどんな引数で呼ぶかはモデルが自分で決めます。決めているのはモデルです。

ここが肝心です。読むだけの照会でも tool になり得ます。モデルが自分で「引くかどうか」を決めるなら、それは tool です。だから「読み=resource、書き=tool」は誤りです。

答え:Prompt — 決めるのは利用者

メニューから「コードレビュー」を選ぶ、スラッシュコマンドを打つ。決めているのはあなたです。モデルが勝手に使いにいくことはありません。

よくある例:スラッシュコマンド、定型のメニュー。

├─ 三つの場面の違いはただ一つ。誰が決めるか。

05 — どう運ぶか

標準は二つ。stdio はサーバを子プロセスとして起動し、標準入出力でやり取りします。Streamable HTTP は一つのメッセージが一回の HTTP POST になります。これは「どう運ぶか」の違いであって、「どこにあるか」の違いではありません。手元で動くサーバでも Streamable HTTP は話せます。

知っておく価値があるのは、安全面がまったく違うことです。stdio はあなたの権限をそのまま引き継ぎ、認証の層がありません。HTTP のほうは OAuth が要り、送信元の確認が要ります。それと「ローカルのサーバ」とは「自分の機械で動いている」という意味であって、外に出ないという意味ではありません。手元のサーバも遠隔の API を叩きにいきます。

06 — この版で変わったこと

サーバは、もう何も覚えていません。

2026-07-28 は MCP が世に出てから最も大きな改訂で、後方互換を壊すものです。以前はクライアントがサーバと握手して接続を張り、その後は互いを覚えていました。いまは握手も、接続の段階もありません。すべての要求が自分でバージョンと身元を運び、サーバは処理し終えたら忘れます。

向きも変わりました。サーバのほうから問い返してくることはありません。「これが要る」と返して、その要求はそこで終わります。答えを得たクライアントがもう一度出し直します

よそでこれらを見かけたら、その資料は古い

  • ├─ initialize の握手
  • ├─ Mcp-Session-Id ヘッダ、プロトコル層のセッション
  • ├─ サーバが自分からクライアントへ要求を送ること
  • └─ pinglogging/setLevel の二つのメソッド

三つ目は誤解されやすいので、はっきり書きます。「サーバはもう何も要求できなくなった」という意味ではありません。なくなったのは「自分から送りつける」という仕組みのほうで、要求を出す能力ではありません。以前はサーバが要求を直接押し込めました。いまは応答の中で「これが要る」と述べて終わり、あとはクライアントが引き取ります。

ですから「サーバがクライアントに何かを求める」機能はすべて残っています。通り道が変わっただけです。Elicitation(利用者に一つ情報を求める)も Sampling(ホストのモデルを借りる。向きが直感と逆なので、とりわけ誤解されます)も同じです。

これとは別の話として、Roots(作業ディレクトリの範囲をサーバに伝える)、SamplingLogging の三つが非推奨になりました。まだ動きますが、いまの構成として覚えないほうがよいものです。非推奨と、上に書いた仕組みの変更は別の話です。片方は「どう運ぶか」、もう片方は「残すかどうか」です。

07 — このページが指す版

MCP のバージョンは日付そのものです。示しているのは「最後に互換を壊す変更をした日」であって、リリースの周期ではありません。だから手元の MCP の資料は、対応する日付を見ればどれだけ新しいかがわかります。このページから持ち帰る価値がいちばん高いのは、この一点です。

2024-11-05 → 2025-03-26 → 2025-06-18 → 2025-11-25 → 2026-07-28

日付に依存する記述

  • 前節「この版で変わったこと」は 2026-07-28 についてのみ成り立ちます。
  • 非推奨になった三つが実際に削除されるのは、早くても 2027-07-28 以降のいずれかの版です。
  • 仕様から接続の段階が消えたことと、現実のサーバが無状態になったことは別です。すでに動いている多くのサーバは古い版を話し続けており、この差はしばらく残ります。