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
- Doppelte Durchsetzung: Client-Bibliotheken senden automatisch die Header mit, die der Server überprüft, und schließen so Lücken zwischen Discovery und Enforcement.
- Transport-Bewusstsein: Die Authentifizierung funktioniert unabhängig davon, ob Anfragen klassisches HTTP oder Streaming-Transporte wie SSE verwenden, sodass du Streaming mit Vertrauen einsetzen kannst.
- Kommerzielle Einsatzbereitschaft: Vorgefertigte Eigenschaften, Validierungs-Hooks und Telemetrie-Ereignisse senken die Kosten für die Auditierung regulierter Workloads.
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.
- Custom-Header-Authentifizierung erlaubt das Setzen eines eigenen Header/Wert-Paares (zum Beispiel
X-TenantoderX-Region). - API-Schlüssel/Bearer-Token-Unterstützung formatiert automatisch den Standard-Header
Authorization: Bearerund stellt damit die Kompatibilität mit Gateways und API-Management-Layern sicher. - Session-Propagation hält den MCP-Session-Identifier über Anfragen hinweg synchronisiert und vereinfacht so die Beobachtbarkeit.
- Streaming-bereit: Sobald der Transport auf
aimcptrHttpStreamableumschaltet, startet der Client einen SSE-Thread, der dieselben authentifizierten Header beibehält.
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.
- Zentralisierte Header-Validierung lehnt Anfragen sofort ab, wenn das erforderliche Header/Wert-Paar fehlt oder nicht übereinstimmt.
- Bearer-Token-Verifizierung prüft, ob der serverseitige API-Schlüssel mit dem vom Client verwendeten
Authorization-Header übereinstimmt. - Einheitliche Ereignisse: Initialisierung, Session-Lebenszyklus und Prompt-/Resource-/Tool-Handler bleiben verfügbar, sodass du in Echtzeit auf authentifizierte Sessions reagieren kannst.
Geschäftliche und technische Vorteile
- Sicherheit, die du verkaufen kannst: Kunden verlangen authentifizierte KI-Automatisierungen, und MCP-Authentifizierung liefert eine schlüsselfertige Antwort auf Ausschreibungen und Compliance-Fragebögen.
- Betriebliche Effizienz: Administratoren verwalten Credentials über einfache Komponenten-Eigenschaften statt über verstreute Code-Änderungen.
- Skalierbare Governance: Mandantenbezogene Header machen es einfach, Sessions an bestimmte Backends zu routen oder Rate Limits anzuwenden, während ein einziges Binary beibehalten wird.
- Zukunftssicher: Da der Authentifizierungscode Teil des Kern-MCP-Transports ist, erben neue Protokollerweiterungen automatisch dieselben Schutzmechanismen.
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;
