Définir des ressources MCP
Les ressources dans les serveurs MCP permettent d’exposer des données aux clients, similairement aux gestionnaires de requêtes GET dans un serveur HTTP classique.
Ressources vs outils
| Ressources | Outils |
|---|---|
| Exposent des données | Effectuent des actions |
| Pattern requête-réponse | Pattern appel de fonction |
| Analogie : GET HTTP | Analogie : POST HTTP |
Types de ressources
- Ressources directes : URIs statiques (
docs://documents) - Ressources avec template : URIs avec paramètres (
docs://documents/{doc_id})
Implémentation
# Ressource directe (liste tous les documents)
@mcp.resource("docs://documents", mime_type="application/json")
def list_docs() -> list[str]:
return list(docs.keys())
# Ressource avec template (récupère un document)
@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"Document {doc_id} non trouvé")
return docs[doc_id]
Types MIME
Le paramètre mime_type indique aux clients le type de données retourné :
application/json→ données JSON structuréestext/plain→ texte brut
Le SDK Python sérialise automatiquement vos valeurs de retour.
Tester dans l’inspecteur
uv run mcp dev mcp_server.py
Dans l’inspecteur, vous verrez Resources (statiques) et Resource Templates (paramétriques).