Delphi MCP-client

· Componenten

Versie 2025.10.0 van sgcWebSockets breidt de AI-integratietoolkit uit met een MCP-client-implementatie van commerciele kwaliteit die je Delphi-toepassingen synchroon houdt met de Model Context Protocol 2025-06-18-specificatie. Lever zorgvuldig samengestelde context, orkestreer tool-aanroepen en bedien resource-bewuste assistenten, allemaal vanuit een enkel component. 

Het Model Context Protocol (MCP) standaardiseert hoe assistenten capabilities onderhandelen en gestructureerde context uitwisselen. Door MCP-client-ondersteuning toe te voegen, maakt sgcWebSockets het volgende mogelijk:

Hoogtepunten van TsgcAI_MCP_Client

Kant-en-klare MCP-handshake 

Voer de protocol-onderhandeling uit met een enkele Initialize-aanroep. De client meldt je productnaam, titel en semantische versie en respecteert daarbij de sessie-identifier die door de server wordt teruggegeven.

Rijke capability-surface

Verstuur kant-en-klare methode-aanroepen zoals Ping, ToolsList, ToolsCall, PromptsList, PromptsGet, ResourcesList en ResourcesRead. Elk response-type is sterk getypeerd, waardoor verdere verwerking moeiteloos verloopt.

Event-driven maatwerk

Haak in op gedetailleerde events — initialisatie, ping, tool-discovery, prompt-ophaling en resource-streaming — om elke uitwisseling te tracen en te personaliseren voordat deze je business-laag bereikt.


Het component verhoogt automatisch de JSON-RPC-request-identifiers, bewaart MCP-sessie-identifiers tussen aanroepen en gooit getypeerde excepties wanneer een remote-fout wordt geretourneerd. De HTTP-connectiviteit is ingekapseld in de gespecialiseerde client die het verkeer logt en TLS 1.3 onderhandelt met OpenSSL 3.0-API's.

Configuratieoverzicht

Delphi-integratievoorbeeld

Het onderstaande fragment laat zien hoe je de MCP-client op een data-module plaatst, hem tijdens het opstarten initialiseert en een tool-call-response levert zodra de remote-assistent erom vraagt. 

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;