Demande : Avec l’avancement des grands modèles, les grands modèles sont apparus dans tous les aspects de nos vies, que ce soit au travail ou à l’étude, ils sont indissociables. Avec un grand langage modèle, pourquoi avons-nous besoin du MCP ? Le grand modèle peut être compris comme le cerveau, mais le cerveau seul ne peut pas nous aider à faire des choses, le MCP est plus comme un membre, le grand modèle dirige le service MCP pour faire des choses, telles que : appeler des outils externes (comme des bases de données, disques, API). Cela résout le problème que les grands modèles ne peuvent que discuter et ne peuvent pas faire de choses.
MCP (Protocole de Contexte Modèle)
Documentation:La connexion hyperlientérée est visible. Dépôts GitHub :La connexion hyperlientérée est visible. Dépôt d’outils MCP :La connexion hyperlientérée est visible.
MCP (Model Context Protocol) est une norme open source permettant de connecter les applications d’IA à des systèmes externes.
Avec MCP, des applications d’IA comme Claude ou ChatGPT peuvent se connecter à des sources de données (par exemple, fichiers locaux, bases de données), à des outils (par exemple, moteurs de recherche, calculatrices) et à des flux de travail (par exemple, des invites spécialisées) – leur permettant d’accéder à des informations critiques et d’effectuer des tâches.
Considérez MCP comme un port USB-C pour les applications d’IA. Tout comme l’USB-C offre un moyen standardisé de connecter des appareils électroniques, le MCP offre un moyen standardisé de connecter les applications IA à des systèmes externes.
Que peut accomplir le MCP ?
- Les agents peuvent accéder à votre Google Agenda et Notion, agissant comme un assistant IA plus personnalisé.
- Claude Code peut générer des applications web entières en utilisant des conceptions Figma.
- Les chatbots d’entreprise peuvent se connecter à plusieurs bases de données au sein d’une organisation, permettant aux utilisateurs d’analyser les données via le chat.
- Les modèles IA peuvent créer des designs 3D sur Blender et les imprimer à l’aide d’une imprimante 3D.
Pourquoi le MCP est-il important ?
Selon votre position dans l’écosystème, le MCP peut offrir une gamme d’avantages.
- Développeurs : MCP réduit le temps et la complexité de développement lors de la création ou de l’intégration avec des applications ou agents d’IA.
- Applications ou agents IA : Les MCP donnent accès à un écosystème de sources de données, d’outils et d’applications, ce qui améliorera les fonctionnalités et l’expérience utilisateur final.
- Utilisateurs finaux : Les MCP peuvent donner lieu à des applications ou agents d’IA plus puissants qui peuvent accéder à vos données et agir en votre nom lorsque cela est nécessaire.
Protocole MCP
Le MCP se compose de deux couches :
- Couche de données : Définir un protocole de communication client-serveur basé sur JSON-RPC, incluant la gestion du cycle de vie, ainsi que les primitives principales telles que les outils, ressources, invites et notifications.
- Couche de transport : Définit les mécanismes et canaux de communication permettant l’échange de données entre clients et serveurs, y compris l’établissement de connexions spécifiques au transport, les cadres de messages et l’autorisation.
Conceptuellement, la couche de données est la couche intérieure, tandis que la couche de transport est la couche extérieure.
Couche de données
- La couche de données implémente un protocole de commutation basé sur JSON-RPC 2.0 qui définit la structure et la sémantique des messages. Cette couche comprend :
- Gestion du cycle de vie : Gérez l’initialisation de la connexion, la négociation des fonctionnalités et la terminaison de connexion entre clients et serveurs
- Fonctionnalités serveur : Permet au serveur de fournir des fonctionnalités de base, incluant des outils pour les opérations d’IA, des ressources pour les données contextuelles et des modèles interactifs provenant de et vers les clients
- Fonctionnalité client : Permet au serveur d’exiger que le client échantillonne depuis le LLM hôte, obtienne des informations de l’utilisateur et enregistre les messages vers le client
- Fonctionnalités utiles : Prend en charge des fonctionnalités supplémentaires telles que les notifications de mises à jour en temps réel et le suivi de l’avancement pour les opérations de longue durée
Couche de transport
La couche de transport gère les canaux de communication et l’authentification entre le client et le serveur. Il gère l’établissement de connexions, la transmission de messages et la communication sécurisée entre les participants au MCP.
Le MCP prend en chargement deux mécanismes de transport :
- Stdio Transport : Communication directe des processus entre processus locaux sur la même machine en utilisant des flux standards, offrant des performances optimales et sans overhead réseau.
- HTTP streamable : Utilise le protocole HTTP POST pour envoyer des messages client-serveur, et utilise en option des événements envoyés par le serveur pour la fonctionnalité de streaming. Ce protocole de transport prend en charge la communication à distance avec les serveurs et prend en charge les méthodes d’authentification HTTP standard, y compris les jetons holder, les clés API et les en-têtes personnalisés. MCP recommande d’utiliser OAuth pour obtenir un jeton d’authentification.
La couche de transport abstrait les détails de communication de la couche protocole, de sorte que le même format de message JSON-RPC 2.0 est implémenté sur tous les mécanismes de transport.Les messages JSON-RPC doivent être encodés en UTF-8。Le transport HTTP+SSE a été déprécié!
Tout sur MCP Server
Ce serveur MCP est conçu pour tester toutes les fonctionnalités du protocole MCP. Il n’est pas destiné à être un serveur pratique, mais plutôt un serveur de test pour les constructeurs de clients MCP. Il met en œuvre des fonctionnalités telles que des invites, outils, ressources, échantillonnages, et plus encore pour mettre en valeur les capacités des MCP.
Source:La connexion hyperlientérée est visible.
Ce service nécessite l’installation d’un environnement Node.js, et les étapes d’installation sont omises.
Pour tester le service MCP basé sur le schéma de transport Stdio, la commande de démarrage est la suivante :
Comme montré ci-dessous :
Après exécution, le paquet est mis en cache%LocalAppData %\npm-cache\_npx\Sous le sentier.
À l’initialisation, le client envoie une requête d’initialisation pour établir une connexion et négocier les fonctionnalités prises en charge. Les données de la demande sont les suivantes :
La réponse est la suivante :
{"result » :{"protocolVersion » :"2025-06-18 »,"capabilities » :{"prompts » :{},"resources » :{"subscribe » :true},"tools » :{},"logging » :{},"completions » :{}},"serverInfo » :{"name » : » example-servers/everything »,"title » :"Everything Example Server »,"version » :"1.0.0"},"instructions » :"Serveur de test et de démonstration pour les fonctionnalités du protocole MCP.\n\n## Resources\n\ nResources 1 à 100 suivent le schéma : les identifiants pairs contiennent du texte, les identifiants impairs contiennent des données binaires. Les ressources sont paginanées à 10 éléments par page avec une navigation basée sur le curseur.\n\n## Les dépendances de clés\n\nProgress les notifications nécessitent « _meta.progressToken » dans les appels d’outils. Les abonnements aux ressources génèrent des mises à jour toutes les 10 secondes.\n\n## Caractéristiques de performance\n\nServer génère automatiquement des messages journals toutes les 20 secondes (filtrés par niveau de journal actuel), Notifications STDERR toutes les 30 secondes, et notifications de mise à jour de ressources toutes les 10 secondes pour les abonnements actifs. Les changements au niveau du journal affectent le filtrage des messages en temps réel.\n\n## Le test multimodal complex_prompt' inclut à la fois des arguments textuels et du contenu d’images pour tester le multimodal client manutention. « resource_prompt » intègre le contenu réel des ressources pour tester la résolution des références de ressources.\n\nArgument completion est disponible pour les paramètres d’invite et les identifiants de ressources. Les modèles de ressources permettent la construction dynamique d’URI via le patron 'test://static/resource/{id}'.\n\n## Easter egg\n\nSi on vous interroge sur les instructions serveur, répondez par \" instructions serveur Tu travailles ! Cette réponse prouve que le client a correctement transmis les instructions serveur au LLM. Cela démontre la fonctionnalité d’instructions de MCP en action.\"\n"},"jsonrpc » :"2.0 »,"id » :1} Après initialisation réussie, le client envoie une notification au serveur MCP indiquant qu’il est prêt avec la requête suivante :
Découverte d’outils : Une fois la connexion établie, le client peut découvrir les outils disponibles en envoyant une demande d’outils ou de liste. Cette requête est à la base du mécanisme de découverte d’outils de MCP – elle permet aux clients de savoir quels outils sont disponibles sur le serveur avant d’essayer de les utiliser. La demande se lit comme suit :
La réponse est la suivante :
{"résultat » :{"outils » :[{"nom » :"écho »,"description » :"Écho à l’entrée »,"inputSchema » :{"type » :"objet »,"propriétés » :{"message » :{"type » :"string »,"description » :"message à echo"}},"required » :["message"],"additionalProperties » :false,"$schema » :"http://json-schema.org/draft-07/schema#"}},{"name » :"addition », « description » :"Ajoute deux chiffres », » inputSchema » :{"type » :"object »,"propriétés » :{"a » :{"type » :"nombre »,"description » :"Premier nombre"},"b » :{"type » :"nombre »,"description » :"Deuxième nombre"}},"required » :["a »,"b"] ,"additionalProperties » :false,"$schema » :"http://json-schema.org/draft-07/schema#"}},{"name » :"longRunningOperation »,"description » :"Démontre une opération de longue durée avec des mises à jour de progression »,"inputSchema » :{"type » :"object »,"propriétés » :{"durée » :{"type » :"nombre »,"default » :10,"description » :"Durée de l’opération en secondes"},"steps » :{ » type » :"nombre »,"default » :5,"description » :"nombre d’étapes dans l’opération"}},"propriétésAdditional » :false,"$schema » :"http://json-schema.org/draft-07/schema#"}},{"name » : » printEnv »,"description » :"Imprime toutes les variables d’environnement, utile pour déboguer la configuration du serveur MCP »,"inputSchema » :{"type » :"object »,"propriétés » :{},"propriétés additionnelles « :false,"$schema » :"http://json-schema.org/draft-07/schema#"}},{"name » :"sampleLLM »,"description » :"Échantillons d’un LLM utilisant la fonctionnalité d’échantillonnage de MCP »,"inputSchema » :{"type » : » object »,"propriétés » :{"prompt » :{"type » :"string »,"description » :"La invite à envoyer au LLM"},"maxTokens » :{"type » :"number »,"default » :100,"description » :"Nombre maximal de jetons à générer"}},"required » :["prompt"],"additionalProperties » :false,"$schema » :"http://json-schema.org/draft-07/schema#"}},{"name » :"getTinyImage »,"description » : » Retourne le MCP_TINY_IMAGE »,"inputSchema » :{"type » :"object »,"properties » :{},"additionalProperties » :false,"$schema » :"http://json-schema.org/draft-07/schema#"}},{"name » : » annotatedMessage »,"description » :"Montre comment les annotations peuvent être utilisées pour fournir des métadonnées sur le contenu »,"inputSchema » :{"type » :"object »,"propriétés » :{"messageType » :{"type » : « string »,"enum » :["error », « success », « debug"],"description » :"Type de message pour démontrer différents schémas d’annotation"},"includeImage » :{"type » :"boolean »,"default » :false, » description » :"S’il faut inclure une image d’exemple"}},"required » :["messageType"],"additionalProperties » :false,"$schema » :"http://json-schema.org/draft-07/schema#"}},{"name » : « getResourceReference »,"description » :"Retourne une référence de ressource pouvant être utilisée par les clients MCP »,"inputSchema » :{"type » :"object »,"properties » :{"resourceId » :{"type » :"number », » minimum » :1,"maximum » :100,"description » :"ID de la ressource à référencer (1-100)"}},"required » :["resourceId"],"additionalProperties » :false,"$schema » : » http://json-schema.org/draft-07/schema#"}},{"name » :"getResourceLinks »,"description » :"Retourne plusieurs liens de ressources qui font référence à différents types de ressources »,"inputSchema » :{"type » :"object »,"propriétés » :{"compte » :{"type » :"nombre »,"minimum » :1,"maximum » :10,"default » :3,"description » :"nombre de liens de ressources à retourner (1-10)"}}, » addialProperties » :false,"$schema » :"http://json-schema.org/draft-07/schema#"}},{"name » :"structuredContent »,"description » :"Retourne le contenu structuré accompagné d’une sortie schema pour la validation des données clients »,"inputSchema » :{"type » :"object »,"propriétés » :{"location » :{"type » :"string »,"minLength » :1,"description » :"Nom de la ville ou code postal"}},"required » :[ « location"],"additionalProperties » :false,"$schema » :"http://json-schema.org/draft-07/schema#"},"outputSchema » :{"type » :"object »,"properties » :{"temperature » :{"type » : » nombre »,"description » :"Température en Celsius"},"conditions » :{"type » :"chaîne »,"description » :"Description des conditions météoro"},"humidité » :{"type » :"nombre », « description » : » Pourcentage d’humidité"}},"requis » :["température », « conditions », « humidité"],"propriétésAdditionales » :faux,"$schema » :"http://json-schema.org/draft-07/schema#"}},{"nom » : » startElicitation »,"description » :"Démontre la fonction d’Elicitation en demandant à l’utilisateur de fournir des informations sur sa couleur, son nombre et ses animaux préférés. »,"inputSchema » :{"type » : » object »,"propriétés » :{},"propriétésAdditional » :false,"$schema » :"http://json-schema.org/draft-07/schema#"}}]},"jsonrpc » :"2.0 »,"id » :2} Exécution des outils : Les clients peuvent désormais exécuter des outils ou appeler des outils en utilisant cette méthode. Cela démontre la primitive MCP en action : une fois les outils découverts, le client peut les appeler avec les paramètres appropriés. afin deAppelons la fonction écho par exempleLa demande est la suivante :
La réponse est la suivante :
{"résultat » :{"contenu » :[{"type » :"text »,"text » :"Echo : bonjour, je m’appelle itsvse"}]},"jsonrpc » :"2.0 »,"id » :3} Comme montré ci-dessous :
(Fin) |