Comprendre comment MCP connecte les clients, les serveurs et les LLMLe Model Context Protocol (MCP) est construit sur une architecture flexible et extensible qui permet une communication transparente entre les applications LLM et les intégrations. Ce document couvre les principaux composants et concepts architecturaux.MCP suit une architecture client-serveur où :Les Hosts sont des applications LLM (comme Claude Desktop ou des IDE) qui initient des connexions
Les Clients maintiennent des connexions 1:1 avec les serveurs, à l'intérieur de l'application hôte
Les Serveurs fournissent du contexte, des outils et des invites aux clients
La couche protocole gère le cadrage des messages, la liaison requête/réponse et les modèles de communication de haut niveau.Les classes clés incluent :La couche transport gère la communication réelle entre les clients et les serveurs. MCP prend en charge plusieurs mécanismes de transport :1.
Utilise l'entrée/sortie standard pour la communication
Idéal pour les processus locaux
2.
Utilise Server-Sent Events pour les messages serveur vers client
HTTP POST pour les messages client vers serveur
Tous les transports utilisent JSON-RPC 2.0 pour échanger des messages. Consultez la spécification pour des informations détaillées sur le format des messages du Model Context Protocol.MCP a ces principaux types de messages :1.
Les Requêtes attendent une réponse de l'autre côté : 2.
Les Résultats sont des réponses réussies aux requêtes : 3.
Les Erreurs indiquent qu'une requête a échoué : 4.
Les Notifications sont des messages unidirectionnels qui n'attendent pas de réponse : 1.
Le client envoie une requête initialize
avec la version du protocole et les capacités
2.
Le serveur répond avec sa version de protocole et ses capacités
3.
Le client envoie une notification initialized
comme accusé de réception
4.
L'échange normal de messages commence
Après l'initialisation, les modèles suivants sont pris en charge :Requête-Réponse : Le client ou le serveur envoie des requêtes, l'autre répond
Notifications : L'une ou l'autre des parties envoie des messages unidirectionnels
L'une ou l'autre des parties peut mettre fin à la connexion :MCP définit ces codes d'erreur standard :Les SDK et les applications peuvent définir leurs propres codes d'erreur au-dessus de -32000.Les erreurs sont propagées via :Réponses d'erreur aux requêtes
Événements d'erreur sur les transports
Gestionnaires d'erreurs au niveau du protocole
Voici un exemple de base d'implémentation d'un serveur MCP :1.
Utilisez le transport stdio pour les processus locaux
Efficace pour la communication sur la même machine
Gestion simple des processus
2.
Utilisez SSE pour les scénarios nécessitant une compatibilité HTTP
Tenez compte des implications en matière de sécurité, notamment l'authentification et l'autorisation
1.
Validez minutieusement les entrées
Utilisez des schémas de type sécurisé
Gérez les erreurs avec élégance
Mettez en œuvre des délais d'attente
2.
Utilisez des jetons de progression pour les opérations longues
Signalez la progression de manière incrémentielle
Incluez la progression totale lorsque cela est connu
3.
Utilisez les codes d'erreur appropriés
Incluez des messages d'erreur utiles
Nettoyez les ressources en cas d'erreur
1.
Utilisez TLS pour les connexions à distance
Validez les origines de connexion
Mettez en œuvre l'authentification si nécessaire
2.
Validez tous les messages entrants
Vérifiez les limites de taille des messages
Vérifiez le format JSON-RPC
3.
Protection des ressourcesMettez en œuvre des contrôles d'accès
Validez les chemins d'accès aux ressources
Surveillez l'utilisation des ressources
Limitez le débit des requêtes
4.
Ne divulguez pas d'informations sensibles
Enregistrez les erreurs pertinentes pour la sécurité
Mettez en œuvre un nettoyage approprié
1.
Enregistrez les événements du protocole
Suivez le flux des messages
Surveillez les performances
2.
Mettez en œuvre des contrôles d'intégrité
Surveillez l'état de la connexion
Suivez l'utilisation des ressources
Profilez les performances
3.
Testez différents transports
Vérifiez la gestion des erreurs
Testez la charge des serveurs
Modified at 2025-03-13 04:28:36