Chargement

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

Comprendre les demandes de ressources

Lorsque vous avez défini des ressources sur votre serveur MCP, votre client a besoin d'un moyen de les demander et de les utiliser. Le client agit comme un pont entre votre application et le serveur MCP, gérant automatiquement la communication et l'analyse des données.

Le flux est simple : lorsqu'un utilisateur souhaite référencer un document (comme en tapant « @report.pdf »), votre application utilise le client MCP pour récupérer cette ressource depuis le serveur et inclure son contenu directement dans l'invite envoyée à Claude.

Mettre en œuvre la lecture de ressources

La fonctionnalité principale nécessite une fonction read_resource dans votre client MCP. Cette fonction prend un paramètre URI identifiant la ressource à récupérer :

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

La réponse du serveur MCP contient une liste contents. Vous n'avez généralement besoin que du premier élément, qui contient les données réelles de la ressource ainsi que des métadonnées comme le type MIME.

Gérer différents types de contenu

Les ressources peuvent renvoyer différents types de contenu, votre client doit donc les analyser de manière appropriée. Le type MIME vous indique comment traiter les données :

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

Cette approche garantit que les ressources JSON sont correctement analysées en objets Python, tandis que les ressources en texte brut sont renvoyées sous forme de chaînes de caractères. Le type MIME agit comme votre indice pour déterminer la stratégie d'analyse correcte.

Importations requises

Pour que cela fonctionne correctement, vous aurez besoin de ces importations dans votre client MCP :

python
import json
from pydantic import AnyUrl

Le module json gère l'analyse des réponses JSON, tandis que AnyUrl garantit une gestion de type appropriée pour le paramètre URI.

Tester l'accès aux ressources

Une fois mis en œuvre, vous pouvez tester la fonctionnalité via votre application CLI. Lorsque vous tapez quelque chose comme « Qu'y a-t-il dans le document @report.pdf ? », le système devrait :

  • Afficher les ressources disponibles dans une liste de saisie automatique
  • Vous permettre de sélectionner une ressource
  • Récupérer automatiquement le contenu de la ressource
  • Inclure ce contenu dans l'invite envoyée à Claude

L'avantage clé est que Claude reçoit le contenu du document directement dans l'invite, éliminant ainsi la nécessité d'appels d'outils pour accéder aux informations. Cela rend les interactions plus rapides et plus efficaces.

Intégration avec votre application

Rappelez-vous que le code client MCP que vous écrivez est utilisé par d'autres parties de votre application. La fonction read_resource devient un élément de base que d'autres composants peuvent appeler pour récupérer le contenu de documents, lister les ressources disponibles ou intégrer les données de ressources dans les invites.

Cette séparation des préoccupations garde votre code propre : le client MCP gère la communication avec le serveur, tandis que la logique de votre application se concentre sur la manière d'utiliser ces données efficacement.