Delphi MCP 服务器资源(4/4)

· 功能

MCP 中,资源代表服务器公开的可寻址数据对象,如文件、数据库记录、生成的文档或动态 API 输出。

它们由客户端控制,客户端可以决定请求哪个资源以及如何解释内容。





涉及的两种主要方法是:

此外,如果服务器在其声明的能力中将 resources.listChanged 设置为 true,则可以在资源目录更新时发送 notifications/resources/list_changed 等通知。

资源列表

服务器在 TsgcAI_MCP_ResourcesList 中保存资源的内存目录。资源通过 uri 保证唯一性,公开描述并提供类似 JSON Schema 的输入 uri,该 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 提示词资源指南

以下提供 Delphi MCP 服务器 Windows 演示: