MCP Authentication Delphi

· Funktionen

Das Release 2025.10.0 von sgcWebSockets hebt die Model Context Protocol (MCP)-Konnektivität auf ein neues Niveau, mit einer gehärteten Authentifizierungsschicht für sowohl Client- als auch Server-Komponenten. Dieser Artikel zeigt, wie die neuen Funktionen Zugriffskontrolle auf Unternehmensniveau mit dem schnellen Entwicklungs-Workflow verbinden, den Delphi-Teams von sgcWebSockets erwarten.

Was ist neu

MCP Client

Der MCP-Client stellt alle Sicherheitsschalter über die Eigenschaft MCPOptions.AuthenticationOptions bereit. Aktiviere API-Schlüssel- oder Custom-Header-Flows unabhängig voneinander, um Zero-Trust- oder mandantenbasierte Richtlinien zu erfüllen, und die Komponente fügt die benötigten Header bei jedem HTTP-POST und SSE-Upgrade automatisch ein.


Zusammen mit Heartbeats, Client-Metadaten und HTTP/TLS-Anpassung kannst du MCP-Konversationen an die Compliance-Checkliste deines Unternehmens anpassen, ohne Entwicklungsgeschwindigkeit zu opfern.

MCP Server

Der Server spiegelt die Client-Steuerungen mit dedizierten Endpunkt-, Transport- und MCP-Konfigurationsobjekten. Sobald Anfragen eintreffen, validiert die Komponente jeden eingehenden Header und löst einen aussagekräftigen Fehler aus, wenn ein Credential fehlt oder falsch ist. Da die Validierung erfolgt, bevor die Anfrage in deine Geschäftslogik gelangt, stoppst du Missbrauch früh und hältst deinen Code auf den fachlichen Mehrwert fokussiert.

Geschäftliche und technische Vorteile

Delphi-Beispiel

Das folgende Snippet zeigt, wie eine einzige Konfigurationsroutine die MCP-Authentifizierung sowohl für einen Client als auch für einen Server in Delphi aktivieren kann. Passe die Credential-Werte an deine Umgebung an. 

procedure SetupMCPInfrastructure;
var
  MCPClient: TsgcWSAPIClient_MCP;
  MCPServer: TsgcWSServer_API_MCP;
begin
  MCPClient := TsgcWSAPIClient_MCP.Create(nil);
  MCPServer := TsgcWSServer_API_MCP.Create(nil);
  try
    // Client configuration
    MCPClient.MCPOptions.HttpOptions.URL := 'https://mcp.example.com/api';
    MCPClient.MCPOptions.AuthenticationOptions.ApiKey.Enabled := True;
    MCPClient.MCPOptions.AuthenticationOptions.ApiKey.Value := 'YOUR_API_KEY';
    MCPClient.MCPOptions.AuthenticationOptions.CustomHeader.Enabled := True;
    MCPClient.MCPOptions.AuthenticationOptions.CustomHeader.Header := 'X-Tenant';
    MCPClient.MCPOptions.AuthenticationOptions.CustomHeader.Value := 'Retail';
    MCPClient.MCPOptions.ClientInfo.Name := 'RetailAgent';
    MCPClient.MCPOptions.ClientInfo.Version := '2025.10.0';
    MCPClient.MCPOptions.HeartBeat.Enabled := True;
    MCPClient.MCPOptions.HeartBeat.Interval := 30;
    MCPClient.OnMCPInitialize := HandleMCPInitialize;
    MCPClient.OnMCPListTools := HandleMCPTools;
    MCPClient.Initialize;
    MCPClient.ListTools;
    // Server configuration
    MCPServer.EndpointOptions.Endpoint := '/mcp';
    MCPServer.MCPOptions.AuthenticationOptions.ApiKey.Enabled := True;
    MCPServer.MCPOptions.AuthenticationOptions.ApiKey.Value := 'YOUR_API_KEY';
    MCPServer.MCPOptions.AuthenticationOptions.CustomHeader.Enabled := True;
    MCPServer.MCPOptions.AuthenticationOptions.CustomHeader.Header := 'X-Tenant';
    MCPServer.MCPOptions.AuthenticationOptions.CustomHeader.Value := 'Retail';
    MCPServer.OnMCPInitialize := HandleServerInitialize;
    MCPServer.OnMCPRequestTool := HandleToolRequest;
    MCPServer.Active := True;
  finally
    MCPClient.Free;
    MCPServer.Free;
  end;
end;