Introduction au Model Context Protocol

Plongée approfondie dans le Model Context Protocol (MCP)

Spécification du Protocole40 min de lecture

Aperçu du Protocole

Le Model Context Protocol (MCP) est un standard ouvert qui standardise la façon dont les applications fournissent du contexte aux grands modèles de langage (LLM). Pensez au MCP comme un port USB-C pour les applications IA—fournissant un moyen standardisé de connecter les modèles IA à différentes sources de données et outils.

Avantages Clés

  • Interface de communication standardisée
  • Transmission de données sécurisée
  • Conception d'architecture extensible
  • Compatibilité multiplateforme
  • Synchronisation de contexte en temps réel
  • Support d'extension basé sur des plugins

Cas d'Usage

  • Analyse et compréhension du code
  • Génération et maintenance de documentation
  • Intégration de gestion de projet
  • Requêtes et opérations de base de données
  • Intégration de services API
  • Automatisation des flux de travail

Conception d'Architecture

Architecture en couches du protocole MCP et aperçu des composants

Hôte MCP

Application IA

L'application IA qui coordonne et gère un ou plusieurs clients MCP

Responsabilités Clés :

  • Coordonner plusieurs clients MCP
  • Gérer les interactions du modèle IA
  • Traiter les réponses du serveur
  • Gérer l'état de session

Client MCP

Gestionnaire de Connexion

Un composant qui maintient une connexion à un serveur MCP et obtient le contexte d'un serveur MCP pour que l'hôte MCP l'utilise

Responsabilités Clés :

  • Maintenir une connexion serveur un-à-un
  • Envoyer des requêtes de contexte
  • Gérer les réponses du serveur
  • Gérer le cycle de vie de la connexion

Serveur MCP

Fournisseur de Contexte

Un programme qui fournit du contexte aux clients MCP via des outils, des ressources et des invites

Responsabilités Clés :

  • Accepter les connexions client
  • Traiter les demandes de contexte
  • Retourner des données structurées
  • Maintenir l'état des ressources

Couche de Transport

Canal de Communication

Gère les canaux de communication et l'authentification entre clients et serveurs

Responsabilités Clés :

  • Transport STDIO pour les processus locaux
  • Transport HTTP pour les serveurs distants
  • Encadrement et sérialisation des messages
  • Authentification et sécurité

Couche de Données

Définition de Protocole

Définit le protocole basé sur JSON-RPC pour la communication client-serveur

Responsabilités Clés :

  • Format de message JSON-RPC 2.0
  • Gestion du cycle de vie
  • Définitions primitives (outils, ressources, invites)
  • Système de notification

Primitives MCP

Primitives de base qui définissent ce que les clients et serveurs peuvent s'offrir mutuellement

Outils

Fonctions exécutables que les applications IA peuvent invoquer pour effectuer des actions

Exemples :

  • Opérations de fichiers (lire, écrire, créer)
  • Appels API vers des services externes
  • Requêtes et opérations de base de données
  • Analyse et compilation de code
  • Exécution de commandes système

Méthodes Disponibles :

tools/listtools/call

Ressources

Sources de données qui fournissent des informations contextuelles aux applications IA

Exemples :

  • Contenu et métadonnées de fichiers
  • Enregistrements et schémas de base de données
  • Réponses API et documentation
  • Informations du dépôt Git
  • Fichiers de configuration

Méthodes Disponibles :

resources/listresources/read

Invites

Modèles réutilisables qui aident à structurer les interactions avec les modèles de langage

Exemples :

  • Invites système pour des tâches spécifiques
  • Exemples few-shot pour l'apprentissage
  • Modèles de révision de code
  • Invites de génération de documentation
  • Modèles d'analyse et de résumé

Méthodes Disponibles :

prompts/listprompts/get

Couche de Transport

Mécanismes de communication qui permettent l'échange de données entre clients et serveurs

Transport STDIO

Utilise les flux d'entrée/sortie standard pour la communication directe de processus

Cas d'Usage :

  • Serveurs MCP locaux sur la même machine
  • Communication directe de processus
  • Performance optimale sans surcharge réseau
  • Configuration et installation simples

Exemple :

npx @modelcontextprotocol/server-filesystem /path/to/files

Lancer le serveur de système de fichiers via STDIO

Transport HTTP

Utilise HTTP POST pour les messages client-serveur avec des événements envoyés par le serveur optionnels

Cas d'Usage :

  • Serveurs MCP distants
  • Services basés sur le cloud
  • Authentification avec des jetons bearer
  • Déploiements de serveurs évolutifs

Exemple :

https://api.example.com/mcp

Se connecter au serveur MCP distant via HTTP

Types de Messages

Types de messages basés sur JSON-RPC 2.0 pris en charge par le protocole MCP

initialize

Initialiser la connexion et négocier la version du protocole et les capacités

Client → Serveur

Exemple de Message :

{
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": {
      "tools": {},
      "resources": {}
    },
    "clientInfo": {
      "name": "gemini-cli",
      "version": "1.0.0"
    }
  }
}

tools/list

Découvrir les outils disponibles sur le serveur

Client → Serveur

Exemple de Message :

{
  "method": "tools/list",
  "params": {}
}

tools/call

Exécuter un outil spécifique avec les arguments fournis

Client → Serveur

Exemple de Message :

{
  "method": "tools/call",
  "params": {
    "name": "com.example.weather/current",
    "arguments": {
      "location": "San Francisco",
      "units": "imperial"
    }
  }
}

resources/list

Obtenir la liste des ressources disponibles

Client → Serveur

Exemple de Message :

{
  "method": "resources/list",
  "params": {}
}

resources/read

Lire le contenu de ressource spécifique

Client → Serveur

Exemple de Message :

{
  "method": "resources/read",
  "params": {
    "uri": "file:///path/to/file.ts"
  }
}

prompts/list

Obtenir les modèles d'invite disponibles

Client → Serveur

Exemple de Message :

{
  "method": "prompts/list",
  "params": {}
}

notifications/tools/list_changed

Notifier le client lorsque les outils disponibles changent

Serveur → Client

Exemple de Message :

{
  "method": "notifications/tools/list_changed"
}

Exemple de Définition d'Outil

Exemple de la façon dont les outils sont définis dans le protocole MCP

Définition d'Outil Météo

Cet exemple montre comment un outil météo est défini avec une validation de schéma d'entrée et une documentation appropriées.

// MCP 工具定义示例
{
  "name": "com.example.weather/current",
  "title": "Get Current Weather",
  "description": "Get current weather information for a specified location",
  "inputSchema": {
    "type": "object",
    "properties": {
      "location": {
        "type": "string",
        "description": "The location to get weather for"
      },
      "units": {
        "type": "string",
        "enum": ["metric", "imperial"],
        "description": "Temperature units",
        "default": "metric"
      },
      "include_forecast": {
        "type": "boolean",
        "description": "Whether to include forecast data",
        "default": false
      }
    },
    "required": ["location"]
  }
}

Composants Clés :

  • name: Identifiant unique pour l'outil
  • title: Nom d'affichage lisible par l'homme
  • description: Explication détaillée de la fonctionnalité
  • inputSchema: Schéma JSON pour la validation d'entrée

Meilleures Pratiques:

  • Utiliser des noms d'outils avec espace de noms (ex: com.example.weather/current)
  • Fournir une documentation claire et descriptive
  • Définir des schémas d'entrée complets
  • Inclure des valeurs par défaut le cas échéant

Flux de Communication

Flux de communication complet entre les clients et serveurs MCP

1

Initialiser la Connexion

Le client établit une connexion et négocie les capacités avec le serveur

Étapes Détaillées:

  • Le client envoie une demande d'initialisation avec la version du protocole
  • Le serveur répond avec les capacités prises en charge
  • Les deux parties négocient les paramètres de communication
  • Connexion établie avec la version de protocole convenue
2

Découverte de Capacités

Le client découvre les outils, ressources et invites disponibles

Étapes Détaillées:

  • Demander la liste des outils disponibles (tools/list)
  • Demander les ressources disponibles (resources/list)
  • Demander les invites disponibles (prompts/list)
  • Mettre en cache les informations de capacité pour un accès efficace
3

Échange de Contexte

Le client demande et reçoit des données contextuelles des ressources

Étapes Détaillées:

  • Envoyer des demandes de lecture de ressources (resources/read)
  • Recevoir des données structurées dans divers formats
  • Traiter la conversion de format de données selon les besoins
  • Mettre à jour le contexte local avec les informations reçues
4

Exécution d'Outils

Le client invoque les outils du serveur pour effectuer des actions

Étapes Détaillées:

  • Construire des demandes d'appel d'outils (tools/call)
  • Passer les paramètres requis avec une validation appropriée
  • Attendre les résultats d'exécution du serveur
  • Traiter les données retournées et gérer les erreurs
5

Mises à Jour en Temps Réel

Maintenir la synchronisation par les notifications

Étapes Détaillées:

  • Écouter les notifications de changement de ressources
  • Gérer les mises à jour de liste d'outils dynamiquement
  • Traiter les interruptions de connexion avec élégance
  • Rétablir les connexions quand nécessaire

Fonctionnalités de Sécurité

Mécanismes de sécurité et mesures de protection dans le protocole MCP

Authentification

Plusieurs mécanismes d'authentification pris en charge

Méthodes Supportées:

  • Authentification par clé API
  • Flux OAuth 2.0
  • Jetons Bearer
  • En-têtes d'authentification personnalisés

Autorisation

Gestion des permissions à grain fin

Méthodes Supportées:

  • Permissions au niveau des ressources
  • Restrictions de type d'opération
  • Contrôle d'accès basé sur le temps
  • Limitation de débit et quotas

Protection des Données

Sécurité des données de bout en bout

Méthodes Supportées:

  • Chiffrement de transport TLS/SSL
  • Chiffrement du contenu des messages
  • Masquage des données sensibles
  • Gestion sécurisée des clés

Audit et Surveillance

Suivi complet des opérations

Méthodes Supportées:

  • Journalisation des demandes/réponses
  • Enregistrements de vérification des permissions
  • Suivi des erreurs et exceptions
  • Collection de métriques de performance

Commencer

Prêt à commencer à utiliser MCP avec Gemini CLI ? Explorez ces ressources