Delphi MCP Sunucusu Kaynakları (4/4)

· Özellikler

MCP'de kaynaklar; sunucunun sunduğu dosyalar, veritabanı kayıtları, oluşturulan belgeler veya dinamik API çıktıları gibi adreslenebilir veri nesnelerini temsil eder.

Bunlar istemci kontrollüdür, yani istemci hangi kaynağı talep edeceğine ve içeriği nasıl yorumlayacağına karar verebilir.





İlgili iki ana metot şunlardır:

Ayrıca, sunucu bildirilen yeteneklerinde resources.listChanged = true olarak ayarlarsa, kaynak kataloğu güncellendiğinde notifications/resources/list_changed gibi bildirimler gönderebilir.

Kaynak Listesi

Sunucu, kaynakların bellek içi bir kataloğunu TsgcAI_MCP_ResourcesList içinde tutar. Kaynakların uri'ye göre benzersiz olması garanti edilir, açıklamalar sunar ve belirtimin resources.list metoduna verilen yanıtta yayımlanan girdi uri'si gibi bir JSON Schema sağlar. Bir istemci resources.list'i çağırdığında, TsgcWSAPIServer_MCP isteği yükler, geçerli kataloğu serileştirir ve 200 HTTP durum koduyla geri gönderir.

Bir dosya kaynağı yayınlayan örnek kod: 

procedure TMainForm.FormCreate(Sender: TObject);
begin
  MCPServer.Resources.Clear;
  MCPServer.Resources.AddResource(
	'file:///project/src/main.rs', // URI
    'main.rs',  // Name
	'Rust Software Application Main File', // Title
    'Primary application entry point', // Description
	'text/x-rust');
end; 

Kaynak İsteği

Bir istemci bir resource.read JSON-RPC isteği yaptığında, TsgcWSAPIServer_MCP , OnMCPRequestResource olayını tetiklemeden önce güçlü bir şekilde türlendirilmiş istek nesnesini (uri kaynağı, ad ve sağlanan argümanlar dahil) doldurur. İşleyiciniz, daha sonra bir başarı HTTP durum koduyla birlikte istemciye geri serileştirilen yanıt yükünü doldurur.

Tipik bir işleyici şöyle görünür: 

procedure OnMCPRequestResource(Sender: TObject;
  const aSession: TsgcAI_MCP_Session; const aRequest: TsgcAI_MCP_Request_ResourcesRead;
  const aResponse: TsgcAI_MCP_Response_ResourcesRead);
begin
  if aRequest.Params.Uri = 'file:///project/src/main.rs' then
    aResponse.Result.Contents.AddContentText('file:///project/src/main.rs',
      'main.rs', 'Rust Software Application Main File', 'text/x-rust',
      'fn main() {\n    println!(\"Hello world!\");\n}');
end; 

Daha Fazla Bilgi

Ayrıntılı belgeler ve bileşen referansı için ziyaret edin:


sgcWebSockets MCP Prompts Resources Kılavuzu 

Aşağıda Windows için bir Delphi MCP Sunucusu Demosu bulabilirsiniz: