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:
- resources/list: vraagt de lijst op van alle beschikbare resource-definities die de server beschikbaar stelt. Wordt intern afgehandeld door het component TsgcWSAPIServer_MCP.
- resources/read: haalt de inhoud en optionele metadata van een specifieke resource op. Het event OnMCPRequestResource wordt aangeroepen wanneer er een nieuw request binnenkomt op de server. Een resource bevat meestal:
- uri: resource-identifier.
- mimeType: content-type (text/plain, application/json, image/png, enz.).
- data of content: de feitelijke payload (tekst of binair).
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:
