Aller au contenu principal

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.