Definir des ressources MCP
Les ressources dans les serveurs MCP permettent d’exposer des donnees aux clients, similaires a des endpoints GET dans un serveur HTTP classique. Elles sont ideales pour recuperer des informations plutot qu’executer des actions.
Deux types de ressources
Ressources directes
URIs statiques sans parametres :
@mcp.resource(
"docs://documents",
mime_type="application/json"
)
def list_docs() -> list[str]:
return list(docs.keys())
Ressources avec template
URIs avec parametres extraits automatiquement :
@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 trouve")
return docs[doc_id]
Le SDK parse automatiquement les parametres de l’URI et les passe comme arguments nommes. Les noms dans l’URI doivent correspondre exactement aux noms de parametres de la fonction.
Tester avec l’inspecteur
uv run mcp dev mcp_server.py
L’inspecteur affiche deux sections : Resources (ressources statiques) et Resource Templates (ressources avec template).
Cas d’usage pratique
Les ressources sont ideales pour les mentions de documents dans un chat. Quand un utilisateur tape ”@” pour mentionner un document : utilisez une ressource directe pour l’autocompletion et une ressource avec template pour recuperer le contenu du document selectionne.