MCP において、リソースはサーバーが公開するアドレス指定可能なデータオブジェクトを表します。ファイル、データベースレコード、生成ドキュメント、動的 API 出力などが含まれます。
リソースはクライアント制御であり、クライアントがどのリソースを要求するか、またコンテンツをどのように解釈するかを決定できます。
関連する主な 2 つのメソッドは次のとおりです。
- resources/list:サーバーが公開するすべての利用可能なリソース定義の一覧を要求します。TsgcWSAPIServer_MCP コンポーネントが内部で処理します。
- resources/read:特定のリソースのコンテンツとオプションのメタデータを取得します。サーバーが新しいリクエストを受信すると OnMCPRequestResource イベントが呼び出されます。リソースには通常以下が含まれます。
- uri:リソース識別子。
- mimeType:コンテンツタイプ(text/plain、application/json、image/png など)。
- data または content:実際のペイロード(テキストまたはバイナリ)。
また、サーバーが宣言した機能で resources.listChanged = true に設定されている場合、リソースカタログが更新されたときに notifications/resources/list_changed などの通知を送信することがあります。
リソース一覧
サーバーは TsgcAI_MCP_ResourcesList にリソースのインメモリカタログを保持します。リソースは URI によって一意性が保証され、説明と JSON Schema のような入力 URI を公開し、仕様の resources.list メソッドへのレスポンスで出力されます。クライアントが resources.list を呼び出すと、TsgcWSAPIServer_MCP はリクエストを読み込み、現在のカタログをシリアライズして 200 HTTP ステータスコードとともに返します。
ファイルリソースを公開するサンプルコードです。
procedure TMainForm.FormCreate(Sender: TObject);
begin
MCPServer.Resources.Clear;
MCPServer.Resources.AddResource(
'file:///project/src/main.rs', // URI
'main.rs', // Name
'Rust Software Application Main File', // Title
'Primary application entry point', // Description
'text/x-rust');
end;
リソースリクエスト
クライアントが resource.read JSON-RPC リクエストを発行すると、TsgcWSAPIServer_MCP は OnMCPRequestResource イベントを発生させる前に、強く型付けされたリクエストオブジェクト(URI リソース、名前、指定された引数を含む)を構築します。ハンドラーがレスポンスペイロードを設定すると、成功 HTTP ステータスコードとともにクライアントにシリアライズされて返されます。
典型的なハンドラーは次のようになります。
procedure OnMCPRequestResource(Sender: TObject;
const aSession: TsgcAI_MCP_Session; const aRequest: TsgcAI_MCP_Request_ResourcesRead;
const aResponse: TsgcAI_MCP_Response_ResourcesRead);
begin
if aRequest.Params.Uri = 'file:///project/src/main.rs' then
aResponse.Result.Contents.AddContentText('file:///project/src/main.rs',
'main.rs', 'Rust Software Application Main File', 'text/x-rust',
'fn main() {\n println!(\"Hello world!\");\n}');
end;
詳細情報
詳細なドキュメントとコンポーネントリファレンスについては、こちらをご覧ください。
sgcWebSockets MCP プロンプトリソースガイド
以下は Windows 向けの Delphi MCP サーバーデモです。
