Delphi MCP-Client

· Komponenten

Version 2025.10.0 von sgcWebSockets erweitert das KI-Integrations-Toolkit um eine MCP-Client-Implementierung auf Unternehmensniveau, die deine Delphi-Anwendungen exakt im Einklang mit der Model-Context-Protocol-Spezifikation 2025-06-18 hält. Liefere kuratierten Kontext, orchestriere Tool-Aufrufe und bediene ressourcenbewusste Assistenten — alles aus einer einzigen Komponente. 

Das Model Context Protocol (MCP) standardisiert, wie Assistenten Fähigkeiten aushandeln und strukturierten Kontext austauschen. Mit der MCP-Client-Unterstützung ermöglicht sgcWebSockets:

Höhepunkte von TsgcAI_MCP_Client

Schlüsselfertiges MCP-Handshake 

Führe die Protokollaushandlung mit einem einzigen Initialize-Aufruf durch. Der Client kommuniziert deinen Produktnamen, Titel und die semantische Version und übernimmt die vom Server zurückgegebene Session-ID.

Umfangreiche Fähigkeiten

Setze fertige Methodenaufrufe ab: Ping, ToolsList, ToolsCall, PromptsList, PromptsGet, ResourcesList und ResourcesRead. Jede Antwort ist stark typisiert, sodass die nachgelagerte Verarbeitung mühelos ist.

Ereignisgesteuerte Anpassung

Klinke dich in feingranulare Ereignisse ein — Initialisierung, Ping, Tool-Discovery, Prompt-Abruf und Ressourcen-Streaming —, um jede Interaktion zu tracen und zu personalisieren, bevor sie deine Geschäftslogik erreicht.


Die Komponente erhöht automatisch die JSON-RPC-Request-IDs, hält MCP-Session-IDs über Aufrufe hinweg und löst typisierte Exceptions aus, wenn ein Remote-Fehler zurückkommt. Die HTTP-Konnektivität ist in einem spezialisierten Client gekapselt, der Traffic loggt und TLS 1.3 über die OpenSSL-3.0-APIs aushandelt.

Konfigurations-Übersicht

Delphi-Integrationsbeispiel

Das folgende Snippet zeigt, wie du den MCP-Client auf ein Data-Modul platzierst, ihn beim Start initialisierst und eine Antwort auf einen Tool-Aufruf lieferst, sobald der entfernte Assistent danach fragt. 

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;