Chargement

Définition des ressources

Leçon 544 min

Les ressources dans les serveurs MCP vous permettent d'exposer des données aux clients, de manière similaire aux gestionnaires de requêtes GET dans un serveur HTTP classique. Elles sont parfaites pour les scénarios où vous devez récupérer des informations plutôt qu'effectuer des actions.

Comprendre les ressources

Considérez les ressources comme des points de terminaison en lecture seule qui peuvent renvoyer n'importe quel type de données - chaînes de caractères, JSON, fichiers binaires, etc. Vous définissez un 'mime_type' pour donner au client une indication sur le type de données que vous renvoyez.

Les ressources fonctionnent en exposant des données via des URI (essentiellement des adresses). Lorsqu'un client a besoin de données, il envoie une ReadResourceRequest avec l'URI spécifique, et votre serveur répond avec les informations demandées.

Deux types de ressources

Il existe deux principaux types de ressources que vous pouvez créer :

  • Ressources directes - Ont des URI statiques qui ne contiennent aucun paramètre (comme docs://documents)
  • Ressources modélisées - Incluent des paramètres dans leurs URI (comme docs://documents/{doc_id})

Pour les ressources modélisées, le SDK Python analyse automatiquement les paramètres à partir de l'URI et les transmet comme arguments nommés à votre fonction. Le nom du paramètre dans l'URI devient le nom de l'argument dans votre fonction.

Implémenter des ressources

Créer des ressources est simple grâce au décorateur @mcp.resource(). Voici comment implémenter les deux types :

python
@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"Doc with id {doc_id} not found")
    return docs[doc_id]

Le SDK Python MCP sérialise automatiquement tout ce que vous renvoyez. Vous n'avez pas besoin de convertir manuellement les données en chaînes JSON - renvoyez simplement la structure de données Python appropriée.

Tester vos ressources

Vous pouvez tester les ressources en utilisant l'outil MCP Inspector. Démarrez votre serveur avec uv run mcp dev mcp_server.py et accédez à l'interface web.

L'inspecteur sépare les ressources directes des ressources modélisées. Les ressources directes apparaissent dans la section principale « Resources », tandis que les ressources modélisées apparaissent sous « Resource Templates ». Vous pouvez cliquer sur n'importe quelle ressource pour la tester et voir la structure exacte de la réponse que votre serveur renvoie.

Cas d'usage pratiques

Les ressources sont idéales pour :

  • Fournir des données d'autocomplétion (comme des listes de documents)
  • Récupérer le contenu de fichiers ou des enregistrements de base de données
  • Exposer des données de configuration
  • Servir toute information en lecture seule dont votre client a besoin

L'avantage clé est que les ressources permettent aux clients de récupérer proactivement des données sans dépendre d'outils ou d'interactions complexes. Cela les rend parfaites pour des fonctionnalités comme les mentions de documents, où vous souhaitez injecter automatiquement du contenu dans les invites en fonction des références de l'utilisateur.