Aller au contenu principal

Definir des ressources

Les ressources dans les serveurs MCP permettent d’exposer des donnees aux clients, similairement aux gestionnaires de requetes GET dans un serveur HTTP. Elles sont ideales pour recuperer des informations plutot que d’effectuer des actions.

Comprendre les ressources

Les ressources sont des endpoints en lecture seule qui peuvent renvoyer tout type de donnees : chaines, JSON, fichiers binaires, etc. Vous definissez un mime_type pour indiquer au client le type de donnees renvoye.

Elles fonctionnent via des URI (essentiellement des adresses). Quand un client a besoin de donnees, il envoie une ReadResourceRequest avec l’URI specifique.

Deux types de ressources

TypeURIDescription
Directedocs://documentsURI statique sans parametre
Modele (template)docs://documents/{doc_id}URI avec parametres

Pour les ressources a modele, le SDK parse automatiquement les parametres de l’URI et les passe comme arguments a votre fonction.

Implementation

@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"Document avec l'id {doc_id} introuvable")
    return docs[doc_id]

Le SDK serialise automatiquement ce que vous renvoyez. Pas besoin de convertir manuellement en chaine JSON.

Tester avec l’inspecteur

L’inspecteur separe les ressources directes des ressources a modele. Cliquez sur n’importe quelle ressource pour la tester et voir la structure exacte de la reponse.

Cas d’usage

  • Fournir des donnees d’auto-completion (listes de documents)
  • Recuperer le contenu de fichiers ou d’enregistrements de base de donnees
  • Exposer des donnees de configuration
  • Servir toute information en lecture seule

Les ressources permettent aux clients de recuperer proactivement des donnees sans passer par les outils, ce qui les rend ideales pour des fonctionnalites comme les mentions de documents.