Protocole MCP

MCP (Model Context Protocol) est un protocole ouvert conçu pour permettre une intégration transparente entre les applications de grands modèles de langage (LLM) et les sources de données, outils et services externes, semblable au protocole HTTP en réseau ou au protocole SMTP en messagerie électronique.

Le protocole MCP améliore les fonctionnalités, la flexibilité et l'évolutivité des applications LLM en normalisant la manière dont les modèles interagissent avec les ressources externes.

MCP offre aux développeurs un environnement de développement unifié, efficace et interopérable en normalisant les règles de communication dans l'écosystème des applications d'IA.


Concepts fondamentaux de MCP

Le cœur de MCP estle contexte du modèle, c'est-à-dire toutes les informations externes et tous les outils requis par le LLM pendant son fonctionnement.

MCP permet aux LLM d'accéder dynamiquement et d'intégrer le contenu suivant en définissant des interfaces et des protocoles standardisés :

  1. Sources de données externes: telles que les bases de données, les API, les bibliothèques de documents, etc., fournissant des données en temps réel ou historiques aux LLM.
  2. Outils et services: tels que les outils de calcul, les moteurs de recherche, les services tiers, etc., étendant les capacités des LLM.
  3. Gestion du contexte: maintien dynamique du contexte de conversation du LLM pour garantir cohérence et consistance.

Architecture MCP

L'architecture MCP se compose de quatre éléments clés :

  1. Hôte: Un hôte est une application d'IA qui s'attend à obtenir des données à partir de serveurs, comme un environnement de développement intégré (IDE), un chatbot, etc. L'hôte est responsable de l'initialisation et de la gestion des clients, de la gestion de l'autorisation des utilisateurs, de l'agrégation du contexte, entre autres.
  2. Client: Le client est le pont entre l'hôte et le serveur. Il maintient une connexion un à un avec le serveur et est responsable du routage des messages, de la gestion des capacités, de la négociation du protocole, de la gestion des abonnements, entre autres. Le client garantit que la communication entre l'hôte et le serveur est claire, sécurisée et efficace.
  3. Serveur: Le serveur est un composant qui fournit des données et des outils externes. Il fournit un contexte et des fonctionnalités supplémentaires aux grands modèles de langage via des outils, des ressources et des modèles de prompt. Par exemple, un serveur peut fournir des appels API à des services externes tels que Gmail et Slack.
  4. Protocole de base: Le protocole de base définit la manière dont les hôtes, les clients et les serveurs communiquent. Il comprend les formats de message, la gestion du cycle de vie, les mécanismes de transport, entre autres.

MCP est comme USB-C, permettant à différents appareils de se connecter entre eux via la même interface.


Comment fonctionne MCP

MCP permet l'interaction entre les LLM et des ressources externes en définissant des formats de données standardisés et des protocoles de communication.

MCP utilise JSON-RPC 2.0 comme format de message, en communiquant au moyen de messages standard de requête, de réponse et de notification.

MCP prend en charge plusieurs mécanismes de transport, notamment l'entrée/sortie standard locale (Stdio) et les Server-Sent Events (SSE) basés sur HTTP.

Le cycle de vie de MCP comprend trois phases : l'initialisation, l'exploitation et l'arrêt, garantissant que l'établissement de la connexion, la communication et la terminaison sont tous conformes à la spécification du protocole.

Voici son flux de travail :

1. Requête de contexte

Une application LLM envoie une requête de contexte à une ressource externe, en incluant les données ou le type de service requis.

  • L'application LLM envoie une requête à la ressource externe en fonction des exigences de la tâche.
  • La ressource externe renvoie les données requises ou les résultats du service.

2. Intégration du contexte

L'application LLM intègre les données de contexte renvoyées par la ressource externe dans le modèle afin de générer des réponses ou d'exécuter des tâches.

  • L'application LLM combine les données externes avec les connaissances internes du modèle pour générer des réponses plus précises ou plus riches.

3. Gestion du contexte

MCP prend en charge la gestion dynamique du contexte de conversation du LLM, garantissant la cohérence des conversations à plusieurs tours.

  • Le gestionnaire de contexte conserve l'historique et l'état de la conversation.
  • L'application LLM génère des réponses cohérentes en fonction du contexte.

Partie clé du protocole - Messages

Le cœur de MCP est l'utilisation de JSON-RPC 2.0 comme format de message, offrant un moyen standardisé de communication entre les clients et les serveurs.

Le protocole de base définit trois types de messages de base : Requêtes, Réponses et Notifications.

Voici une description détaillée de ces trois types de messages :

1. Requêtes

Les messages de requête sont utilisés pour initier des opérations du client vers le serveur, ou du serveur vers le client.

La structure d'un message de requête est la suivante :

{
  "jsonrpc": "2.0",
  "id": "string | number",
  "method": "string",
  "params": {
    "[key: string]": "unknown"
  }
}
  • jsonrpc: version du protocole, fixée à"2.0"。
  • id: identifiant unique de la requête, qui peut être une chaîne de caractères ou un nombre.
  • method: le nom de la méthode à appeler, qui est une chaîne de caractères.
  • params: paramètres de la méthode, un objet optionnel de paires clé-valeur où les clés sont des chaînes de caractères et les valeurs peuvent être de n'importe quel type.

2. Réponses

Les messages de réponse sont des réponses aux requêtes, envoyés du serveur vers le client, ou du client vers le serveur.

La structure d'un message de réponse est la suivante :

{
  "jsonrpc": "2.0",
  "id": "string | number",
  "result": {
    "[key: string]": "unknown"
  },
  "error": {
    "code": "number",
    "message": "string",
    "data": "unknown"
  }
}
  • jsonrpc: version du protocole, fixée à"2.0"。
  • id: correspondant à celui de la requêteidid, utilisé pour identifier la requête à laquelle la réponse correspond.
  • result: si la requête réussit,resultle champ contient le résultat de l'opération, qui est un objet de paires clé-valeur.
  • error: si la requête échoue,errorle champ contient des informations d'erreur, où :
    • code: code d'erreur, qui est un nombre.
    • message: description de l'erreur, qui est une chaîne de caractères.
    • data: informations d'erreur supplémentaires facultatives, qui peuvent être de n'importe quel type.

3. Notifications

Les messages de notification sont des messages unidirectionnels qui ne nécessitent pas de réponse de la part du récepteur.

La structure d'un message de notification est la suivante :

{
  "jsonrpc": "2.0",
  "method": "string",
  "params": {
    "[key: string]": "unknown"
  }
}
  • jsonrpc: version du protocole, fixée à"2.0"。
  • method: le nom de la méthode à appeler, qui est une chaîne de caractères.
  • params: paramètres de la méthode, un objet optionnel de paires clé-valeur où les clés sont des chaînes de caractères et les valeurs peuvent être de n'importe quel type.

Notes

  • Requêtes et réponses: Les requêtes et les réponses sont en correspondance un à un ; après que le client envoie une requête, le serveur renvoie une réponse.idLe champ est utilisé pour associer les requêtes et les réponses.
  • Notifications: Les notifications sont unidirectionnelles ; l’émetteur n’a pas besoin d’attendre une réponse du destinataire. Les notifications sont généralement utilisées dans des scénarios tels que la diffusion d’événements ou les mises à jour de statut.
  • Gestion des erreurs: Si une requête échoue, la réponse contiendra leerrorchamp, fournissant des codes d’erreur et des descriptions pour aider les développeurs à localiser rapidement les problèmes.

Principales caractéristiques de MCP

  1. Interface standardisée: Définir des interfaces et des protocoles unifiés pour garantir la compatibilité entre les LLM et les ressources externes.
  2. Intégration dynamique: Permettre aux LLM d’accéder dynamiquement à des sources de données et à des outils externes et de les intégrer.
  3. Prise en compte du contexte: Prendre en charge la gestion dynamique du contexte de conversation pour améliorer la cohérence dans les conversations à plusieurs tours.
  4. Ouverture et extensibilité: Permettre aux développeurs tiers d’étendre les fonctionnalités et les ressources des applications LLM.

Scénarios d’application de MCP

MCP est largement utilisé dans les scénarios suivants :

  1. Systèmes de questions-réponses améliorés: Fournir des réponses en temps réel et précises en intégrant des sources de données externes.
  2. Assistants intelligents: Effectuer des tâches complexes (telles que la réservation, le calcul, la recherche, etc.) en intégrant des outils et des services.
  3. Gestion des connaissances: Fournir un support de connaissances professionnelles du domaine en intégrant des bibliothèques de documents et des bases de données.
  4. Conversations multi-tours: Obtenir des conversations multi-tours cohérentes grâce à la gestion du contexte.

Avantages et inconvénients de MCP

Avantages :

  1. Extension des fonctionnalités: Étendre considérablement les fonctionnalités des applications LLM en intégrant des ressources externes.
  2. Flexibilité: Prend en charge l'accès dynamique et l'intégration de multiples sources de données et outils.
  3. Ouverture: Les protocoles standardisés prennent en charge le développement et l'intégration par des tiers.

Inconvénients :

  1. Complexité: Nécessite la conception et la maintenance de la logique d'interaction avec des ressources externes.
  2. Surcharge de performance: L'accès à des ressources externes peut introduire une latence supplémentaire.

Alternatives à MCP

Dans certains scénarios, les alternatives suivantes peuvent être utilisées :

  1. API personnalisée: Interfaces API personnalisées développées pour les applications LLM.
  2. Mécanisme de plugin: Utilisez le mécanisme de plugin pour étendre les fonctionnalités des applications LLM.
  3. Graphe de connaissances: Intégrez des connaissances externes via des graphes de connaissances.
Autres extensions