Documentation Officielle MCP (Française)
  1. Concepts
Documentation Officielle MCP (Française)
  • Commencer
    • Introduction
    • Exemples de serveurs
    • Exemples de clients
    • Démarrage rapide
      • Pour les développeurs de serveurs
      • Pour les développeurs clients
      • Pour les utilisateurs de Claude Desktop
  • Tutoriels
    • Construire MCP avec LLMs
    • Débogage
    • Inspecteur
  • Concepts
    • Architecture de base
    • Ressources
    • Invites
    • Outils
    • Échantillonnage
    • Racines
    • Transports
  • Développement
    • Quoi de neuf
    • Feuille de route
    • Contribuer
  1. Concepts

Architecture de base

Comprendre comment MCP connecte les clients, les serveurs et les LLM
Le 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.

Aperçu#

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
image-20250312145458026

Composants principaux#

Couche Protocole#

La couche protocole gère le cadrage des messages, la liaison requête/réponse et les modèles de communication de haut niveau.
TypeScript
Python
Les classes clés incluent :
Protocol
Client
Server

Couche Transport#

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.
Transport Stdio
Utilise l'entrée/sortie standard pour la communication
Idéal pour les processus locaux
2.
HTTP avec transport SSE
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.

Types de messages#

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 :

Cycle de vie de la connexion#

1. Initialisation#

image.png
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

2. Échange de messages#

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

3. Terminaison#

L'une ou l'autre des parties peut mettre fin à la connexion :
Arrêt propre via close()
Déconnexion du transport
Conditions d'erreur

Gestion des erreurs#

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

Exemple d'implémentation#

Voici un exemple de base d'implémentation d'un serveur MCP :
TypeScript
Python

Meilleures pratiques#

Sélection du transport#

1.
Communication locale
Utilisez le transport stdio pour les processus locaux
Efficace pour la communication sur la même machine
Gestion simple des processus
2.
Communication à distance
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

Gestion des messages#

1.
Traitement des requêtes
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.
Rapports d'avancement
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.
Gestion des erreurs
Utilisez les codes d'erreur appropriés
Incluez des messages d'erreur utiles
Nettoyez les ressources en cas d'erreur

Considérations de sécurité#

1.
Sécurité du transport
Utilisez TLS pour les connexions à distance
Validez les origines de connexion
Mettez en œuvre l'authentification si nécessaire
2.
Validation des messages
Validez tous les messages entrants
Nettoyez les entrées
Vérifiez les limites de taille des messages
Vérifiez le format JSON-RPC
3.
Protection des ressources
Mettez 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.
Gestion des erreurs
Ne divulguez pas d'informations sensibles
Enregistrez les erreurs pertinentes pour la sécurité
Mettez en œuvre un nettoyage approprié
Gérez les scénarios DoS

Débogage et surveillance#

1.
Journalisation
Enregistrez les événements du protocole
Suivez le flux des messages
Surveillez les performances
Enregistrez les erreurs
2.
Diagnostics
Mettez en œuvre des contrôles d'intégrité
Surveillez l'état de la connexion
Suivez l'utilisation des ressources
Profilez les performances
3.
Tests
Testez différents transports
Vérifiez la gestion des erreurs
Vérifiez les cas limites
Testez la charge des serveurs
Modified at 2025-03-13 04:28:36
Previous
Inspecteur
Next
Ressources
Built with