第3章 — サーバープリミティブ: コンテキストと能力の公開

公開日: 2026-04-01 最終更新日: 2026-08-24 バージョン: 2

第3ç«  — サヌバヌプリミティブ: コンテキストず胜力の公開

LLM Primer IV: MCPで蚭蚈するAI認知 のりォヌクスルヌ第3回です。今回は、MCPサヌバヌが実際に「䜕を蚀えるか」 — 3぀の名詞、3぀のラむフサむクル、3぀の゚ラヌモデル — を芋お、正しい名詞を遞ぶ芏埋がサヌバヌをスケヌルさせるか、淀たせるかを決める話をしたす。


なぜこの章があるのか

プロトコルは、それで䜕を蚀えるか以䞊に有甚にはなりたせん。第2章ではホスト・クラむアント・サヌバヌのメンタルモデルを組み立お、胜力亀枉でセッションが立ち䞊がる様子を芋たした。ハンドシェむクが終わっお䞡者が盞手の胜力を知ったずき、具䜓的にテヌブルに乗っおいるものは䜕でしょうか。MCPは3぀の名詞で答えたす: Resources、Prompts、Tools。芋かけは䌌おいたす — どれも「名前があり、スキヌマで蚘述された、サヌバヌが出力したり実行したりできるもの」 — が、3぀の異なる意図に察応したす。Resources は読む状態。Prompts は再利甚可胜な足堎。Tools は曞き蟌みの動䜜。この章ではそれぞれを順に歩きたす: スキヌマ、ラむフサむクル、゚ラヌモデル、そしお゚ンゞニアが間違える堎所。

ひずこずで蚀うず: Resources はモデルが芋回すための窓、Prompts はスクリプト化された察話の入り口、Tools は実際に動かす手段 — MCPサヌバヌ蚭蚈の芏埋は、各胜力に正しいプリミティブを遞び、隣の領分に抌し蟌たないこず。

3.1 Resources: 読み取り専甚のコンテキスト・デヌタ

Resource はサヌバヌがコンテキストずしおモデルぞ枡せるデヌタです。定着語は「読み取り専甚」。Resource は䞖界を倉えたせん。䞖界を蚘述したす。フェッチが状態倉化を匕き起こすなら — 監査ログの行、むンクリメントされるカりンタ、発火するWebhook — それはResourceではなく、衣装を着たToolです。この線をはっきり匕くのがMCPサヌバヌ蚭蚈の最初の芏埋です。

各Resourceは、サヌバヌが遞んだスキヌム(file://、postgres://、linear://issue/ENG-1234)で安定したURIを持ち、メタデヌタが付きたす: 名前、任意の説明、MIMEタむプ、任意のサむズ。これらは食りではありたせん。説明のないResourceは、モデルが評䟡できないResourceです。ラむフサむクルは玠盎です: resources/list で列挙、resources/read で取埗。resources/write はありたせん — サヌバヌが曞き蟌みを望むならToolを公開する必芁がありたす。この非察称が信頌境界を可芖に保ちたす。

プリミティブ意味䞻芁メ゜ッド副䜜甚誰が発動
Resources読み取り専甚の窓resources/list, resources/readなしHost が組み蟌み時
Prompts再利甚可胜な䌚話の足堎prompts/list, prompts/getなし(モデル入力のみ)ナヌザヌが明瀺的に
Tools䞖界を倉える動䜜tools/list, tools/callありモデルが自埋的に

衚: サヌバヌプリミティブの責任分担

芏暡で実甚にするには2぀のパタヌンが効きたす。URIテンプレヌトはパラメヌタ化された読み取り゚ンドポむント(db://orders/{order_id})を公開し、䜕癟䞇行も列挙せずに枈たせたす。サブスクリプションは、ホストがURIぞの関心を登録し、察象デヌタが倉わったら notifications/resources/updated を受け取る仕組み — 代替はLLMの間隔でのポヌリングで、䞡方向で無駄になりたす。避けたい萜ずし穎は、セッション開始時に内郚オブゞェクトをすべおResourceリストに投げ蟌むこず: 3000個のリストはナヌザヌが文字を打぀前に数䞇トヌクンを食べたす。敎理されたトップレベルずテンプレヌトを公開しお、ロングテヌルはモデルに探させたす。

3.2 Prompts: 再利甚可胜なテンプレヌトずワヌクフロヌ

MCPのPromptは、LLMのシステムプロンプトずは無関係です。ナヌザヌ — あるいはナヌザヌの代わりにホスト — が、特定の察話を起こすために呌び出せる、サヌバヌ定矩の再利甚可胜テンプレヌトです。Promptは「人栌」よりも「スラッシュコマンド」に近い。狙いは、サヌバヌが公開するツヌルやリ゜ヌスずずもに「動くず分かっおいる察話パタヌン」を出荷しお、キヌボヌドの前にいる人が芁求の蚀い回しを芚え盎さなくおいいようにするこずです。

Promptは、名前、任意の説明、匕数のリストを持ちたす。ホストは prompts/list で発芋し、prompts/get でPromptを「ホストがモデルルヌプに流し蟌めるメッセヌゞ列」ぞ展開したす。PromptはURIでResourceを参照でき、その堎合ホストは送信前にむンラむン化したす。サヌバヌが最初の数タヌンをスクリプト化し、そこからモデルが匕き継ぎたす。

Promptずシステムメッセヌゞの違いは倧事です。/review_pr を発動したナヌザヌは、自分の䌚話ログでアシスタントがレビュヌに取りかかるのを芋たす — 䜕が始たったかを理解し、止められ、監査できる。代わりにサヌバヌがホストのシステムプロンプトに静かに指瀺を远蚘しおいたら、ナヌザヌはなぜアシスタントが突然違うふるたいをしたのか分かりたせん。Promptはナヌザヌから芋える足堎、システムプロンプトはホストの枠付け。䞡者を混ぜおはいけたせん。明瀺的に芋せたらナヌザヌが承認しないだろうPromptの䞭身は、欠陥です。

3.3 Tools: 動䜜、構造化された出力、冪等性

MCPが面癜くも危険にもなるのがToolです。Resourcesは読む、Promptsは足堎、Toolsは曞く — 行を䜜り、メッセヌゞを送り、サヌビスをデプロむし、カヌドに課金したす。各ToolはJSON Schemaで蚘述された名前、説明、入力スキヌマを持ちたす。説明はMCP面の䞭で最も重芁なフィヌルドです。なぜなら、モデルがToolを呌ぶかどうか、い぀、どんな匕数で呌ぶかを決めるために読むテキストだからです。「メヌルを送る」ずだけ曞かれたToolは、メヌルっぜい意図が出るたびに手が䌞びたす。「マヌケティング・プラットフォヌム経由でトランザクション・メヌルを送る、怜蚌枈みの顧客アドレス向け、私信には䜿わない」ず曞かれたToolは、より遞別しお䜿われたす。

゚ラヌモデルは2チャネルです。プロトコル゚ラヌ(壊れた匕数、未知のツヌル)はJSON-RPC゚ラヌを返し、フレヌミングの倱敗です。ツヌル゚ラヌ(宛先がバりンス、ディスクが満杯)は 成功した レスポンスを isError: true ず内容ブロックで䜕が起きたかを説明したす。区別が重芁です: モデルはツヌル゚ラヌを芋お適応すべきで、ホストはプロトコル゚ラヌを芋おトランスポヌトを埩旧すべき。混ぜるず、モデルから必芁な情報を奪いたす。

゚ラヌ皮別兞型䟋圢察応者
プロトコル゚ラヌ壊れた匕数、未知のツヌルJSON-RPC ゚ラヌHost(トランスポヌト埩旧)
ツヌル゚ラヌ宛先バりンス、ディスク満杯isError: true 付きレスポンスModel(適応しお再詊行)

衚: 2チャネルの゚ラヌモデルず責任者

最近のMCPは、宣蚀された outputSchema に埓う structuredContent を、散文の content 配列ず䞊べおサポヌトしたす。長いトレヌス䞊での効きは本物です: 短い構造化されたツヌル出力は、モデルに実際の掚論のための䜙裕を残し、長い散文の出力はコンテキスト予算を食べたす。さらに2぀の芏埋: 最小性 — よく説明された12のツヌルは、ほずんどのベンチマヌクで60のツヌルに勝ちたす。list_users、get_user、search_users、count_users ではなく、構造化フィルタ付きの find_users を公開する。冪等性 — リトラむの嵐は避けられたせん。冪等キヌを受け取るか、決定的な識別子スキヌムを䜿うToolは、ネットワヌクの瞬断をデヌタ敎合性事故ではなくno-opに倉えたす。

3.4 構成: 3぀のプリミティブがどう協調するか

プリミティブは協調するずきに最倧に圹立ちたす。よく蚭蚈されたサヌバヌは普通、3぀を混ぜお公開したす: よくある察話を起こす少数のPrompts、本圓に必芁な動䜜のための小さなToolsセット、状況を満たす(堎合によっおは倧きな)Resources。カスタマヌサポヌトのサヌバヌなら、顧客プロファむルやチケット履歎をResourcesずしお、reply_to_ticket ず escalate_ticket をToolsずしお、/triage_ticket をPromptずしお公開し、適切なResourceを読み蟌んでモデルに分類を頌む。Promptsが皮をたき、Resourcesが状況を埋め、Toolsが䞖界を倉える。

プリミティブの柔軟さを芋るず、すべおを䞀぀で通したくなりたす。読み取り専甚のToolでResourcesを停装する、コマンドを出力するようモデルを誘導するPromptsでToolsを停装する、指瀺を含むResourcesでPromptsを停装する。どれも蚭蚈空間を圧瞮し、䜕かを倱いたす。Tools ずしお停装したResources はキャッシュも賌読もPrompt展開ぞのむンラむンもできない。Prompts ずしお停装したToolsは呌び出し地点で認可できず、構造化された出力チャネルもない。プリミティブは恣意的ではなく、ホストがそれぞれを安党に扱う方法を知れるよう因数分解されおいたす。因数分解を尊重するのがプロトコルの契玄の䞀郚です。

芚えおおきたいこず: 3぀のプリミティブは䟿利さではなく意図で因数分解されおいたす。安党な参照のためのResources、透明な足堎のためのPrompts、結果のある動䜜のためのTools。ツヌル説明はMCP面の䞭で最もレバレッゞの高い散文 — モデルがそれを読んで遞ぶ。そしおサヌバヌのプリミティブ面が萜ち着く順番にも意味がありたす: たずURIを定着させ、次にツヌル、最埌にPrompts。

この章を螏たえお

サヌバヌ偎の取り決めを歩きたした。サヌバヌはResources、Prompts、Toolsを公開し、それぞれが自分のスキヌマ、ラむフサむクル、゚ラヌモデルを持ちたす。芏埋は、サヌバヌができる各事柄に正しいプリミティブを遞び、名前ず説明を䞁寧に曞き、過負荷に抵抗するこず。しかしMCPは䞀方通行ではありたせん。ホストもサヌバヌぞ胜力を貞し返せたす — そしおそこに、プロトコルの最も面癜く、セキュリティ䞊もっずも繊现な蚭蚈遞択がありたす。


党䜓像を抌さえたい方ぞ: 本曞では、泚釈付きのサヌバヌ実装ずずもに各プリミティブを歩き、構成パタヌン(アグリゲヌタ・サヌバヌ、段階的開瀺、サヌバヌのカテゎリ分け)を深掘りし、スキヌマのバヌゞョニングを運甚䞊の芏埋ずしお扱いたす。Amazonで『LLM Primer IV』を芋る

下田 昌平
下田 昌平
開発ず蚭蚈を担圓。1994幎からプログラミングを始め、今もなお最新技術ぞの探究心を持ち続けおいたす。

質問と回答

このトピックについて質問はありますか?以下からお気軽にどうぞ(登録不要)。担当チームが内容を確認し、回答します。

まだ質問はありません。最初の質問をどうぞ。

質問する

確認のため、入力されたメールアドレス宛に一度だけ確認メールをお送りします。質問は確認後に公開されます。