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 définissant un URI (comme une URL) que les clients peuvent demander. Lorsqu'un client a besoin de données, il envoie une ReadResourceRequest avec l'URI spécifique, et votre serveur répond avec un ReadResourceResult contenant les donné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 qui sont analysés et transmis à votre fonction (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 en tant qu'arguments nommés à votre fonction. Les noms de paramètres dans l'URI doivent correspondre exactement aux noms de paramètres de votre fonction.
Création de ressources
Voici comment implémenter les deux types de ressources :
@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 des objets Python et le SDK gère la conversion.
Tester vos ressources
Vous pouvez tester les ressources en utilisant le MCP Inspector. Démarrez votre serveur avec :
uv run mcp dev mcp_server.py
Connectez-vous ensuite à l'inspecteur dans votre navigateur. Vous verrez deux sections :
- Resources - Liste vos ressources directes/statiques
- Resource Templates - Affiche vos ressources modélisées

Cliquez sur n'importe quelle ressource pour la tester. Pour les ressources modélisées, vous devrez fournir des valeurs pour les paramètres. L'inspecteur vous montre la structure exacte de la réponse que votre client recevra, y compris le type mime et les données sérialisées.
Cas d'usage pratiques
Les ressources sont idéales pour implémenter des fonctionnalités comme les mentions de documents dans les applications de chat. Par exemple, lorsqu'un utilisateur tape "@" pour mentionner un document, vous pourriez :
- Utiliser une ressource directe pour récupérer une liste de tous les documents disponibles pour l'autocomplétion
- Utiliser une ressource modélisée pour récupérer le contenu d'un document spécifique lorsqu'il est mentionné
Cette approche vous permet d'injecter de manière préventive le contenu des documents dans les invites sans nécessiter que l'IA utilise des outils pour récupérer les informations.