Exposer des données et du contenu de vos serveurs aux LLMLes Resources sont une primitive centrale du Model Context Protocol (MCP) qui permet aux serveurs d'exposer des données et du contenu qui peuvent être lus par les clients et utilisés comme contexte pour les interactions LLM.Les Resources sont conçues pour être contrôlées par l'application, ce qui signifie que l'application cliente peut décider comment et quand elles doivent être utilisées. Différents clients MCP peuvent gérer les Resources différemment. Par exemple :Claude Desktop exige actuellement que les utilisateurs sélectionnent explicitement les Resources avant de pouvoir les utiliser.
D'autres clients peuvent sélectionner automatiquement les Resources en fonction d'heuristiques.
Certaines implémentations peuvent même permettre au modèle d'IA lui-même de déterminer quelles Resources utiliser.
Les auteurs de serveurs doivent être prêts à gérer chacun de ces modèles d'interaction lors de la mise en œuvre de la prise en charge des Resources. Afin d'exposer automatiquement des données aux modèles, les auteurs de serveurs doivent utiliser une primitive contrôlée par le modèle telle que Tools.Les Resources représentent tout type de données qu'un serveur MCP souhaite mettre à la disposition des clients. Cela peut inclure :Les enregistrements de base de données
Les données du système en direct
Les captures d'écran et les images
Chaque Resource est identifiée par un URI unique et peut contenir du texte ou des données binaires.Les Resources sont identifiées à l'aide d'URI qui suivent ce format :[protocol]://[host]/[path]
file:///home/user/documents/report.pdf
postgres://database/customers/schema
screen://localhost/display1
Le protocole et la structure du chemin sont définis par l'implémentation du serveur MCP. Les serveurs peuvent définir leurs propres schémas d'URI personnalisés.Les Resources peuvent contenir deux types de contenu :Les Resources textuelles contiennent des données textuelles encodées en UTF-8. Elles conviennent pour :Les fichiers de configuration
Les Resources binaires contiennent des données binaires brutes encodées en base64. Elles conviennent pour :D'autres formats non textuels
Les clients peuvent découvrir les Resources disponibles grâce à deux méthodes principales :Les serveurs exposent une liste de Resources concrètes via le point de terminaison resources/list
. Chaque Resource comprend :Pour les Resources dynamiques, les serveurs peuvent exposer des modèles d'URI que les clients peuvent utiliser pour construire des URI de Resource valides :Pour lire une Resource, les clients effectuent une requête resources/read
avec l'URI de la Resource.Le serveur répond avec une liste de contenus de Resource :Les serveurs peuvent renvoyer plusieurs Resources en réponse à une seule requête resources/read
. Cela pourrait être utilisé, par exemple, pour renvoyer une liste de fichiers à l'intérieur d'un répertoire lorsque le répertoire est lu.MCP prend en charge les mises à jour en temps réel des Resources grâce à deux mécanismes :Les serveurs peuvent notifier aux clients lorsque leur liste de Resources disponibles change via la notification notifications/resources/list_changed
.Les clients peuvent s'abonner aux mises à jour de Resources spécifiques :1.
Le client envoie resources/subscribe
avec l'URI de la Resource
2.
Le serveur envoie notifications/resources/updated
lorsque la Resource change
3.
Le client peut récupérer le dernier contenu avec resources/read
4.
Le client peut se désabonner avec resources/unsubscribe
Exemple d'implémentation#
Voici un exemple simple d'implémentation de la prise en charge des Resources dans un serveur MCP :Lors de la mise en œuvre de la prise en charge des Resources :1.
Utilisez des noms et des URI de Resource clairs et descriptifs
2.
Incluez des descriptions utiles pour guider la compréhension du LLM
3.
Définissez les types MIME appropriés lorsque vous les connaissez
4.
Implémentez des modèles de Resource pour le contenu dynamique
5.
Utilisez des abonnements pour les Resources qui changent fréquemment
6.
Gérez les erreurs avec élégance avec des messages d'erreur clairs
7.
Envisagez la pagination pour les grandes listes de Resources
8.
Mettez en cache le contenu des Resources lorsque cela est approprié
9.
Validez les URI avant de les traiter
10.
Documentez vos schémas d'URI personnalisés
Lors de l'exposition des Resources :Validez tous les URI de Resource
Implémentez des contrôles d'accès appropriés
Nettoyez les chemins de fichiers pour éviter le parcours de répertoires
Soyez prudent lors de la manipulation de données binaires
Envisagez de limiter le débit pour les lectures de Resources
Auditez l'accès aux Resources
Chiffrez les données sensibles en transit
Implémentez des délais d'attente pour les lectures de longue durée
Gérez le nettoyage des Resources de manière appropriée
Modified at 2025-03-13 05:35:59