Ressources du serveur MCP Delphi (4/4)

· Fonctionnalités

Dans MCP, les ressources représentent des objets de données adressables que le serveur expose, comme des fichiers, des enregistrements de base de données, des documents générés ou des sorties d'API dynamiques.

Elles sont contrôlées par le client, ce qui signifie que le client peut décider quelle ressource demander et comment interpréter le contenu.





Les deux méthodes principales impliquées sont :

De plus, si le serveur définit resources.listChanged = true dans ses capacités déclarées, il peut envoyer des notifications comme notifications/resources/list_changed quand le catalogue de ressources est mis à jour.

Liste des ressources

Le serveur conserve un catalogue en mémoire des ressources dans TsgcAI_MCP_ResourcesList. Les ressources sont garanties uniques par uri, exposent des descriptions et fournissent un schéma JSON de type uri d'entrée qui est émis dans la réponse à la méthode resources.list de la spécification. Quand un client invoque resources.list, TsgcWSAPIServer_MCP charge la requête, sérialise le catalogue courant et le renvoie avec un code de statut HTTP 200.

Exemple de code qui publie une ressource fichier : 

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; 

Requête de ressource

Quand un client émet une requête JSON-RPC resource.read, TsgcWSAPIServer_MCP hydrate l'objet de requête fortement typé (incluant l'uri de la ressource, le nom et les arguments fournis) avant de lever l'événement OnMCPRequestResource. Ton gestionnaire remplit la charge utile de réponse qui est ensuite sérialisée vers le client, accompagnée d'un code de statut HTTP de succès.

Un gestionnaire typique ressemble à ceci : 

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; 

En savoir plus

Pour une documentation détaillée et une référence du composant, visite :


Guide des ressources serveur MCP sgcWebSockets 

Tu trouveras ci-dessous une démo de serveur MCP Delphi pour Windows :