Delphi MCP-Server Ressourcen (4/4)

· Funktionen

In MCP repräsentieren Ressourcen adressierbare Datenobjekte, die der Server bereitstellt — etwa Dateien, Datenbankzeilen, erzeugte Dokumente oder dynamische API-Ausgaben.

Sie sind client-gesteuert: Der Client entscheidet, welche Ressource er anfordert und wie er den Inhalt interpretiert.





Die beiden zentralen Methoden sind:

Setzt der Server zusätzlich resources.listChanged = true in seinen Capabilities, kann er Benachrichtigungen wie notifications/resources/list_changed senden, wenn sich der Ressourcen-Katalog aktualisiert.

Ressourcenliste

Der Server hält einen In-Memory-Katalog der Ressourcen in TsgcAI_MCP_ResourcesList. Ressourcen sind per URI eindeutig, tragen Beschreibungen und liefern eine JSON-Schema-ähnliche Eingangs-URI, die in der Antwort auf die Spezifikationsmethode resources.list ausgegeben wird. Wenn ein Client resources.list aufruft, lädt TsgcWSAPIServer_MCP die Anfrage, serialisiert den aktuellen Katalog und sendet ihn mit HTTP-Statuscode 200 zurück.

Beispielcode, der eine Datei-Ressource veröffentlicht: 

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; 

Ressourcen-Request

Wenn ein Client einen JSON-RPC-Aufruf resource.read absetzt, füllt TsgcWSAPIServer_MCP das stark typisierte Request-Objekt (inklusive URI, Name und mitgegebenen Argumenten) und löst dann das Ereignis OnMCPRequestResource aus. Dein Handler füllt das Antwort-Payload, das anschließend serialisiert und zusammen mit einem Erfolgs-HTTP-Statuscode an den Client zurückgegeben wird.

So sieht ein typischer Handler aus: 

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; 

Mehr erfahren

Ausführliche Dokumentation und Komponentenreferenz findest du unter:


sgcWebSockets MCP-Ressourcen-Server-Guide 

Hier findest du eine Delphi-MCP-Server-Demo für Windows: