W MCP zasoby to adresowalne obiekty danych udostępniane przez serwer, takie jak pliki, rekordy baz danych, wygenerowane dokumenty lub dynamiczne wyniki API.
Są 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:
- resources/list: Żąda listy wszystkich dostępnych definicji zasobów udostępnianych przez serwer. Jest obsługiwane wewnętrznie przez komponent TsgcWSAPIServer_MCP.
- resources/read: Pobiera treść i opcjonalne metadane określonego zasobu. Zdarzenie OnMCPRequestResource jest wywoływane, gdy serwer otrzyma nowe żądanie. Zasób zazwyczaj zawiera:
- uri: identyfikator zasobu.
- mimeType: typ treści (text/plain, application/json, image/png itp.).
- dane lub treść: rzeczywisty ładunek (tekstowy lub binarny).
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:
