Risorse del server MCP in Delphi (4/4)

· Funzionalità

In MCP le risorse rappresentano oggetti di dati indirizzabili che il server espone, come file, record di database, documenti generati o output dinamici di API.

Sono client-controlled, il che significa che il client può decidere quale risorsa richiedere e come interpretarne il contenuto.





I due metodi principali coinvolti sono:

Inoltre, se il server imposta resources.listChanged = true tra le capability dichiarate, può inviare notifiche come notifications/resources/list_changed quando il catalogo delle risorse viene aggiornato.

Lista delle risorse

Il server mantiene un catalogo in memoria delle risorse in TsgcAI_MCP_ResourcesList. Le risorse sono garantite uniche per uri, espongono descrizioni e forniscono un input uri tipo JSON Schema che viene emesso nella risposta al metodo resources.list della specifica. Quando un client invoca resources.list, TsgcWSAPIServer_MCP carica la richiesta, serializza il catalogo corrente e lo rispedisce con uno stato HTTP 200.

Esempio di codice che pubblica una risorsa di tipo file: 

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; 

Richiesta di risorse

Quando un client invia una richiesta JSON-RPC resource.read, TsgcWSAPIServer_MCP popola l'oggetto richiesta fortemente tipizzato (inclusi uri della risorsa, nome e gli argomenti forniti) prima di sollevare l'evento OnMCPRequestResource. Il tuo handler popola il payload di risposta che viene poi serializzato e rispedito al client insieme a uno stato HTTP di successo.

Un handler tipico è il seguente: 

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; 

Scopri di più

Per documentazione approfondita e riferimento dei componenti, visita:


sgcWebSockets MCP Prompts Resources Guide 

Trovi qui sotto una demo Delphi MCP Server per Windows: