Wird geladen

Ressourcen in MCP-Servern ermöglichen es dir, Daten für Clients bereitzustellen, ähnlich wie GET-Request-Handler in einem typischen HTTP-Server. Sie sind perfekt für Szenarien, in denen du Informationen abrufen musst, anstatt Aktionen auszuführen.

Ressourcen anhand eines Beispiels verstehen

Angenommen, du möchtest eine Funktion zur Dokumenterwähnung erstellen, bei der Benutzer @dokumentname eingeben können, um auf Dateien zu verweisen. Dies erfordert zwei Operationen:

  • Abrufen einer Liste aller verfügbaren Dokumente (für die Autovervollständigung)
  • Abrufen des Inhalts eines bestimmten Dokuments (wenn es erwähnt wird)

Feature-Folie: Benutzer können ein Dokument erwähnen, indem sie @doc_name schreiben; die Eingabe von @ zeigt eine Liste aller verfügbaren Dokumente in einer Autovervollständigung, und der Inhalt eines erwähnten Dokuments wird automatisch in den Prompt eingefügt

Wenn ein Benutzer ein Dokument erwähnt, fügt dein System automatisch den Inhalt des Dokuments in den an Claude gesendeten Prompt ein, wodurch Claude keine Tools verwenden muss, um die Informationen abzurufen.

Diagramm eines Benutzers, der fragt „Was steht in der Datei @report.pdf?" — unser Code verpackt die Anfrage in einen Prompt für Claude, wobei der Inhalt des referenzierten Dokuments innerhalb eines Dokument-Tags eingefügt wird

Wie Ressourcen funktionieren

Ressourcen folgen einem Anfrage-Antwort-Muster. Wenn dein Client Daten benötigt, sendet er eine ReadResourceRequest mit einer URI, um zu identifizieren, welche Ressource er möchte. Der MCP-Server verarbeitet diese Anfrage und gibt die Daten in einem ReadResourceResult zurück.

Sequenzdiagramm: Der Benutzer tippt „Was steht in @…", unser Code fragt den MCP-Client nach einer Liste von Dokumentnamen für die Autovervollständigung, und der Client sendet eine ReadResourceRequest mit der docs://documents-URI an den MCP-Server

Der Ablauf sieht folgendermaßen aus: Dein Code fordert eine Ressource vom MCP-Client an, der die Anfrage an den MCP-Server weiterleitet. Der Server verarbeitet die URI, führt die entsprechende Funktion aus und gibt das Ergebnis zurück.

Sequenzdiagramm fortgesetzt: Der MCP-Server gibt ein ReadResourceResult zurück, das die Liste der Dokumentnamen enthält, die der MCP-Client an unseren Code zurückgibt, um sie in die Autovervollständigung einzufügen

Arten von Ressourcen

Es gibt zwei Arten von Ressourcen:

Direkte Ressourcen

Direkte Ressourcen haben statische URIs, die sich nie ändern. Sie sind perfekt für Operationen, die keine Parameter benötigen.

python
@mcp.resource(
    "docs://documents",
    mime_type="application/json"
)
def list_docs() -> list[str]:
    return list(docs.keys())

Templated Ressourcen

Templated Ressourcen enthalten Parameter in ihren URIs. Das Python-SDK analysiert diese Parameter automatisch und übergibt sie als Keyword-Argumente an deine Funktion.

python
@mcp.resource(
    "docs://documents/{doc_id}",
    mime_type="text/plain"
)
def fetch_doc(doc_id: str) -> str:
    if doc_id not in docs:
        raise ValueError(f"Doc with id {doc_id} not found")
    return docs[doc_id]

Gegenüberstellung: eine direkte Ressource, deren URI keine Parameter enthält, und eine Templated Ressource, deren URI einen oder mehrere Parameter enthält, die das Python-SDK analysiert und als Argumente an deine Funktion übergibt

Implementierungsdetails

Ressourcen können jede Art von Daten zurückgeben – Strings, JSON, Binärdaten usw. Verwende den Parameter mime_type, um Clients einen Hinweis darauf zu geben, welche Art von Daten du zurückgibst:

  • "application/json" für strukturierte Daten
  • "text/plain" für reinen Text
  • "application/pdf" für Binärdateien

Das MCP-Python-SDK serialisiert deine Rückgabewerte automatisch. Du musst Objekte nicht manuell in JSON-Strings umwandeln – gib einfach die Datenstruktur zurück und lass das SDK die Serialisierung übernehmen.

Testen deiner Ressourcen

Du kannst Ressourcen mit dem MCP Inspector testen. Starte deinen Server mit:

uv run mcp dev mcp_server.py

Verbinde dich dann in deinem Browser mit dem Inspector. Du siehst zwei Abschnitte:

  • Resources – Listet deine direkten/statischen Ressourcen auf
  • Resource Templates – Listet deine Templated Ressourcen auf

MCP Inspector mit geöffnetem Resources-Tab, der die direkte Ressource docs://documents unter Resources zeigt, das fetch_doc-Template unter Resource Templates, und die JSON-Antwort für docs://documents mit ihrer URI, mimeType und serialisierten Liste von Dokumentnamen

Klicke auf eine beliebige Ressource, um sie zu testen. Bei Templated Ressourcen musst du Werte für die Parameter angeben. Der Inspector zeigt dir die genaue Antwortstruktur, die dein Client erhalten wird, einschließlich des MIME-Typs und der serialisierten Daten.

Ressourcen bieten eine saubere Möglichkeit, schreibgeschützte Daten von deinem MCP-Server bereitzustellen, wodurch es für Clients einfach wird, Informationen abzurufen, ohne die Komplexität von Tool-Aufrufen.