Aller au contenu principal

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

RessourcesOutils
Exposent des donnéesEffectuent des actions
Pattern requête-réponsePattern appel de fonction
Analogie : GET HTTPAnalogie : 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ées
  • text/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).