Client MCP Delphi

· Composants

La version 2025.10.0 de sgcWebSockets enrichit la boîte à outils d'intégration IA avec une implémentation MCP Client de qualité commerciale qui maintient tes applications Delphi en parfaite synchronisation avec la spécification Model Context Protocol 2025-06-18. Fournis un contexte soigné, orchestre les appels d'outils et propose des assistants conscients des ressources, le tout depuis un seul composant. 

Le Model Context Protocol (MCP) standardise la façon dont les assistants négocient leurs capacités et échangent du contexte structuré. En ajoutant la prise en charge du client MCP, sgcWebSockets permet :

Points forts de TsgcAI_MCP_Client

Handshake MCP clé en main 

Exécute la négociation du protocole depuis un seul appel Initialize. Le client annonce le nom, le titre et la version sémantique de ton produit tout en respectant l'identifiant de session renvoyé par le serveur.

Surface de capacités riche

Émets des appels de méthodes prêts à l'emploi : Ping, ToolsList, ToolsCall, PromptsList, PromptsGet, ResourcesList et ResourcesRead. Chaque type de réponse est fortement typé, ce qui rend le traitement en aval sans effort.

Personnalisation pilotée par événements

Accroche-toi à des événements granulaires — initialisation, ping, découverte d'outils, récupération de prompts et streaming de ressources — pour tracer et personnaliser chaque échange avant qu'il n'atteigne ta couche métier.


Le composant incrémente automatiquement les identifiants de requête JSON-RPC, conserve les identifiants de session MCP entre les appels et lève des exceptions typées quand une erreur distante est renvoyée. La connectivité HTTP est encapsulée dans le client spécialisé qui journalise le trafic et négocie TLS 1.3 avec les APIs OpenSSL 3.0.

Aperçu de la configuration

Exemple d'intégration Delphi

L'extrait ci-dessous illustre comment poser le client MCP sur un module de données, l'initialiser au démarrage et servir une réponse d'appel d'outil dès que l'assistant distant la demande. 

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;