Delphi MCP サーバー: リソース

· 機能

MCP において、リソースはサーバーが公開するアドレス指定可能なデータオブジェクトを表します。ファイル、データベースレコード、生成ドキュメント、動的 API 出力などが含まれます。

リソースはクライアント制御であり、クライアントがどのリソースを要求するか、またコンテンツをどのように解釈するかを決定できます。





関連する主な 2 つのメソッドは次のとおりです。

また、サーバーが宣言した機能で 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_MCPOnMCPRequestResource イベントを発生させる前に、強く型付けされたリクエストオブジェクト(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 サーバーデモです。