Klient MCP dla Delphi

· Komponenty

Wersja 2025.10.0 sgcWebSockets rozszerza zestaw narzędzi integracji AI o komercyjny klient MCP zgodny ze specyfikacją Model Context Protocol 2025-06-18. Dostarczaj starannie dobrany kontekst, orkiestruj wywołania narzędzi i obsługuj asystentów świadomych zasobów — wszystko z jednego komponentu.

Model Context Protocol (MCP) standaryzuje sposób, w jaki asystenci negocjują możliwości i wymieniają ustrukturyzowany kontekst. Dodając obsługę klienta MCP, sgcWebSockets umożliwia:

Najważniejsze cechy TsgcAI_MCP_Client

Gotowy uścisk dłoni MCP

Wykonaj negocjację protokołu za pomocą jednego wywołania Initialize. Klient ogłasza nazwę produktu, tytuł i wersję semantyczną, honorując jednocześnie identyfikator sesji zwrócony przez serwer.

Bogaty zestaw możliwości

Wykonuj gotowe wywołania metod, w tym Ping, ToolsList, ToolsCall, PromptsList, PromptsGet, ResourcesList i ResourcesRead. Każdy typ odpowiedzi jest silnie typowany, co ułatwia dalsze przetwarzanie.

Dostosowanie sterowane zdarzeniami

Podpinaj się pod szczegółowe zdarzenia — inicjalizację, ping, odkrywanie narzędzi, pobieranie podpowiedzi i przesyłanie zasobów strumieniowo — aby śledzić i personalizować każdą wymianę przed dotarciem do warstwy biznesowej.


Komponent automatycznie inkrementuje identyfikatory żądań JSON-RPC, przechowuje identyfikatory sesji MCP między wywołaniami i zgłasza typowane wyjątki po otrzymaniu zdalnego błędu. Łączność HTTP jest zamknięta w wyspecjalizowanym kliencie, który rejestruje ruch i negocjuje TLS 1.3 z API OpenSSL 3.0.

Przegląd konfiguracji

Przykład integracji z Delphi

Poniższy fragment kodu pokazuje, jak umieścić klienta MCP na module danych, zainicjować go podczas uruchamiania i obsłużyć odpowiedź na wywołanie narzędzia, gdy tylko zdalny asystent o to poprosi.

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;