メインコンテンツへスキップ

リソース:読み取り専用のデータをアプリに渡す

  • レッスン 2
  • 11分

このレッスンで

終わる頃には、次ができるようになります

  • 直接リソースとテンプレート化リソースの違いを、URIの形で説明できる
  • リソースの購読と更新通知の仕組みを説明できる
  • リソースをHTTPのGETに例えて、実行するツールとの違いを他の人に説明できる

前のレッスンでは、リソースを「アプリが選ぶ、読み取り専用のデータ」とひとまとめに扱いました。ここからは、その中身をもう一段掘り下げます。

リソースはHTTPのGETに近い

ツールは「実行」を担い、呼ぶたびに何かが変わることがあります。値を書き込む、メールを送る、計算する。副作用があるということです。

リソースはそれと対照的です。読み取り専用で、同じURIを何度読んでも壊れるものは何もありません。ウェブでいうGETリクエストに近い性質を持っています。

ツールとリソースの違い

ツール

実行を担う。呼ぶことで何かが変わりうる(副作用がありうる)。

選ぶのはモデル。Claudeが会話の中で自分で判断して呼び出す。

リソース

参照だけを担う。何度読んでも状態は変わらない読み取り専用。

選ぶのはアプリ。一覧・検索・自動選択など、取り込み方はアプリの設計次第。

この違いを覚えておくと、「これはツールにすべきか、リソースにすべきか」を設計するときの判断が速くなります。


直接リソースと、パラメータ付きのテンプレート化リソース

リソースには2つの指定のしかたがあります。

一つは、URIが固定された直接リソースです。「議事録の一覧」のように、いつ呼んでも同じ場所を指します。もう一つは、URIの一部が変数になったテンプレート化リソースです。「この議事録IDの中身」のように、呼ぶたびに対象が変わります。

直接リソース

URIが固定。例えるなら「議事録一覧」のような、いつでも同じ場所を指すURI

テンプレート化リソース

URIの一部がパラメータ。例えるなら「議事録ID◯◯の中身」のような、呼ぶたびに対象が変わるURI

直接リソースとテンプレート化リソース

テンプレート化リソースのパラメータは、入力の途中で候補を補ってもらえる仕組み(補完API)と組み合わせられます。「@」に続けて名前の一部を打つと候補が絞り込まれていく、というような体験は、この仕組みの上に成り立っています。


購読すると、変更のたびに知らせてくれる

リソースには、もう一つ覚えておく価値のある機能があります。購読です。

対応しているサーバーであれば、特定のリソースを購読しておくと、そのリソースの中身が変わるたびに通知が届きます。ポーリングで「変わっていないか」を毎回尋ねに行く必要がありません。

01

購読する

特定のリソースについて、変更があったら知らせてほしいと伝える

02

サーバー側で変更が起きる

元のデータ(ファイル・DBのレコードなど)が更新される

03

通知が届く

サーバーが更新の事実だけをクライアントに知らせる

04

読み直す

クライアントは通知を受けて、必要なら改めて中身を取得する

購読から通知まで

ただし購読は、すべてのサーバーが対応しているとは限らない任意の機能です。サーバー側がこの機能を持つと宣言していなければ、購読自体ができません。つないだサーバーが対応しているかどうかは、確かめてから前提にする必要があります。


アプリがどう組み込むかは、決まった正解がない

前のレッスンでも触れたとおり、リソースを最終的にどう会話へ組み込むかは、つないでいるアプリ側の設計です。公式仕様はやり方を一つに決めていません。

補足

組み込み方の例

一覧や検索で見せて人に選ばせる方式、条件に応じてアプリが自動で差し込む方式、この2つは両立できます。どちらか一方に決め打ちする必要はありません。

同じリソースの仕組みでも、つなぐ先のアプリによって体験が変わる理由はここにあります。プロトコルが決めているのは「読み取り専用のデータを、URIで指し示して渡せる」というところまでです。


やってみよう

演習1:どちらのリソースにするか考える

自分が欲しい「読み取り専用のデータ」を1つ思い浮かべてください。それは固定のURIで指せる直接リソースが向いているか、パラメータで対象を絞るテンプレート化リソースが向いているか、理由とあわせて考えてみてください。

演習2:購読する価値があるか考える

演習1で挙げたリソースは、頻繁に中身が変わるものでしょうか。変わるたびに知りたいものであれば、購読する価値があります。逆にめったに変わらないものなら、購読より毎回読みに行く方がシンプルかもしれません。どちらが自分の用途に合うか考えてみてください。


今日のまとめ

3行で振り返ります。

  • リソースは読み取り専用で、ツールと違って何度読んでも状態を変えない
  • URIが固定の直接リソースと、パラメータで対象が変わるテンプレート化リソースの2種類がある
  • 購読に対応したリソースは、変更のたびに通知を受け取れる(ただし任意機能で、対応の有無はサーバー次第)

次のレッスンでは、もう一つの「ユーザーが選ぶ」土台、プロンプトを深掘りします。あなたが毎回書くプロンプトと、サーバー作者が用意するプロンプトの違いから始めます。

セルフチェック

1. リソースとツールの違いとして正しい説明はどれですか。

2. テンプレート化リソースの説明として正しいものはどれですか。

3. リソースの購読機能について正しい説明はどれですか。

SourceARTICLE
MCP公式仕様: Resources

直接リソース・テンプレート化リソース・購読と更新通知の一次情報。

Webmodelcontextprotocol.io
modelcontextprotocol.io/specification/2025-06-18/server/resources

このレッスンは役に立ちましたか?