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
- Çift taraflı uygulama: istemci kitaplıkları, sunucunun doğruladığı başlıkları otomatik olarak içerir; keşif ile uygulama arasındaki boşlukları kapatır.
- Taşıma farkındalığı: kimlik doğrulama, isteklerin klasik HTTP mi yoksa SSE gibi akış destekli taşımalar mı kullandığından bağımsız olarak çalışır; böylece akışı güvenle benimseyebilirsiniz.
- Ticari hazırlık: hazır özellikler, doğrulama kancaları ve telemetri olayları, denetime tabi iş yüklerini denetleme maliyetini azaltır.
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.
- Özel Başlık kimlik doğrulaması, özel bir başlık/değer çifti ayarlamanıza olanak tanır (örneğin
X-TenantveyaX-Region). - API Anahtarı/Bearer token desteği, standart
Authorization: Bearerbaşlığını otomatik olarak biçimlendirerek ağ geçitleri ve API yönetim katmanlarıyla uyumluluk sağlar. - Oturum yayılımı, MCP oturum tanımlayıcısını istekler arasında senkronize tutar ve gözlemlenebilirliği basitleştirir.
- Akışa hazır: taşıma
aimcptrHttpStreamable'a geçer geçmez, istemci aynı kimliği doğrulanmış başlıkları koruyan bir SSE thread'i başlatır.
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.
- Merkezi başlık doğrulaması, gerekli başlık/değer çifti yoksa veya eşleşmiyorsa istekleri hemen reddeder.
- Bearer token doğrulaması, sunucu tarafı API anahtarının istemci tarafından kullanılan
Authorizationbaşlığıyla eşleştiğini kontrol eder. - Birleşik olaylar: başlatma, oturum yaşam döngüsü ve prompt/kaynak/araç işleyicileri kullanılabilir kalır; böylece kimliği doğrulanmış oturumlara gerçek zamanlı olarak yanıt verebilirsiniz.
İş ve teknik avantajlar
- Satabileceğiniz güvenlik: müşteriler kimliği doğrulanmış yapay zeka otomasyonları talep eder ve MCP Kimlik Doğrulama, RFP'lere veya uyumluluk anketlerine yanıt verirken anahtar teslim bir çözüm sunar.
- Operasyonel verimlilik: yöneticiler kimlik bilgilerini dağınık kod değişiklikleri yerine basit bileşen özellikleri aracılığıyla yönetir.
- Ölçeklenebilir yönetişim: kiracı başına başlıklar, tek bir ikili dosyayı korurken oturumları belirli arka uçlara yönlendirmeyi veya hız limitleri uygulamayı kolaylaştırır.
- Geleceğe hazırlık: kimlik doğrulama kodu çekirdek MCP taşımasının bir parçası olduğundan, yeni protokol eklemeleri aynı koruma önlemlerini otomatik olarak devralır.
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;
