Delphi MCP-server-resources (4/4)

· Functies

In MCP vertegenwoordigen resources adresseerbare data-objecten die de server beschikbaar stelt, zoals bestanden, database-records, gegenereerde documenten of dynamische API-outputs.

Ze worden door de client gestuurd, wat betekent dat de client kan beslissen welke resource hij opvraagt en hoe hij de inhoud interpreteert.





De twee belangrijkste methoden hierbij zijn:

Daarnaast kan de server, als hij resources.listChanged = true heeft ingesteld in zijn gedeclareerde capabilities, meldingen versturen zoals notifications/resources/list_changed wanneer de resource-catalogus wordt bijgewerkt.

Resources-lijst

De server houdt een in-memory catalogus van resources bij in TsgcAI_MCP_ResourcesList. Resources zijn gegarandeerd uniek op uri, bieden beschrijvingen en leveren een JSON-Schema zoals een input-uri die in het antwoord op de resources.list-methode van de specificatie wordt meegegeven. Wanneer een client resources.list aanroept, laadt TsgcWSAPIServer_MCP het request, serialiseert de huidige catalogus en stuurt deze terug met een 200 HTTP-statuscode.

Voorbeeldcode die een bestandsresource publiceert: 

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;

Resources-request

Wanneer een client een resource.read JSON-RPC-request verstuurt, vult TsgcWSAPIServer_MCP het sterk getypeerde request-object (inclusief uri-resource, naam en de meegegeven argumenten) voordat het event OnMCPRequestResource wordt aangeroepen. Je handler vult vervolgens de response-payload die wordt geserialiseerd en samen met een succesvolle HTTP-statuscode naar de client wordt teruggestuurd.

Een typische handler ziet er zo uit: 

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() {
    println!(\"Hello world!\");
}');
end;

Meer informatie

Voor uitgebreide documentatie en component-referentie, bezoek:


sgcWebSockets MCP Prompts Resources Guide 

Hieronder vind je een Delphi MCP-server-demo voor Windows: