Cliente Delphi MCP

· Componentes

A versão 2025.10.0 do sgcWebSockets expande o toolkit de integração com IA com uma implementação de Cliente MCP de nível comercial que mantém suas aplicações Delphi em sintonia com a especificação Model Context Protocol 2025-06-18. Entregue contexto curado, orquestre chamadas de ferramentas e atenda a assistentes cientes de recursos, tudo a partir de um único componente. 

O Model Context Protocol (MCP) padroniza como assistentes negociam capabilities e trocam contexto estruturado. Ao adicionar suporte ao Cliente MCP, o sgcWebSockets viabiliza:

Destaques do TsgcAI_MCP_Client

Handshake MCP turnkey 

Execute a negociação do protocolo a partir de uma única chamada Initialize. O cliente anuncia o nome, título e versão semântica do seu produto enquanto respeita o identificador de sessão retornado pelo servidor.

Superfície rica de capabilities

Emita chamadas de métodos prontos para uso, incluindo Ping, ToolsList, ToolsCall, PromptsList, PromptsGet, ResourcesList e ResourcesRead. Cada tipo de resposta é fortemente tipado, tornando o processamento downstream trivial.

Personalização orientada a eventos

Engate-se em eventos granulares — inicialização, ping, descoberta de ferramentas, recuperação de prompts e streaming de recursos — para rastrear e personalizar cada troca antes que ela alcance sua camada de negócio.


O componente incrementa automaticamente os identificadores de requisição JSON-RPC, persiste os identificadores de sessão MCP entre as chamadas e dispara exceções tipadas quando um erro remoto é retornado. A conectividade HTTP é encapsulada dentro do cliente especializado que registra o tráfego e negocia TLS 1.3 com APIs do OpenSSL 3.0.

Visão geral da configuração

Exemplo de integração Delphi

O trecho abaixo ilustra como soltar o Cliente MCP em um data module, inicializá-lo durante o startup e atender a uma resposta de chamada de ferramenta assim que o assistente remoto a solicitar. 

uses
  sgcAI_MCP_Client, sgcJSON;
procedure TdmMCP.StartMCP;
begin
  sgcMCP := TsgcAI_MCP_Client.Create(Self);
  sgcMCP.MCPOptions.ClientInfo.Name := 'sgc-demo-pos';
  sgcMCP.MCPOptions.ClientInfo.Title := 'Smart POS Assistant';
  sgcMCP.MCPOptions.ClientInfo.Version := '2025.10.0';
  sgcMCP.MCPOptions.ServerOptions.URL := 'https://mcp.partnercloud.com';
  sgcMCP.OnMCPInitialize := DoMCPInitialize;
  sgcMCP.OnMCPToolsCall := DoMCPToolsCall;
  sgcMCP.Initialize;
end;
procedure TdmMCP.DoMCPInitialize(Sender: TObject;
  const Request: TsgcAI_MCP_Request_Initialize;
  const Response: TsgcAI_MCP_Response_Initialize;
  var Accept: Boolean);
begin
  Accept := Response.ServerInfo.SupportsTools('inventory.lookup');
end;
procedure TdmMCP.DoMCPToolsCall(Sender: TObject;
  const Request: TsgcAI_MCP_Request_ToolsCall;
  const Response: TsgcAI_MCP_Response_ToolsCall);
var
  ResultPayload: IsgcJSON;
begin
  if Request.Params.Name = 'inventory.lookup' then
  begin
    ResultPayload := TsgcJSON.CreateObject;
    ResultPayload['sku'] := Request.Params.Arguments['sku'];
    ResultPayload['availability'] := 'in-stock';
    Response.Result := ResultPayload;
  end;
end;