Introduction au Model Context Protocol
Plongée approfondie dans le Model Context Protocol (MCP)
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/list
tools/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/list
resources/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/list
prompts/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
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
Exemple de Message :
{ "method": "tools/list", "params": {} }
tools/call
Exécuter un outil spécifique avec les arguments fournis
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
Exemple de Message :
{ "method": "resources/list", "params": {} }
resources/read
Lire le contenu de ressource spécifique
Exemple de Message :
{ "method": "resources/read", "params": { "uri": "file:///path/to/file.ts" } }
prompts/list
Obtenir les modèles d'invite disponibles
Exemple de Message :
{ "method": "prompts/list", "params": {} }
notifications/tools/list_changed
Notifier le client lorsque les outils disponibles changent
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
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
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
É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
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
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