MCP Authentication Delphi

· Özellikler

sgcWebSockets'in 2025.10.0 sürümü, hem istemci hem de sunucu bileşenleri için güçlendirilmiş bir kimlik doğrulama katmanıyla Model Context Protocol (MCP) bağlantısını yükseltir. Bu makale, yeni yeteneklerin kurumsal düzeyde erişim kontrolünü, Delphi ekiplerinin sgcWebSockets'ten beklediği hızlı geliştirme iş akışıyla nasıl birleştirdiğini vurgular.

Yenilikler

MCP İstemcisi

MCP istemcisi, tüm güvenlik ayarlarını MCPOptions.AuthenticationOptions özelliği aracılığıyla sunar. Zero-trust veya kiracı tabanlı politikaları karşılamak için API anahtarı ya da özel başlık akışlarını bağımsız olarak etkinleştirin; bileşen, her HTTP POST ve SSE yükseltmesi sırasında gerekli başlıkları enjekte eder.


Sinyaller (heartbeat), istemci meta verileri ve HTTP/TLS özelleştirmesiyle birlikte, MCP konuşmalarını geliştirici hızından ödün vermeden kuruluşunuzun uyumluluk kontrol listesiyle uyumlu hale getirebilirsiniz.

MCP Sunucusu

Sunucu, özel uç nokta, taşıma ve MCP yapılandırma nesneleriyle istemci kontrollerini yansıtır. İstekler geldikçe, bileşen gelen her başlığı doğrular ve bir kimlik bilgisi eksik veya yanlış olduğunda açıklayıcı bir hata oluşturur. Doğrulama, istek iş mantığınıza girmeden önce gerçekleştiğinden, kötüye kullanımı erkenden durdurur ve kodunuzu alan değerine odaklı tutarsınız.

İş ve teknik avantajlar

Delphi Örneği

Aşağıdaki kod parçası, tek bir yapılandırma rutininin Delphi'de hem bir istemci hem de bir sunucu için MCP Kimlik Doğrulamayı nasıl etkinleştirebileceğini gösterir. Kimlik bilgisi değerlerini kendi ortamınıza uyarlayın. 

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;