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 verstehen
Stell dir Ressourcen als schreibgeschützte Endpunkte vor, die jede Art von Daten zurückgeben können - Strings, JSON, Binärdateien usw. Du legst einen 'mime_type' fest, um dem Client einen Hinweis darauf zu geben, welche Art von Daten du zurückgibst.

Ressourcen funktionieren, indem sie eine URI (wie eine URL) definieren, die Clients anfordern können. Wenn ein Client Daten benötigt, sendet er eine ReadResourceRequest mit der spezifischen URI, und dein Server antwortet mit einem ReadResourceResult, das die Daten enthält.
Zwei Arten von Ressourcen
Es gibt zwei Hauptarten von Ressourcen, die du erstellen kannst:
- Direkte Ressourcen - Haben statische URIs, die keine Parameter enthalten (wie "docs://documents")
- Templated Ressourcen - Enthalten Parameter in ihren URIs, die geparst und an deine Funktion übergeben werden (wie "docs://documents/{doc_id}")

Bei templated Ressourcen parst das Python SDK automatisch Parameter aus der URI und übergibt sie als Keyword-Argumente an deine Funktion. Die Parameternamen in der URI müssen genau mit den Parameternamen deiner Funktion übereinstimmen.
Ressourcen erstellen
So implementierst du beide Arten von Ressourcen:
@mcp.resource(
"docs://documents",
mime_type="application/json"
)
def list_docs() -> list[str]:
return list(docs.keys())
@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]Das MCP Python SDK serialisiert automatisch alles, was du zurückgibst. Du musst Daten nicht manuell in JSON-Strings umwandeln - gib einfach Python-Objekte zurück, und das SDK übernimmt die Konvertierung.
Deine Ressourcen testen
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 - Zeigt deine templated Ressourcen an

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.
Praktische Anwendungsfälle
Ressourcen sind ideal für die Implementierung von Funktionen wie Dokumentenerwähnungen in Chat-Anwendungen. Wenn ein Benutzer beispielsweise "@" eingibt, um ein Dokument zu erwähnen, könntest du:
- Eine direkte Ressource verwenden, um eine Liste aller verfügbaren Dokumente für die Autovervollständigung abzurufen
- Eine templated Ressource verwenden, um den Inhalt eines bestimmten Dokuments abzurufen, wenn es erwähnt wird
Dieser Ansatz ermöglicht es dir, Dokumenteninhalte vorausschauend in Prompts einzufügen, ohne dass die KI Tools verwenden muss, um die Informationen abzurufen.