MCP公式ドキュメント 日本語版
  1. コンセプト
MCP公式ドキュメント 日本語版
  • 始める
    • 導入
    • サンプルサーバー
    • クライアントの例
    • クイックスタート
      • サーバー開発者向け
      • クライアント開発者向け
      • Claude デスクトップ ユーザー向け
  • チュートリアル
    • LLMs を使用した MCP の構築
    • デバッグ
    • Inspector
  • コンセプト
    • リソース
    • コアアーキテクチャ
    • プロンプト
    • ツール
    • サンプリング
    • ルーツ
    • トランスポート
  • 発達
    • 最新情報
    • ロードマップ
    • 貢献
  1. コンセプト

リソース

サーバーからデータとコンテンツをLLMsに公開します
リソースは、モデル コンテキスト プロトコル (MCP) のコア プリミティブであり、これによりサーバーは、クライアントが読み取り、対話のコンテキストとして使用できるデータとコンテンツを公開できます。
リソースはアプリケーション制御されるように設計されています。つまり、クライアント アプリケーションはリソースの使用方法と使用時期を決定できます。MCP クライアントによって、リソースの処理方法が異なる場合があります。例:
Claude Desktopは現在、ユーザーがリソースを使用する前に明示的に選択する必要があります。
他のクライアントはヒューリスティックに基づいてリソースを自動的に選択するかもしれない
一部の実装では、AIモデル自体がどのリソースを使用するかを決定できる場合もあります。
サーバー作成者は、リソース サポートを実装するときに、これらの相互作用パターンのいずれかを処理できるように準備する必要があります。データをモデルに自動的に公開するには、サーバー作成者はToolsなどのモデル制御プリミティブを使用する必要があります。

概要#

リソースは、MCPサーバーがクライアントに提供したいあらゆる種類のデータを表します。これには以下が含まれます:
ファイルの内容
データベースのレコード
APIの応答
ライブシステムデータ
スクリーンショットや画像
ログファイル
その他
各リソースは一意のURIで識別され、テキストまたはバイナリデータを含むことができます。

リソースURI#

リソースは以下の形式に従ったURIを使用して識別されます:
[protocol]://[host]/[path]
例:
file:///home/user/documents/report.pdf
postgres://database/customers/schema
screen://localhost/display1
プロトコルとパスの構造はMCPサーバーの実装によって定義されます。サーバーは独自のカスタムURIスキームを定義することができます。

リソースタイプ#

リソースは2種類のコンテンツを含むことができます:

テキストリソース#

テキストリソースはUTF-8でエンコードされたテキストデータを含みます。これらは以下に適しています:
ソースコード
設定ファイル
ログファイル
JSON/XMLデータ
プレーンテキスト

バイナリリソース#

バイナリリソースはbase64でエンコードされた生のバイナリデータを含みます。これらは以下に適しています:
画像
PDF
オーディオファイル
ビデオファイル
その他の非テキスト形式

リソース探索#

クライアントは主に2つの方法で利用可能なリソースを探索できます:

直接リソース#

サーバーはresources/list APIを通じて具体的なリソースのリストを公開します。各リソースには以下が含まれます:

リソーステンプレート#

動的リソースの場合、サーバーはクライアントが有効なリソースURIを構築するために使用できるURIテンプレートを公開できます:

リソースの読み取り#

リソースを読み取るために、クライアントはリソースURIを指定してresources/readリクエストを行います。
サーバーはリソースコンテンツのリストで応答します:
サーバーは1つのresources/readリクエストに対して複数のリソースを返すことがあります。例えば、ディレクトリを読み取る際にディレクトリ内のファイルリストを返すことができます。

リソースの更新#

MCPは2つのメカニズムを通じてリソースのリアルタイム更新をサポートします:

リストの変更#

サーバーはnotifications/resources/list_changed通知を通じて利用可能なリソースリストの変更をクライアントに通知できます。

コンテンツの変更#

クライアントは特定のリソースの更新を購読できます:
1.
クライアントがリソースURIを指定してresources/subscribeを送信
2.
リソースが変更されたときにサーバーがnotifications/resources/updatedを送信
3.
クライアントはresources/readで最新のコンテンツを取得可能
4.
クライアントはresources/unsubscribeで購読を解除可能

実装例#

以下はMCPサーバーでリソースサポートを実装する簡単な例です:
TypeScript
Python

ベストプラクティス#

リソースサポートを実装する際には:
1.
明確で説明的なリソース名とURIを使用する
2.
LLMの理解を助けるために有用な説明を含める
3.
知っている場合は適切なMIMEタイプを設定する
4.
動的コンテンツのためにリソーステンプレートを実装する
5.
頻繁に変更されるリソースには購読を使用する
6.
明確なエラーメッセージでエラーを適切に処理する
7.
大規模なリソースリストにはページネーションを考慮する
8.
適切な場合はリソースコンテンツをキャッシュする
9.
処理前にURIを検証する
10.
カスタムURIスキームを文書化する

セキュリティの考慮事項#

リソースを公開する際には:
すべてのリソースURIを検証する
適切なアクセス制御を実装する
ディレクトリトラバーサルを防ぐためにファイルパスをサニタイズする
バイナリデータの取り扱いに注意する
リソースの読み取りに対するレート制限を考慮する
リソースアクセスを監査する
転送中の機密データを暗号化する
MIMEタイプを検証する
長時間実行される読み取りに対してタイムアウトを実装する
リソースのクリーンアップを適切に処理する
前へ
Inspector
次へ
コアアーキテクチャ
Built with