Serwer MCP w Delphi: zasoby (4/4)

· Funkcje

W MCP zasoby to adresowalne obiekty danych udostępniane przez serwer, takie jak pliki, rekordy baz danych, wygenerowane dokumenty lub dynamiczne wyniki API.

kontrolowane przez klienta, co oznacza, że klient może zdecydować, który zasób pobrać i jak interpretować jego treść.





Dwie główne zaangażowane metody to:

Dodatkowo, jeśli serwer ustawia resources.listChanged = true w zadeklarowanych możliwościach, może wysyłać powiadomienia takie jak notifications/resources/list_changed po aktualizacji katalogu zasobów.

Lista zasobów

Serwer przechowuje w pamięci katalog zasobów w TsgcAI_MCP_ResourcesList. Zasoby są gwarantowane jako unikalne według uri, udostępniają opisy i dostarczają schemat JSON jako uri wejściowe, emitowane w odpowiedzi na metodę resources.list ze specyfikacji. Gdy klient wywołuje resources.list, TsgcWSAPIServer_MCP wczytuje żądanie, serializuje bieżący katalog i odsyła go ze statusem HTTP 200.

Przykładowy kod publikujący zasób plikowy:

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; 

Żądanie zasobu

Gdy klient wysyła żądanie JSON-RPC resource.read, TsgcWSAPIServer_MCP wypełnia silnie typowany obiekt żądania (w tym uri zasobu, nazwę i podane argumenty) przed wywołaniem zdarzenia OnMCPRequestResource. Twój handler wypełnia ładunek odpowiedzi, który jest następnie serializowany do klienta wraz z kodem statusu HTTP oznaczającym sukces.

Typowy handler wygląda następująco:

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; 

Dowiedz się więcej

Szczegółowa dokumentacja i opis komponentów dostępne są pod adresem:


sgcWebSockets MCP Prompts Resources Guide 

Poniżej znajduje się demo serwera MCP Delphi dla Windows: