MCP — Cours Complet
Cours complet · Mars 2025

Model
Context
Protocol

Architecture, écosystème, et évolutions d'un standard qui redéfinit
l'intégration entre les LLMs et le monde réel

~25'lecture
10chapitres
Int+niveau
01

Contexte & Genèse du MCP

Le problème que le MCP résout

Les grands modèles de langage (LLM) comme Claude, GPT-4 ou Gemini sont, dans leur état natif, des systèmes fermés. Ils reçoivent du texte, produisent du texte, mais n'ont aucun accès direct aux données de l'entreprise, aux outils internes, aux bases de données, aux APIs tierces ou au système de fichiers.

Pour combler ce fossé, les développeurs ont longtemps bricolé des solutions ad hoc : copier-coller de données dans les prompts, intégrations custom en dur dans le code, wrappers propriétaires… Cette fragmentation engendrait plusieurs problèmes critiques :

  • Duplication de code — chaque équipe réimplémentait sa propre glue entre l'IA et les outils
  • Maintenance coûteuse — un changement d'API tierce cassait l'intégration entière
  • Sécurité approximative — les credentials et contextes sensibles circulaient de façon non standardisée
  • Scalabilité limitée — impossible de réutiliser une intégration d'un projet à l'autre
Analogie L'analogie la plus juste : avant USB, chaque fabricant avait son propre connecteur. MCP est l'USB de l'IA — un port universel pour brancher n'importe quel outil à n'importe quel modèle.

Anthropic lance le MCP — novembre 2024

Le 25 novembre 2024, Anthropic publie le Model Context Protocol en open-source. L'annonce est accompagnée d'un SDK disponible en Python et TypeScript, ainsi que d'une poignée de serveurs MCP de référence connectant Claude Desktop à des outils courants : filesystem, GitHub, Google Drive, Slack, PostgreSQL, Puppeteer, etc.

La décision d'ouvrir le protocole dès le départ est stratégiquement importante : Anthropic ne cherche pas à capturer la valeur de l'écosystème d'intégration, mais à définir le standard. La communauté réagit fortement — en quelques semaines, des centaines de serveurs MCP tiers émergent.

L'écosystème avant MCP : le chaos des intégrations

ApprocheProblème principal
Function calling (OpenAI)Propriétaire, couplage fort au modèle
LangChain toolsComplexité, dépendance à un framework
Plugins ChatGPTFermé, déprécié en 2024
RAG customLecture seule, pas d'actions
Agents AutoGPTNon déterministe, difficile à auditer
02

Architecture Technique du MCP

Vue d'ensemble : un protocole client-serveur

MCP s'articule autour d'une architecture client-serveur standardisée. Trois acteurs principaux :

ActeurRôle
HostL'application qui embarque le LLM (ex : Claude Desktop, un IDE, une app custom). Il orchestre la connexion aux serveurs MCP.
Client MCPComposant interne au Host qui maintient une session 1:1 avec chaque serveur MCP. Gère le protocole de communication.
Serveur MCPProgramme léger (souvent local) qui expose des capacités : outils, ressources, prompts. C'est ici que vit la logique métier.
Principe fondamental Un Host peut se connecter à plusieurs serveurs MCP simultanément. Un serveur MCP peut exposer simultanément des tools, des resources et des prompts.

Le protocole de base : JSON-RPC 2.0

MCP repose sur JSON-RPC 2.0 comme protocole de messagerie. Ce choix est délibéré : JSON-RPC est simple, largement supporté, language-agnostic, et permet à la fois des appels request/response et des notifications unidirectionnelles.

La communication suit un cycle en 3 phases :

  1. Initialisation — échange de capabilities entre client et serveur (initialize / initialized)
  2. Opération — échanges normaux : le client appelle les outils, lit les ressources, etc.
  3. Fin de session — fermeture propre avec notification de shutdown

Les 3 primitives fondamentales

Tools — Les outils d'action

Les Tools sont des fonctions que le LLM peut appeler pour effectuer des actions. C'est la primitive la plus utilisée et la plus puissante.

  • Définition — chaque tool possède un nom, une description en langage naturel, et un schéma JSON Schema décrivant ses paramètres
  • Exécution — le LLM décide d'appeler un tool, le client MCP transmet l'appel au serveur, le serveur exécute et renvoie le résultat
  • Contrôle humain — par convention, les tools qui modifient l'état du monde (écriture, suppression, envoi) doivent être approuvés par l'utilisateur
  • Exemples concrets — créer un fichier, exécuter une requête SQL, appeler une API externe, envoyer un email

Resources — Les données consultables

Les Resources sont des données exposées par le serveur que le LLM peut consulter. Contrairement aux Tools, elles sont en lecture seule et identifiées par une URI.

  • Statiques — un fichier de configuration, un document de référence, un schéma de base de données
  • Dynamiques — un flux de logs en temps réel, des données de capteurs IoT, le contenu actuel d'une page web
  • Subscription — le client peut s'abonner aux changements d'une resource (notifications push)
  • Chunking — les resources volumineuses peuvent être lues par morceaux via cursor pagination

Prompts — Les modèles de conversation

Les Prompts sont des templates de conversation pré-définis exposés par le serveur. Ils permettent aux développeurs de packager des workflows complexes et de les rendre accessibles à l'utilisateur via une interface standard.

  • Paramétrables — un prompt peut accepter des arguments (ex : le nom d'un projet, une plage de dates)
  • Multi-messages — un prompt peut définir toute une conversation initiale, pas seulement un message système
  • Découverte — le client liste les prompts disponibles (prompts/list) et peut les présenter dans une UI
03

Les Transports MCP

stdio — La solution locale

Le transport stdio est le plus simple et le plus courant pour les serveurs MCP locaux. Le host lance le serveur MCP comme un sous-processus, et communique avec lui via stdin/stdout. C'est le transport utilisé par Claude Desktop.

  • Avantages — sécurité maximale (pas de réseau), latence minimale, déploiement trivial
  • Inconvénients — limité à la machine locale, un processus par serveur
  • Cas d'usage — accès au filesystem, outils de développement, bases de données locales

HTTP + SSE — Le transport distant

Pour les serveurs MCP hébergés à distance (SaaS, APIs d'entreprise, microservices), MCP utilise HTTP avec Server-Sent Events (SSE). Les requêtes client-vers-serveur passent par HTTP POST, et le serveur pousse ses réponses via SSE.

  • Avantages — déployable en cloud, accessible depuis n'importe où, permet le multi-tenant
  • Inconvénients — latence réseau, nécessite authentification, plus complexe à sécuriser
  • ÉvolutionHTTP Streamable annoncé en mars 2025, unifiant request/response et streaming dans un seul endpoint

L'authentification : le chantier ouvert

La sécurité est l'un des points de friction du MCP actuel. La spécification prévoit OAuth 2.1 pour les serveurs distants, mais l'implémentation reste complexe. Pour les serveurs locaux, la sécurité repose sur l'isolation des processus et les permissions du système d'exploitation.

⚠ Point de vigilance Un serveur MCP malveillant pourrait tenter du prompt injection ou de l'exfiltration de données. La confiance envers un serveur MCP est comparable à la confiance envers un plugin de navigateur.
04

L'Écosystème MCP en 2025

Adoption par les grands acteurs

En l'espace de quelques mois, le MCP est passé de projet open-source d'Anthropic à standard de facto de l'industrie. Plusieurs signaux forts :

ActeurAdoption
OpenAIAnnonce en mars 2025 l'adoption de MCP dans l'API Responses et les Agents SDK
MicrosoftIntégration dans Copilot Studio et Azure AI Foundry
Google DeepMindSupport natif dans Gemini pour Google Workspace
Cursor / WindsurfLes IDEs IA adoptent MCP comme standard d'intégration
Block, Replit, SourcegraphPremières entreprises partenaires dès novembre 2024
CloudflareWorkers AI supporte MCP nativement pour les serveurs edge

Le registre de serveurs MCP

Le dépôt GitHub officiel modelcontextprotocol/servers répertorie des dizaines de serveurs officiels. La communauté en a développé des centaines d'autres. Les grandes catégories :

  • Productivité — Slack, GitHub, Notion, Linear, Jira, Asana, Monday.com
  • Bases de données — PostgreSQL, SQLite, MySQL, MongoDB, Redis, Supabase
  • Cloud & infra — AWS, GCP, Azure, Kubernetes, Docker, Terraform
  • Développement — Git, npm, Docker, terminal shell, LSP
  • Web & scraping — Puppeteer, Playwright, Brave Search, Fetch
  • Data & BI — Tableau, Metabase, BigQuery, dbt
  • Médias & contenu — YouTube, Spotify, Figma, Canva

Clients MCP disponibles

ClientContexte
Claude DesktopPremier client MCP grand public, intégration native
Claude.ai (web)Support MCP via connecteurs dans l'interface web
CursorIDE IA avec support MCP pour les outils de développement
ZedÉditeur de code avec intégration MCP
Cline / Roo-ClineExtension VSCode pour agents IA avec MCP
LibreChatFrontend open-source compatible MCP
05

Mécaniques Avancées

Sampling — L'IA qui parle à l'IA

L'une des primitives les plus puissantes et les moins documentées de MCP est le Sampling. Il permet à un serveur MCP de demander au LLM hôte de générer du texte, en lui passant une conversation et en récupérant la réponse.

En clair : le serveur MCP peut invoquer le modèle d'IA de façon récursive pour décomposer une tâche complexe, analyser un résultat intermédiaire, ou prendre une décision. Cela ouvre la voie à des architectures d'agents multi-étapes sans nécessiter un framework externe.

Exemple concret Un serveur MCP de révision de code pourrait, après avoir récupéré un diff Git, demander au LLM d'analyser les risques de sécurité, puis dans un second appel de générer un message de commit approprié — le tout de façon transparente pour l'utilisateur.

Roots — La négociation de périmètre

Les Roots permettent au client d'indiquer au serveur MCP quels répertoires ou URIs il est autorisé à manipuler. C'est le mécanisme de sandboxing du protocole.

  • Le client déclare ses roots lors de l'initialisation
  • Le serveur devrait respecter ces limites (par convention, non enforced)
  • Exemple : permettre l'accès à /home/user/projet mais pas à /home/user/.ssh

Capacités et négociation de version

À l'initialisation, client et serveur échangent leurs capabilities respectives. Cela permet une compatibilité ascendante : un serveur v2025 peut servir un client v2024 en n'utilisant que les fonctionnalités que ce dernier comprend.

CapabilitySignification
experimentalFeatures en cours de standardisation
rootsSupport des roots par le client
samplingSupport du sampling par le client
loggingSupport des messages de log structurés
resources.subscribeSupport des subscriptions aux ressources
06

Construire un Serveur MCP

Le SDK Python — Démarrage rapide

Le SDK Python officiel (mcp ou fastmcp) permet de créer un serveur MCP en quelques dizaines de lignes. L'approche FastMCP est la plus élégante :

Python · FastMCP
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Mon Serveur MCP")

@mcp.tool()
def rechercher_commandes(client_id: str, statut: str = "tous") -> list:
    """Recherche les commandes d'un client dans la BDD."""
    # Votre logique métier ici
    return db.query(client_id, statut)

@mcp.resource("commandes://{client_id}")
def get_commandes_client(client_id: str) -> str:
    return json.dumps(db.get_all(client_id))

Bonnes pratiques de conception

Descriptions riches = meilleures décisions du LLM. La qualité de la description d'un tool est critique. Le LLM utilise cette description pour décider si et quand appeler le tool. Une description pauvre mène à des erreurs d'utilisation.

Mauvais vs. Bon Mauvaise description : "Lit un fichier."

Bonne description : "Lit le contenu d'un fichier texte depuis le filesystem local. Utiliser pour accéder au code source, aux fichiers de configuration, ou à tout document dont l'utilisateur a partagé le chemin. Ne pas utiliser pour des URLs ou des ressources réseau."

Granularité des tools

  • Un tool = une action atomique et bien définie
  • Éviter les tools trop génériques ("faire quelque chose") et trop spécifiques
  • Grouper les opérations CRUD connexes dans le même serveur pour la cohérence

Gestion des erreurs

  • Toujours retourner un message d'erreur descriptif plutôt que lever une exception non catchée
  • Distinguer les erreurs utilisateur ("fichier non trouvé") des erreurs système
  • Utiliser le champ isError dans le résultat du tool pour signaler un échec contrôlé
07

Limites Actuelles

Limitations techniques

LimitationImpact
Pas de stateful sessionsChaque appel tool est stateless. Pas de transaction MCP native englobant plusieurs appels.
Pas d'exécution parallèle nativeLes appels tools sont séquentiels côté protocole. La parallélisation doit être gérée au niveau applicatif.
Streaming des résultats limitéUn tool ne peut pas streamer sa réponse. Pour des tâches longues, il faut passer par les resource subscriptions.
Discovery centralisée absentePas de registre officiel pour trouver et installer des serveurs MCP tiers.
Pas de versioning des toolsUn serveur MCP ne peut pas exposer plusieurs versions d'un même tool. Les changements breaking nécessitent un nouveau serveur.

Limitations sécurité

La sécurité du MCP repose sur la confiance. Quelques vecteurs d'attaque importants à connaître :

  • Tool poisoning — un serveur MCP malveillant peut inclure des instructions cachées dans les descriptions de tools pour manipuler le LLM
  • Rug pull — un serveur initialement bénin peut être mis à jour avec un comportement malveillant
  • Exfiltration de contexte — un tool peut accéder au contexte complet de la conversation si le host n'isole pas les informations
  • Escalade de privilèges — un serveur peut tenter d'accéder à des resources au-delà des roots déclarées
Règle d'or N'installer que des serveurs MCP dont vous faites confiance à l'auteur, comme vous n'installez que des extensions VS Code d'éditeurs reconnus.
08

Évolutions Possibles & Tendances

MCP 2.0 : ce qui est déjà en cours

HTTP Streamable (mars 2025). Le transport HTTP + SSE actuel impose deux endpoints distincts (GET pour SSE, POST pour les requêtes). HTTP Streamable unifie cela : un seul endpoint POST qui peut retourner soit une réponse HTTP classique, soit un stream SSE selon le cas. Cela simplifie le déploiement et rend MCP compatible avec les proxies et loadbalancers standard.

Structured Tool Output. Actuellement, le résultat d'un tool est du texte libre. Une évolution attendue est la possibilité de définir un JSON Schema pour la sortie d'un tool, permettant au LLM de traiter des données structurées sans avoir à les parser depuis du texte.

Elicitation (demande d'input utilisateur). Un serveur MCP pourra bientôt demander une entrée interactive à l'utilisateur en cours d'exécution ("Quel est votre token API ?", "Confirmez-vous la suppression ?"). Cela permet des flux de travail multi-étapes avec validation humaine sans casser le protocole.

Multi-agent et orchestration

L'évolution la plus structurante de MCP sera sa place dans les architectures multi-agents. Deux directions se dessinent :

MCP agent-à-agent. Un agent IA peut lui-même être exposé comme un serveur MCP. Un orchestrateur ("agent manager") peut ainsi déléguer des sous-tâches à des agents spécialisés via le protocole MCP standard. C'est l'architecture qui émerge dans des frameworks comme LangGraph ou les Agents SDK.

Exemple d'architecture Un agent "chef de projet" expose des tools pour créer des tickets. Il délègue via MCP à un agent "développeur" qui a accès au codebase, et à un agent "QA" qui exécute les tests. Chaque agent est un serveur MCP indépendant.

MCP et la mémoire persistante

L'état actuel de MCP est fondamentalement stateless — chaque session repart de zéro. Les évolutions vers la mémoire persistante passent par deux vecteurs :

  • Serveurs MCP de mémoire — des serveurs dédiés (mem0, Memory Bank) exposent des tools pour sauvegarder et récupérer des faits, des préférences utilisateur, des résultats de sessions précédentes
  • Native persistence — une évolution possible serait une primitive de session avec état, où le serveur peut maintenir un contexte entre plusieurs appels du même utilisateur

Dans Claude.ai, la mémoire utilisateur actuelle est déjà un exemple de ce pattern : un système de mémoire externe exposé comme ressource contextuelle.

MCP dans les navigateurs

La version web de Claude teste actuellement une intégration navigateur (Claude in Chrome). Le MCP pourrait y jouer un rôle central : une extension de navigateur expose un serveur MCP qui donne à l'IA accès au DOM, aux onglets, aux cookies, à la navigation, aux formulaires — remplaçant les approches bricolées de Puppeteer/Playwright.

Vers un modèle de confiance étendu

La gestion des données sensibles est le prochain grand chantier :

  • Chiffrement de bout en bout des résultats de tools : le LLM reçoit des données sans que le host puisse les lire
  • Attestation cryptographique : un serveur MCP peut prouver son identité et son intégrité via une signature
  • Policy as code : les permissions d'un serveur MCP définies dans un fichier de politique versionné
  • Audit trail standardisé : un log immuable de tous les appels MCP pour la conformité réglementaire (RGPD, ISO 27001)
09

MCP vs. Autres Standards

MCP vs. Function Calling (OpenAI)

Function Calling OpenAI

  • Périmètre défini par la requête API, rechargé à chaque appel
  • Couplé à l'API OpenAI (HTTPS)
  • Propriétaire — migration coûteuse si changement de LLM
  • Tools définis dans le code client, non réutilisables

MCP

  • Périmètre géré par le serveur MCP, persistant entre les requêtes
  • stdio, HTTP+SSE — agnostique du LLM
  • Open standard — fonctionne avec Claude, GPT, Gemini, LLaMA…
  • Un serveur MCP branchable sur n'importe quel client

MCP vs. LangChain Tools

LangChain a longtemps dominé l'espace des intégrations IA. Mais son modèle présente des frottements que MCP résout :

  • LangChain est un framework applicatif : votre code dépend de LangChain. MCP est un protocole : votre code dépend uniquement de la spec JSON
  • LangChain tools vivent dans le même processus que le LLM. Les serveurs MCP sont des processus indépendants, plus faciles à tester et à sécuriser
  • LangChain impose Python. MCP supporte nativement Python, TypeScript, et par extension tout langage capable de JSON-RPC

LangChain a d'ailleurs annoncé un support MCP natif, reconnaissant la complémentarité des deux approches.

MCP vs. A2A (Google Agent-to-Agent Protocol)

En avril 2025, Google a publié le protocole A2A, visant à standardiser la communication entre agents IA de différents fournisseurs. MCP et A2A sont complémentaires, pas concurrents :

ProtocoleRôle
MCPConnecte un agent à des tools et des resources (IA → outils)
A2AConnecte des agents entre eux (IA → IA)
RelationUn agent A2A peut exposer ses capacités via MCP. MCP peut servir de transport pour A2A.
10

Implications Stratégiques

Pour les entreprises

Réduction du lock-in. En exposant vos données et outils via des serveurs MCP, vous n'êtes plus liés à un LLM particulier. Si Claude devient trop cher ou que GPT-5 offre de meilleures performances pour votre cas d'usage, la migration est désormais une question de configuration du client, pas de réécriture d'intégrations.

IA interne et données sensibles. Des serveurs MCP déployés on-premise peuvent exposer des données sensibles (RH, finances, R&D) uniquement à des LLMs auto-hébergés (LLaMA, Mistral, etc.), sans que les données ne quittent votre infrastructure. C'est un pattern souveraineté des données.

Le nouveau tier applicatif. On peut voir les serveurs MCP comme un nouveau tier dans l'architecture logicielle : après le tier données (bases de données) et le tier applicatif (APIs REST), le tier contexte (serveurs MCP) expose vos capacités métier aux agents IA. C'est un nouvel actif à développer et à maintenir.

Pour les développeurs

  • Les serveurs MCP deviennent un produit livrable à part entière, au même titre qu'une API REST ou un package npm
  • La compétence MCP (conception de tools, optimisation des descriptions, sécurité) est une compétence différenciante
  • Les frameworks comme FastMCP réduisent la barrière d'entrée à quelques dizaines de lignes
  • L'émergence d'un marché de serveurs MCP premium ou SaaS ("MCP as a Service") est prévisible

Pour les éditeurs de logiciels

Exposer un serveur MCP officiel devient un avantage compétitif. Les entreprises comme Linear, Notion, ou Figma qui ont déjà un MCP officiel capturent une part de valeur dans l'écosystème agentic. Les éditeurs qui n'ont pas de MCP risquent d'être contournés par des serveurs tiers qui accèdent à leurs APIs.

Vision 2026 L'App Store des agents IA. Chaque application SaaS publie son serveur MCP officiel dans un registre central. Installer une nouvelle application, c'est aussi donner à votre agent IA la capacité de l'utiliser.

Conclusion

Le Model Context Protocol est plus qu'un standard technique. Il représente une rupture architecturale dans la façon dont nous concevons les systèmes d'information à l'ère des agents IA. En standardisant l'interface entre les LLMs et le monde extérieur, il répond à une question fondamentale : comment rendre l'IA utile dans des contextes réels, avec des données réelles, sans compromettre la sécurité et la maintenabilité ?

La rapidité de l'adoption — de la publication par Anthropic en novembre 2024 à l'adoption par OpenAI, Microsoft et Google en quelques mois — est sans précédent pour un protocole de cette nature. Elle révèle un besoin longtemps non satisfait et une fenêtre d'opportunité pour tous ceux qui comprennent et maîtrisent ce standard.

Les évolutions à venir — sessions persistantes, orchestration multi-agents, sécurité renforcée, registre centralisé — transformeront progressivement MCP d'un protocole d'intégration en une infrastructure critique de l'économie numérique. Comme HTTP pour le web, ou TCP/IP pour les réseaux, MCP a le potentiel de devenir le protocole invisible sur lequel repose l'ère des agents.

Maîtriser les 3 primitives

Tools, Resources, Prompts — comprendre quand et comment les combiner

Déployer un 1er serveur

Commencer par FastMCP et un cas d'usage métier simple

Sécuriser les accès

Roots, OAuth 2.1, audit trail — ne pas négliger la sécurité dès le début

Anticiper le multi-agent

Concevoir vos serveurs MCP comme des agents autonomes composables

0%