MCP-authenticatie in Delphi

· Functies

De release 2025.10.0 van sgcWebSockets tilt Model Context Protocol(MCP)-connectiviteit naar een hoger niveau met een versterkte authenticatielaag voor zowel client- als servercomponenten. Dit artikel laat zien hoe de nieuwe mogelijkheden toegangsbeheer op enterprise-niveau combineren met de snelle ontwikkelworkflow die Delphi-teams van sgcWebSockets verwachten.

Wat is nieuw

MCP-client

De MCP-client maakt alle beveiligingsinstellingen beschikbaar via de property MCPOptions.AuthenticationOptions. Schakel onafhankelijk API key- of custom-header-flows in om aan zero-trust- of tenant-gebaseerde policies te voldoen; de component voegt de vereiste headers automatisch toe bij elke HTTP POST en SSE-upgrade.


Samen met heartbeats, clientmetadata en aanpassingen van HTTP/TLS kun je MCP-conversaties laten aansluiten op de compliance-checklist van je organisatie zonder ontwikkelsnelheid in te leveren.

MCP-server

De server weerspiegelt de bedieningselementen van de client met aparte configuratie-objecten voor endpoint, transport en MCP. Wanneer aanvragen binnenkomen, valideert de component elke binnenkomende header en geeft hij een beschrijvende fout terug wanneer een credential ontbreekt of onjuist is. Omdat de validatie plaatsvindt voordat de aanvraag je business-logica bereikt, stop je misbruik vroegtijdig en blijft je code gericht op functionele waarde.

Zakelijke en technische voordelen

Delphi-voorbeeld

Het volgende fragment laat zien hoe een enkele configuratieroutine MCP-authenticatie voor zowel een client als een server in Delphi kan inschakelen. Pas de credential-waarden aan je omgeving aan. 

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;