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)

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.

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.

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.

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.
@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.
@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]
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.pyVerbinde 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

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.