Cliente MCP para Delphi

· Componentes

La versión 2025.10.0 de sgcWebSockets amplía el toolkit de integración de IA con una implementación de cliente MCP de calidad empresarial que mantiene tus aplicaciones Delphi alineadas con la especificación Model Context Protocol 2025-06-18. Ofrece contexto curado, orquesta llamadas a herramientas y atiende asistentes con conciencia de recursos, todo desde un único componente. 

El Model Context Protocol (MCP) estandariza cómo los asistentes negocian capacidades e intercambian contexto estructurado. Añadiendo soporte de cliente MCP, sgcWebSockets habilita:

Aspectos destacados de TsgcAI_MCP_Client

Handshake MCP llave en mano 

Ejecuta la negociación del protocolo desde una única llamada Initialize. El cliente anuncia el nombre, el título y la versión semántica de tu producto, y respeta el identificador de sesión devuelto por el servidor.

Amplia superficie de capacidades

Lanza llamadas a métodos listos para usar como Ping, ToolsList, ToolsCall, PromptsList, PromptsGet, ResourcesList y ResourcesRead. Cada tipo de respuesta está fuertemente tipado, lo que simplifica el procesamiento posterior.

Personalización dirigida por eventos

Engánchate a eventos granulares —inicialización, ping, descubrimiento de herramientas, recuperación de prompts y streaming de recursos— para trazar y personalizar cada intercambio antes de que llegue a tu capa de negocio.


El componente incrementa automáticamente los identificadores de petición JSON-RPC, persiste los identificadores de sesión MCP entre llamadas y lanza excepciones tipadas cuando se devuelve un error remoto. La conectividad HTTP está encapsulada en un cliente especializado que registra el tráfico y negocia TLS 1.3 con las APIs de OpenSSL 3.0.

Resumen de configuración

Ejemplo de integración en Delphi

El fragmento siguiente muestra cómo soltar el cliente MCP en un data module, inicializarlo al arrancar y servir una respuesta a una llamada de herramienta en cuanto el asistente remoto la solicite. 

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;