Daten und Inhalte von Ihren Servern für LLMs verfügbar machenRessourcen sind ein zentrales Primitive im Model Context Protocol (MCP), das es Servern ermöglicht, Daten und Inhalte bereitzustellen, die von Clients gelesen und als Kontext für LLM-Interaktionen verwendet werden können.Ressourcen sind anwendungsgesteuert, was bedeutet, dass die Client-Anwendung entscheiden kann, wie und wann sie verwendet werden sollen. Unterschiedliche MCP-Clients können Ressourcen unterschiedlich behandeln. Zum Beispiel:Claude Desktop erfordert derzeit, dass Benutzer Ressourcen explizit auswählen, bevor sie verwendet werden können.
Andere Clients können Ressourcen automatisch basierend auf Heuristiken auswählen.
Einige Implementierungen können sogar dem KI-Modell selbst erlauben, zu bestimmen, welche Ressourcen verwendet werden sollen.
Server-Entwickler sollten darauf vorbereitet sein, alle diese Interaktionsmuster bei der Implementierung der Ressourcenunterstützung zu berücksichtigen. Um Daten automatisch für Modelle bereitzustellen, sollten Server-Entwickler ein modellgesteuertes Primitive wie Tools verwenden.Ressourcen repräsentieren jede Art von Daten, die ein MCP-Server für Clients verfügbar machen möchte. Dies kann Folgendes umfassen:Jede Ressource wird durch einen eindeutigen URI identifiziert und kann entweder Text- oder Binärdaten enthalten.Ressourcen werden anhand von URIs identifiziert, die folgendes Format haben:[protocol]://[host]/[path]
file:///home/user/documents/report.pdf
postgres://database/customers/schema
screen://localhost/display1
Das Protokoll und die Pfadstruktur werden von der MCP-Serverimplementierung definiert. Server können ihre eigenen benutzerdefinierten URI-Schemata definieren.Ressourcen können zwei Arten von Inhalten enthalten:Textressourcen enthalten UTF-8-codierte Textdaten. Diese eignen sich für:Binäre Ressourcen enthalten rohe Binärdaten, die in Base64 codiert sind. Diese eignen sich für:Clients können verfügbare Ressourcen über zwei Hauptmethoden ermitteln:Server stellen eine Liste konkreter Ressourcen über den Endpunkt resources/list bereit. Jede Ressource enthält:Für dynamische Ressourcen können Server URI-Vorlagen bereitstellen, die Clients verwenden können, um gültige Ressourcen-URIs zu erstellen:Um eine Ressource zu lesen, senden Clients eine resources/read-Anfrage mit dem Ressourcen-URI.Der Server antwortet mit einer Liste von Ressourceninhalten:Server können mehrere Ressourcen als Antwort auf eine resources/read-Anfrage zurückgeben. Dies könnte beispielsweise verwendet werden, um eine Liste von Dateien innerhalb eines Verzeichnisses zurückzugeben, wenn das Verzeichnis gelesen wird.MCP unterstützt Echtzeit-Updates für Ressourcen durch zwei Mechanismen:Server können Clients benachrichtigen, wenn sich ihre Liste der verfügbaren Ressourcen ändert, über die Benachrichtigung notifications/resources/list_changed.Clients können Updates für bestimmte Ressourcen abonnieren:1.
Client sendet resources/subscribe mit Ressourcen-URI
2.
Server sendet notifications/resources/updated, wenn sich die Ressource ändert
3.
Client kann den neuesten Inhalt mit resources/read abrufen
4.
Client kann das Abonnement mit resources/unsubscribe beenden
Beispielimplementierung#
Hier ist ein einfaches Beispiel für die Implementierung der Ressourcenunterstützung in einem MCP-Server:Bei der Implementierung der Ressourcenunterstützung:1.
Verwenden Sie klare, beschreibende Ressourcennamen und URIs
2.
Fügen Sie hilfreiche Beschreibungen hinzu, um das LLM-Verständnis zu unterstützen
3.
Legen Sie geeignete MIME-Typen fest, wenn diese bekannt sind
4.
Implementieren Sie Ressourcenvorlagen für dynamische Inhalte
5.
Verwenden Sie Abonnements für sich häufig ändernde Ressourcen
6.
Behandeln Sie Fehler auf elegante Weise mit klaren Fehlermeldungen
7.
Erwägen Sie die Paginierung für große Ressourcenlisten
8.
Cachen Sie Ressourceninhalte, wenn dies angemessen ist
9.
Validieren Sie URIs vor der Verarbeitung
10.
Dokumentieren Sie Ihre benutzerdefinierten URI-Schemas
Bei der Bereitstellung von Ressourcen:Validieren Sie alle Ressourcen-URIs
Implementieren Sie geeignete Zugriffskontrollen
Bereinigen Sie Dateipfade, um Directory Traversal zu verhindern
Seien Sie vorsichtig bei der Handhabung von Binärdaten
Erwägen Sie die Ratenbegrenzung für Ressourcenlesevorgänge
Überwachen Sie den Ressourcenzugriff
Verschlüsseln Sie sensible Daten während der Übertragung
Validieren Sie MIME-Typen
Implementieren Sie Timeouts für lang andauernde Lesevorgänge
Behandeln Sie die Ressourcenbereinigung angemessen
Modified at 2025-03-13 03:59:58