Chargement

Les ressources dans MCP permettent à votre serveur d'exposer des informations qui peuvent être directement incluses dans les invites, plutôt que de nécessiter des appels d'outils pour accéder aux données. Cela crée un moyen plus efficace de fournir du contexte aux modèles d'IA.

Diagramme de séquence d'accès aux ressources : un utilisateur tape « What's in the @... » dans la CLI, notre code envoie une ReadResourceRequest au serveur MCP, et le serveur renvoie un ReadResourceResult contenant le contenu de la ressource

Le diagramme ci-dessus montre comment fonctionnent les ressources : lorsqu'un utilisateur tape quelque chose comme « What's in the @... », notre code reconnaît cela comme une demande de ressource, envoie une ReadResourceRequest au serveur MCP, et récupère un ReadResourceResult avec le contenu réel.

Implémentation de la lecture des ressources

Pour activer l'accès aux ressources dans votre client MCP, vous devez implémenter une fonction read_resource. Tout d'abord, ajoutez les imports nécessaires :

python
import json
from pydantic import AnyUrl

La fonction principale effectue une requête au serveur MCP et traite la réponse en fonction de son type MIME :

python
async def read_resource(self, uri: str) -> Any:
    result = await self.session().read_resource(AnyUrl(uri))
    resource = result.contents[0]

    if isinstance(resource, types.TextResourceContents):
        if resource.mimeType == "application/json":
            return json.loads(resource.text)

    return resource.text

Comprendre la structure de la réponse

Lorsque vous demandez une ressource, le serveur renvoie un résultat avec une liste contents. Nous accédons au premier élément puisque nous n'avons généralement besoin que d'une seule ressource à la fois. La réponse inclut :

  • Le contenu réel (texte ou données)
  • Un type MIME qui nous indique comment analyser le contenu
  • D'autres métadonnées sur la ressource

Gestion du type de contenu

La fonction vérifie le type MIME pour déterminer comment traiter le contenu :

  • S'il s'agit de application/json, analyser le texte en tant que JSON et renvoyer l'objet analysé
  • Sinon, renvoyer le contenu texte brut

Cette approche gère à la fois les données structurées (comme JSON) et les documents en texte brut de manière transparente.

Test de l'accès aux ressources

Une fois implémenté, vous pouvez tester la fonctionnalité de ressource via votre application CLI. Lorsque vous tapez « @ » suivi d'un nom de ressource, le système va :

  1. Afficher les ressources disponibles dans une liste d'autocomplétion
  2. Vous permettre de sélectionner une ressource à l'aide des touches fléchées et de la barre d'espace
  3. Inclure le contenu de la ressource directement dans votre invite
  4. Envoyer le tout au modèle d'IA sans nécessiter d'appels d'outils supplémentaires

Cela crée une expérience utilisateur beaucoup plus fluide par rapport au fait de faire effectuer par le modèle d'IA des appels d'outils séparés pour accéder au contenu des documents. Le contenu de la ressource devient partie intégrante du contexte initial, permettant des réponses immédiates concernant les données.