Autenticación MCP en Delphi

· Características
Autenticación MCP en Delphi | Blog de eSeGeCe

La versión 2025.10.0 de sgcWebSockets eleva la conectividad Model Context Protocol (MCP) con una capa de autenticación reforzada para los componentes cliente y servidor. Este artículo destaca cómo las nuevas capacidades combinan control de acceso de calidad empresarial con el flujo de desarrollo rápido que los equipos Delphi esperan de sgcWebSockets.

Novedades

Cliente MCP

El cliente MCP expone todos los ajustes de seguridad mediante la propiedad MCPOptions.AuthenticationOptions. Activa los flujos de API key o de cabecera personalizada de forma independiente para satisfacer políticas zero-trust o basadas en tenant, y el componente inyecta las cabeceras necesarias durante cada HTTP POST y upgrade SSE.


Junto con heartbeats, metadatos de cliente y personalización HTTP/TLS, puedes alinear las conversaciones MCP con el checklist de compliance de tu organización sin sacrificar la velocidad de desarrollo.

Servidor MCP

El servidor refleja los controles del cliente con objetos dedicados de endpoint, transporte y configuración MCP. A medida que llegan peticiones, el componente valida cada cabecera entrante y lanza un error descriptivo cuando una credencial falta o es incorrecta. Como la validación ocurre antes de que la petición entre en tu lógica de negocio, detienes el mal uso temprano y mantienes tu código centrado en el valor del dominio.

Ventajas de negocio y técnicas

Ejemplo Delphi

El siguiente fragmento muestra cómo una única rutina de configuración puede activar la autenticación MCP tanto para un cliente como para un servidor en Delphi. Adapta los valores de credenciales a tu entorno. 

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; 

Relacionado