MCP Authentication Delphi

· Fonctionnalités

La version 2025.10.0 de sgcWebSockets renforce la connectivité Model Context Protocol (MCP) avec une couche d'authentification durcie pour les composants client et serveur. Cet article met en évidence comment les nouvelles capacités combinent un contrôle d'accès de niveau entreprise avec le workflow de développement rapide attendu de sgcWebSockets par les équipes Delphi.

Nouveautés

Client MCP

Le client MCP expose tous les leviers de sécurité via la propriété MCPOptions.AuthenticationOptions. Active indépendamment les flux par clé API ou par en-tête personnalisé pour satisfaire les politiques zero-trust ou par locataire ; le composant injecte alors les en-têtes requis lors de chaque POST HTTP et upgrade SSE.


Associé aux heartbeats, aux métadonnées client et à la personnalisation HTTP/TLS, tu peux aligner les conversations MCP sur la checklist de conformité de ton organisation sans sacrifier la vitesse de développement.

Serveur MCP

Le serveur reflète les contrôles client avec des objets de configuration dédiés pour l'endpoint, le transport et MCP. À l'arrivée des requêtes, le composant valide chaque en-tête entrant et lève une erreur descriptive si un identifiant est manquant ou incorrect. Parce que la validation a lieu avant que la requête n'entre dans ta logique métier, tu stoppes les abus tôt et tu gardes ton code centré sur la valeur du domaine.

Avantages métier et techniques

Exemple Delphi

L'extrait suivant montre comment une seule routine de configuration peut activer MCP Authentication à la fois pour un client et un serveur en Delphi. Adapte les valeurs d'identification à ton environnement. 

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;