0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「読み取りだから安全」ではない — 主導権で読み解く MCP の構成要素4つ

0
Posted at

図解

mcp-who-controls.png

はじめに

MCP サーバーを入れた。設定ファイルに書いて、再起動して、動いた。

そこで聞かれます。「で、何ができるようになったんですか」。

答えに詰まったことはないでしょうか。 ツールが増えた、とは言える。でもそれが何を意味するのかは、うまく言えない。

原因は、たぶん読む順番です。多くの解説は「何をつなげるか」から入ります。GitHub につなぐ、Slack につなぐ、データベースにつなぐ。

けれど 公式仕様 が構成要素を分けている軸は、そこではありません。誰が主導権を持つかです。

この記事では、公式が定める構成要素を数え上げ、その1本の軸で整理します。

この記事で扱うこと

  • 登場人物 — 「サーバー」という言葉が作る誤解
  • 公式が定める構成要素はいくつあるのか
  • 選ぶ基準は「誰が主導権を持つか」
  • Tools と Resources — いちばん間違えるところ
  • 2026-07-28 で作り替えられたもの
  • MCP が実際にやっていること

🧩 登場人物 — 「サーバー」が最初の壁

構成要素の前に、言葉を1つ片付けます。MCP の「サーバー」は、場所の話ではありません。

登場人物は3つです。

名前 役割
MCP ホスト Claude Code や VS Code などの AI アプリ本体
MCP クライアント 1つのサーバーとの接続を保つ部品。ホストが接続先ごとに1つ作る
MCP サーバー クライアントに文脈を渡すプログラム

ホスト・クライアント・サーバーの関係

この図で、ホストの中にクライアントが複数いるところが要点です。接続先が3つあれば、クライアントも3つ生まれます。

そして、公式はこう書いています。

Note that MCP server refers to the program that serves context data, regardless of where it runs.

MCP サーバーとは文脈データを供給するプログラムを指す。どこで動いているかは問わない

Architecture overview

手元の PC で動く filesystem サーバーも、Sentry のクラウドで動くサーバーも、等しく「サーバー」です。

ここが腹に落ちると、あとの話が読みやすくなります。


🗺️ 何を渡せるのか — 公式が定める構成要素

本題です。MCP が定める構成要素(プリミティブ)を数え上げます。

サーバー側が公開できるものは3つです。

構成要素 中身
Tools AI が呼び出して実行する関数。ファイル操作、API 呼び出し、DB 更新
Resources 文脈として渡す読み取り専用のデータ。ファイル内容、スキーマ、記録
Prompts やりとりを組み立てる再利用可能なテンプレート

クライアント側が公開できるものは1つです。

構成要素 中身
Elicitation サーバーが利用者へ追加入力や確認を求める仕組み

サーバー側3つとクライアント側1つ

この図の左右の分かれ目が、公開する側の違いです。サーバーだけが渡すのではなく、クライアント側も差し出しています。

ここで注意が要ります。日本語の解説でよく見る Roots・Sampling・Logging は、2026-07-28 版で非推奨になりました。

Deprecate the Roots, Sampling, and Logging features. These features remain fully functional during the deprecation window but new implementations should not add support for them.

(Roots・Sampling・Logging を非推奨とする。非推奨期間のあいだ機能は完全に動作し続けるが、新規の実装はこれらに対応を追加すべきではない

Key Changes(2026-07-28)

いま数えるべきは、サーバー側3つとクライアント側1つ。合計4つです。


⚖️ 選ぶ基準は「誰が主導権を持つか」

ここがこの記事の中心です。3つをどう使い分けるのか。

公式ドキュメントには、そのものずばりの列があります。「Who controls it」です。

構成要素 主導権を持つのは
Tools モデル
Resources アプリケーション
Prompts 利用者

主導権で3つに分かれる

この図の3本のレーンが、そのまま使い分けの答えです。何をつなぐかではなく、誰が引き金を引くかで分かれています。

それぞれ、公式の言葉で確認します。

Tools are model-controlled, meaning AI models can discover and invoke them automatically.

(Tools はモデルが主導する。つまり AI モデルが自分で見つけ、自動的に呼び出せる)

Understanding MCP servers

モデルが勝手に呼ぶ。だから Tools には、呼ばれて困ることを置けません。

Resources are application-driven, giving them flexibility in how they retrieve, process, and present available context.

(Resources はアプリが主導する。取得・加工・提示の方法をアプリ側が自由に決められる)

Understanding MCP servers

アプリが選んで渡す。全部渡すか、検索して一部だけ渡すかは、アプリの判断です。

They are user-controlled, requiring explicit invocation rather than automatic triggering.

(Prompts は利用者が主導する。自動的に起動するのではなく、明示的な呼び出しを必要とする)

Understanding MCP servers

人が選ぶまで動かない。スラッシュコマンドの一覧に並ぶのが、この層です。

つまり判断はこう進みます。モデルに任せてよいなら Tools。アプリが選んで渡すなら Resources。人が選ぶまで動かしたくないなら Prompts。


🔀 Tools と Resources — いちばん間違えるところ

3つのうち、実装で必ず迷うのがこの2つです。

迷いは、こういう形で現れます。「社内文書を読ませたい」。これは Tools でしょうか、Resources でしょうか。

読むだけなら Resources です。ところが実際には、読み取りしかしないサーバーの機能が、3つとも Tools で書かれていることがあります。

理由は単純で、Tools のほうが実装例が多く、動かすのが早いからです。

読み取りをToolsで作ると何が変わるか

この図の上下で変わっているのは、引き金を誰が引くかだけです。それだけで、動く回数も、止められるかどうかも変わります。

Tools にすると、モデルが必要と判断したときに呼ばれます。呼ばれる回数も、渡す条件も、モデル側が決めます。

Resources にすると、アプリが選んで渡します。何を渡すかを人間側の仕組みで決められます。

読み取りだから安全、ではありません。読み取りでも、社外秘の文書をモデルが自分の判断で引き込めるなら、それは制御を手放したということです。

**「動くかどうか」ではなく「誰が引き金を引くか」で選ぶ。**この記事で持ち帰ってほしいのは、ここです。


🧨 2026-07-28 で、中身が作り替えられた

もう1つ、押さえておくべきことがあります。MCP の仕様は、直近で大きく変わりました。

2026-07-28 版の変更点は、細かい修正ではありません。土台の作りが変わっています。

変わったこと
状態の持ち方 セッションを張る ステートレス。毎回のリクエストに版と能力を載せる
接続の開始 initialize ハンドシェイク 削除。server/discover で能力を問い合わせる
通知 GET エンドポイントと resources/subscribe subscriptions/listen に一本化。オプトイン
サーバー起点の要求 サーバーから要求を送る MRTR。結果に input_required を返して再試行させる

2026-07-28で作り替えられたもの

この図の左から右への矢印が、この1年で起きたことです。状態を持たない方向へ寄せられています。

公式の言い方はこうです。

Make MCP stateless: remove the initialize/notifications/initialized handshake. Every request now carries its protocol version and client capabilities in _meta.

MCP をステートレスにする。 initializenotifications/initialized のハンドシェイクを削除し、すべてのリクエストがプロトコル版とクライアントの能力を _meta に載せて運ぶ)

Key Changes(2026-07-28)

pinglogging/setLevel も消えました。HTTP+SSE トランスポートも非推奨です。

日本語の解説記事を読むときは、どの版の話かを確かめてください。 initialize を前提に書かれているものは、いま作るサーバーには当てはまりません。


🪜 MCP は、道具を増やす仕組みではなかった

ここまでを並べ直すと、見えてくるものがあります。

Tools・Resources・Prompts は、機能の分類ではありません。主導権の分類です。

そして 2026-07-28 の変更も、同じ方向を向いています。セッションを捨て、通知をオプトインにし、サーバー起点の要求をやめる。サーバー側が勝手に持てる状態と、勝手に起こせる動きを減らしています。

MCPは境界を引く仕組み

この図の縦線が、MCP が引いている線です。つなぐための規格ではなく、つないだあとに誰が何を決めるかを固定するための規格だと読めます。

公式自身、範囲をはっきり区切っています。

MCP focuses solely on the protocol for context exchange—it does not dictate how AI applications use LLMs or manage the provided context.

(MCP は**文脈をやりとりするプロトコルだけに専念する。**AI アプリが LLM をどう使うか、渡された文脈をどう管理するかには立ち入らない)

Architecture overview

だから「MCP を入れれば賢くなる」は、期待の方向が違います。MCP が決めるのは、境界の引き方だけです。


📝 まとめ

3つに絞ります。

1つ目。数えるべきは4つ。 サーバー側が Tools・Resources・Prompts、クライアント側が Elicitation。Roots・Sampling・Logging は 2026-07-28 で非推奨になりました。

2つ目。分けている軸は主導権。 Tools はモデル、Resources はアプリ、Prompts は利用者。公式ドキュメントに「Who controls it」としてそのまま書かれています。

3つ目。仕様は動いている。 2026-07-28 でステートレス化され、initialize が消え、通知はオプトインになりました。古い記事は前提から違います。

明日いちばん先に試すことを1つ挙げるなら、これをおすすめします。

いま使っている MCP サーバーの機能を並べて、それぞれ「誰が引き金を引くか」を書き出してみてください。

全部が Tools になっていたら、そのサーバーは制御をモデルに預けきっています。それが妥当かどうかは、そこで初めて判断できます。

つなぐことが目的になると、この問いは出てきません。境界を引くための規格だと読み替えると、出てきます。


📚 参考

一次資料

💡 この記事について
本記事は2026年9月2日時点の公式ドキュメントをもとにまとめています。対象はプロトコル版 2026-07-28 です。

英文の引用はすべて原典と照合しています。日本語訳は筆者によるもので、公式訳ではありません。

MCP の仕様は更新が速く、この記事の内容も版が変わると当てはまらなくなります。実装の前に必ず 最新版 を確認してください。

非推奨とされた機能は、非推奨期間のあいだは動作します。既存の実装がすぐ壊れるわけではありません。


エンジニアがAIを活用して次のレベルへ。上流はさらに上へ、下流は上流へ。
そのために何をするかを書いていきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?