Présentation
Le MCP, expliqué avec un annuaire téléphonique
Model Context Protocol : l'annuaire qui dit à l'IA quels outils existent, comment les appeler et ce qu'ils vont répondre.
← → pour naviguer · clic sur le film pour pause · F plein écran · M musique · L langue
Pascal Zhang · zhangpas@gmail.com · zhang-pascal.com
Le problème
Une IA sait parler… mais elle est enfermée
- Elle connaît ce qu'elle a appris, pas l'annuaire d'aujourd'hui.
- Elle ne peut pas trouver un plombier dispo ce soir, ni prendre rendez-vous.
- Il lui faut un moyen d'accéder à des outils externes.
Avant MCP
Un câble sur mesure pour chaque duo
- Chaque assistant IA code son propre connecteur vers chaque service.
- 3 IA × 3 services = 9 intégrations à écrire et maintenir.
- Avec 10 IA et 100 services : 1 000. Ça ne passe pas à l'échelle.
La solution
MCP = un annuaire au format standard
- Un protocole standard et ouvert, publié par Anthropic fin 2024. On le surnomme « l'USB‑C de l'IA ».
- Chaque service publie une seule fois son annuaire (son MCP serveur), toujours avec la même mise en page.
- N'importe quelle IA compatible sait donc le lire, sans connecteur sur mesure.
- 3 + 3 = 6 branchements au lieu de 9. Avec 10 IA et 100 services : 110 au lieu de 1 000.
Les acteurs
Qui fait quoi ?
- Host
- L'application que vous utilisez (Claude, un éditeur de code…). Elle contient le modèle d'IA.
- MCP client
- Il consulte l'annuaire pour le compte de l'IA : il demande la liste des fiches, puis passe les appels.
- MCP serveur = l'annuaire
- Il publie les fiches (outils, contrats, formats de réponse) et transmet les appels au vrai service.
Le MCP serveur = l'annuaire
Chaque fiche décrit un outil
- Nom quel outil appeler
chercher_plombier- Description quand l'utiliser
- Fuite, panne d'eau, chauffe-eau…
- Contrat d'entrée ce qu'il faut fournir
- ville (obligatoire), urgence (oui/non).
- Format de réponse ce qui revient
- nom, téléphone, dispo, prix.
Au branchement, l'IA lit tout l'annuaire : elle découvre seule ce qui est possible et comment le demander.
En action
« Trouve-moi un plombier pour ce soir »
- L'utilisateur pose sa question.
- L'IA trouve la fiche
chercher_plombierdans l'annuaire. - Le MCP client l'appelle en respectant le contrat.
- Le MCP serveur fait travailler le vrai service.
- La réponse revient au format prévu (JSON).
- L'IA répond en langage naturel.
Sous le capot
À quoi ça ressemblerait en vrai
On écrit l'outil côté MCP serveur (Python)
from mcp.server.fastmcp import FastMCP mcp = FastMCP("annuaire") @mcp.tool() def chercher_plombier(ville: str, urgence: bool = False) -> list[Plombier]: """Trouve des plombiers dispo. À utiliser pour une fuite, une panne d'eau, un chauffe-eau.""" return service_plombiers.recherche(ville, urgence) mcp.run()
from mcp.server.fastmcp import FastMCP mcp = FastMCP("directory") @mcp.tool() def find_plumber(city: str, urgent: bool = False) -> list[Plumber]: """Finds available plumbers. Use for a leak, no running water, or a broken water heater.""" return plumber_service.search(city, urgent) mcp.run()
Le nom, la docstring et les types deviennent automatiquement la fiche de l'annuaire.
La fiche telle que l'IA la lit (tools/list)
{ // nom
"name": "chercher_plombier",
// quand l'appeler
"description": "Trouve des plombiers…",
// ce qu'il faut lui dire
"inputSchema": {
"properties": {
"ville": { "type": "string" },
"urgence": { "type": "boolean" } },
"required": ["ville"] },
// ce qu'il répond
"outputSchema": {
"properties": {
"nom": …, "telephone": …,
"dispo": …, "prix": … } } }
{ // name
"name": "find_plumber",
// when to call it
"description": "Finds available plumbers…",
// what to tell it
"inputSchema": {
"properties": {
"city": { "type": "string" },
"urgent": { "type": "boolean" } },
"required": ["city"] },
// what it answers
"outputSchema": {
"properties": {
"name": …, "phone": …,
"availability": …, "price": … } } }
Exemple simplifié, juste pour illustrer.
À retenir
En une phrase
Le MCP serveur, c'est l'annuaire de l'IA : quels outils existent, comment les appeler, et ce qu'ils vont répondre.
- Host · MCP client · MCP serveur : l'appli, celui qui consulte, l'annuaire.
- Une fiche = nom, description, contrat d'entrée, format de réponse.
- Agenda, Notion, GitHub, base de données… même format d'annuaire partout.