1) Scope : ce que couvre MCP
À retenirMCP définit surtout un protocole standard d’échange de contexte entre une application IA et des serveurs qui exposent des données, des outils ou des templates de prompts.
Le projet inclut plusieurs éléments :
- La spécification MCP : les règles du protocole.
- Les SDKs : bibliothèques pour implémenter clients et serveurs.
- Des outils de développement : par exemple l’inspector.
- Des serveurs de référence : implémentations exemples.
2) Participants : Host, Client, Server
Très important| Élément | Rôle | Ce qu’il fait concrètement |
|---|---|---|
| MCP Host | L’application IA | Coordonne un ou plusieurs clients MCP, collecte le contexte, le transmet au LLM, décide quand utiliser un outil. |
| MCP Client | Composant de connexion | Maintient une connexion dédiée vers un serveur MCP précis, envoie les requêtes, reçoit réponses et notifications. |
| MCP Server | Fournisseur de capacités | Expose des tools, resources, prompts, et éventuellement des demandes côté client comme sampling ou elicitation. |
Serveur local
Souvent utilisé avec STDIO. Le serveur tourne sur la même machine, parfois lancé directement par l’application.
Serveur distant
Souvent utilisé avec Streamable HTTP. Le serveur peut desservir plusieurs clients MCP à distance.
3) Les deux couches de MCP
Architecture interne| Couche | Rôle | Contenu |
|---|---|---|
| Data Layer | Définit le protocole logique | JSON-RPC 2.0, lifecycle, primitives, notifications, sémantique des messages. |
| Transport Layer | Définit le canal de communication | Établissement de connexion, framing, sécurité, auth, STDIO ou Streamable HTTP. |
4) Data Layer
Le cœurLa data layer repose sur JSON-RPC 2.0. Clients et serveurs s’échangent des requêtes, des réponses et des notifications.
- Lifecycle management : initialisation, négociation des capacités, terminaison.
- Fonctionnalités serveur : tools, resources, prompts.
- Fonctionnalités client : sampling, elicitation, logging.
- Utilitaires : notifications, suivi de progression, opérations longues.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}
5) Transport Layer
Le canalElle gère la communication entre participants MCP : ouverture de connexion, encadrement des messages, sécurité, authentification.
| Transport | Usage typique | Caractéristique |
|---|---|---|
| STDIO | Serveur local | Communication directe entre processus, très performant, sans surcoût réseau. |
| Streamable HTTP | Serveur distant | HTTP POST côté client → serveur, avec éventuellement des événements serveur pour le streaming. |
6) Lifecycle management
Protocole statefulMCP est un protocole stateful. Cela veut dire qu’on ne fait pas juste un appel isolé : il existe une relation de session où client et serveur doivent d’abord se mettre d’accord sur ce qu’ils supportent.
Pourquoi cette phase existe
- Négocier la version du protocole.
- Déclarer les capacités disponibles de chaque côté.
- Échanger des informations d’identité pour le debug et la compatibilité.
Séquence mentale
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {
"elicitation": {}
},
"clientInfo": {
"name": "example-client",
"version": "1.0.0"
}
}
}
{
"jsonrpc": "2.0",
"method": "notifications/initialized"
}
7) Les primitives MCP
Le point le plus importantLes primitives définissent ce que client et serveur peuvent offrir l’un à l’autre. C’est le cœur fonctionnel de MCP.
Primitives exposées par le serveur
| Primitive | Rôle | Exemple |
|---|---|---|
| Tools | Fonctions exécutables | Appeler une API, lancer une requête SQL, modifier un fichier. |
| Resources | Données de contexte | Contenu d’un fichier, schéma de base de données, réponse API. |
| Prompts | Templates réutilisables | System prompt, few-shot prompt, modèle de tâche. |
Primitives exposées par le client
| Primitive | Rôle | Utilité |
|---|---|---|
| Sampling | Demander une complétion au host | Le serveur reste model-agnostic et délègue l’appel LLM au client. |
| Elicitation | Demander des infos à l’utilisateur | Confirmation d’action, précision, saisie complémentaire. |
| Logging | Envoyer des logs au client | Debug, observabilité, monitoring. |
Pattern général
tools/list → découvrir les tools tools/call → exécuter un tool resources/list → découvrir les resources resources/read → lire une resource prompts/list → découvrir les prompts prompts/get → récupérer un prompt
8) Exemple complet d’interaction MCP
Très utile pour examenÉtape 1 — Initialisation
Le client ouvre la session et négocie les capacités.
Client → initialize Server → répond avec protocolVersion + serverInfo + capabilities Client → notifications/initialized
Étape 2 — Découverte des tools
Une fois prêt, le client demande la liste des tools.
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}
La réponse contient un tableau de tools avec leurs métadonnées.
| Champ | Rôle |
|---|---|
| name | Identifiant unique exact du tool, utilisé pour l’exécution. |
| title | Nom lisible par un humain. |
| description | Explique ce que fait le tool et quand l’utiliser. |
| inputSchema | Schéma JSON des paramètres attendus, utile pour validation et documentation. |
Étape 3 — Exécution d’un tool
Le client utilise tools/call avec le nom exact du tool et ses arguments.
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "weather_current",
"arguments": {
"location": "San Francisco",
"units": "imperial"
}
}
}
Éléments clés de l’exécution
- name doit correspondre exactement au nom retourné par
tools/list. - arguments doit respecter
inputSchema. - Le tout reste enveloppé dans un message JSON-RPC 2.0 classique avec un
id.
Réponse d’exécution
MCP renvoie un tableau content, ce qui permet des réponses riches et multi-formats.
- texte,
- images,
- références à des ressources,
- autres formats structurés.
9) Notifications et mises à jour temps réel
RéactivitéMCP supporte des notifications JSON-RPC, donc des messages envoyés sans attendre de réponse.
Exemple : changement dans la liste des tools
{
"jsonrpc": "2.0",
"method": "notifications/tools/list_changed"
}
Ce qu’il faut comprendre
- Pas de champ id → donc ce n’est pas une requête classique, aucune réponse n’est attendue.
- Basé sur les capacités annoncées → par exemple si le serveur avait déclaré
"tools": {"listChanged": true}. - Orienté événements → le serveur prévient le client quand son état change.
Réaction typique du client
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/list"
}
Donc le cycle est :
10) Comment cela marche dans une app IA
Vision système- Le host configure un ou plusieurs serveurs MCP.
- Pour chaque serveur, il crée un client MCP.
- Le client initialise la session et récupère les capacités.
- Le host agrège tools/resources/prompts disponibles.
- Le LLM peut alors choisir ou suggérer l’usage d’un tool.
- Le host route l’exécution vers le bon serveur MCP.
- Le résultat revient et alimente la conversation.
# Vision simplifiée
for each server:
connect()
initialize()
list_tools()
when llm requests a tool:
find matching MCP server
call tools/call
inject result into conversation
11) Points de compréhension cruciaux
Pièges classiques- MCP ≠ LLM : c’est un protocole de contexte, pas un modèle.
- Le host n’est pas le client MCP : le host pilote, le client maintient la connexion.
- Un serveur MCP peut être local ou distant.
- JSON-RPC 2.0 est la base logique commune, quel que soit le transport.
- La découverte vient avant l’exécution : on fait souvent
tools/listavanttools/call. - Les notifications n’attendent pas de réponse.
12) Fiche de révision express
À mémoriser- Qu’est-ce que MCP en une phrase ?
- Un protocole standard pour permettre à une application IA d’obtenir du contexte et d’exécuter des capacités exposées par des serveurs.
- Quels sont les 3 acteurs principaux ?
- Le host, le client MCP, et le serveur MCP.
- Quelle est la différence entre host et client MCP ?
- Le host orchestre l’application IA ; le client MCP est le composant qui gère la connexion avec un serveur précis.
- Quelles sont les deux couches de MCP ?
- La data layer et la transport layer.
- Sur quoi repose la data layer ?
- Sur JSON-RPC 2.0.
- Quels sont les 3 types principaux de primitives côté serveur ?
- Tools, resources, prompts.
- Quelles sont les primitives importantes côté client ?
- Sampling, elicitation, logging.
- Pourquoi initialise-t-on la session ?
- Pour négocier version, capacités et identité avant les échanges utiles.
- Quel est l’ordre typique d’un échange ?
- initialize → notifications/initialized → tools/list → tools/call → notifications si changement.
- À quoi servent les notifications ?
- À informer le client en temps réel d’un changement sans qu’il ait besoin de demander en boucle.
13) Résumé ultra-court
30 secondes
MCP est un protocole standard qui permet à une application IA de parler à des serveurs fournissant
des outils, des ressources et des prompts.
L’application joue le rôle de host et crée un client MCP par serveur.
Les échanges logiques utilisent JSON-RPC 2.0, tandis que le transport peut être en
STDIO ou en HTTP.
Le protocole commence par une initialisation, puis le client découvre les capacités disponibles
via des requêtes comme tools/list, exécute via tools/call, et peut être tenu à jour
grâce aux notifications.