MCP Client
TsgcWSAPIClient_MCP 是 Model Context Protocol 的客户端一侧。它可通过 HTTP、HTTP Streamable 或本地 stdio 子进程连接到任意 MCP 服务器,列出该服务器提供的工具、提示词和资源,并从您的代码中调用它们。
TsgcWSAPIClient_MCP 是 Model Context Protocol 的客户端一侧。它可通过 HTTP、HTTP Streamable 或本地 stdio 子进程连接到任意 MCP 服务器,列出该服务器提供的工具、提示词和资源,并从您的代码中调用它们。
一个支持三种传输的 JSON-RPC MCP 客户端。它执行 initialize 握手、跟踪会话、发起请求,并回应您的应用程序选择支持的那些服务器发起的请求。
TsgcWSAPIClient_MCP
使用 MCP 服务器
Windows、macOS、Linux、iOS 和 Android
sgcAI 是自包含的。该组件随 sgcAI 一同交付,并附带它所基于的 sgcWebSockets Core 运行时。
设置传输及其选项,执行 initialize,然后列出并调用工具、提示词和资源。
uses
sgcAI, sgcAI_MCP_Classes, sgcAI_MCP_Types;
var
oMCP: TsgcWSAPIClient_MCP;
begin
oMCP := TsgcWSAPIClient_MCP.Create(nil);
// Remote server over streamable HTTP.
oMCP.MCPOptions.Transport := aimcptrHttpStreamable;
oMCP.MCPOptions.HttpOptions.URL := 'https://mcp.example.com/mcp';
oMCP.MCPOptions.ClientInfo.Name := 'sgc-mcp-client';
oMCP.MCPOptions.ClientInfo.Version := '1.0.0';
oMCP.MCPOptions.AuthenticationOptions.ApiKey.Enabled := True;
oMCP.MCPOptions.AuthenticationOptions.ApiKey.Value := 'mcp-...';
oMCP.OnMCPListTools := MCPListTools;
oMCP.OnMCPResponseTool := MCPToolResponse;
oMCP.Initialize;
oMCP.ListTools;
oMCP.RequestTool('GetTemperature', vArguments); // vArguments: IsgcJSON
end;
// Or spawn a local MCP server as a subprocess instead:
oMCP.MCPOptions.Transport := aimcptrStdio;
oMCP.MCPOptions.StdioOptions.Command := 'C:\tools\my-mcp-server.exe';
oMCP.MCPOptions.StdioOptions.Arguments := '--stdio';
// includes: sgcAI.hpp, sgcAI_MCP_Classes.hpp, sgcAI_MCP_Types.hpp
TsgcWSAPIClient_MCP *oMCP = new TsgcWSAPIClient_MCP(NULL);
oMCP->MCPOptions->Transport = aimcptrHttpStreamable;
oMCP->MCPOptions->HttpOptions->URL = "https://mcp.example.com/mcp";
oMCP->MCPOptions->ClientInfo->Name = "sgc-mcp-client";
oMCP->OnMCPListTools = MCPListTools;
oMCP->OnMCPResponseTool = MCPToolResponse;
oMCP->Initialize();
oMCP->ListTools();
您最常使用的成员。
MCPOptions.Transport 可选择 aimcptrHttp(基于 POST 的普通 JSON-RPC)、aimcptrHttpStreamable(保持连接并附带一条 SSE 通知流),或 aimcptrStdio(把本地服务器作为子进程启动)。
HttpOptions 承载 URL、TLS 选项和日志设置。StdioOptions 为子进程承载 Command、Arguments、WorkingDir、Environment 和 Timeout。
AuthenticationOptions 支持 API 密钥、自定义头部,或完整的 OAuth 2.0 流程(含身份断言),这正是公共 MCP 服务器越来越普遍的要求。
Initialize 执行握手,Ping 检查存活状态。HeartBeat 会定期发送 ping,避免空闲会话被断开,而 Session 暴露已协商的会话状态。
ListTools 与 RequestTool、ListPrompts 与 RequestPrompt、ListResources、ListResourceTemplates 和 RequestResource。列表方法接受一个游标参数以便分页。
SubscribeResource 和 UnsubscribeResource 用于跟踪某个资源的变化,SetLoggingLevel 调整服务器端的日志详细程度,Complete 用于请求参数补全。
当服务器向客户端索取文件系统根目录、模型补全或用户输入时,OnMCPListRoots、OnMCPSamplingCreateMessage 和 OnMCPElicitationCreate 会被触发,由您的应用程序给出答案。对于在 Multi Round-Trip Requests (MRTR) 之外直接发送这些请求的旧版(2025-11-25 或更早)服务器,只要处理程序返回,回复就会自动发送回去。
OnMCPInitialize、OnMCPPing、OnMCPListTools、OnMCPResponseTool、OnMCPListPrompts、OnMCPResponsePrompt、OnMCPListResources、OnMCPResponseResource 和 OnMCPStreamMessage。
MCPOptions.ProtocolEra 可选择 Auto、Modern 或 Legacy。在 Auto 模式下,客户端会调用 server/discover,遇到较旧的服务器时回退到 2025-11-25 的 initialize 握手。Discover、NegotiatedEra 和 OnMCPDiscover 暴露检测结果。
当服务器需要征询、采样或 roots 才能完成一次调用时,OnMCPInputRequired 会携带这些请求被触发。填入答案后,客户端会携带签名的 requestState 重试,最多重试 MCPOptions.MRTR.MaxRounds 次。
SubscriptionsListen 打开一个用于接收列表变更和资源更新的流,通过 OnMCPListChanged 和 OnMCPResourcesUpdated 传递。SubscriptionsCancel 用于关闭该流。
MCPOptions.Tasks.Enabled 用于声明该扩展;AutoPoll 会自动轮询正在运行的任务。TasksGet、TasksUpdate 和 TasksCancel 是手动调用的方法,OnMCPTaskCreated、OnMCPTaskStatus 和 OnMCPTaskCompleted 报告进度。
MCPOptions.Authorization 发现受保护资源的元数据,通过 Client ID Metadata Documents 或带 application_type 的动态注册完成注册,使用 PKCE 和 resource indicators,校验 iss(RFC 9207),并按 issuer 分别保存凭据。
该组件所用服务和协议的权威资料来源。