Écrire son propre serveur MCP
Un serveur MCP met des outils, des données ou des modèles à disposition de n'importe quel client compatible MCP – de Claude Code à Antigravity.
Trois briques de base
Un serveur MCP propose à un client comme Claude Code ou Antigravity trois types de capacités : les Tools (des fonctions que le modèle appelle activement, par exemple une requête en base de données), les Resources (des données passives comme des fichiers ou des réponses d'API, fournies par l'application) et les Prompts (des modèles prêts à l'emploi que les utilisateurs·rices choisissent délibérément).
Le déroulement minimal
Un serveur tourne comme un processus à part et communique avec le client via un protocole défini (généralement l'entrée/sortie standard ou HTTP). Au démarrage, le client interroge tools/list, reçoit en retour une liste de définitions d'outils avec un schéma JSON pour les paramètres, et appelle tools/call avec les bons arguments quand c'est nécessaire. Ton serveur n'a donc qu'à : enregistrer des outils avec un nom, une description et un schéma d'entrée, et renvoyer le résultat lors d'un appel.
SDKs officiels
L'organisation modelcontextprotocol maintient des SDKs officiels pour Python, TypeScript, Java, Kotlin, C#, Go, PHP, Ruby, Rust et Swift – tu n'as pas besoin d'implémenter le protocole à la main.
Connexion à un client
Un serveur terminé s'enregistre dans la configuration du client (par exemple mcpServers dans Claude Code ou mcp_config.json dans Antigravity), généralement avec une commande et des arguments pour démarrer le processus serveur. Il apparaît ensuite dans le gestionnaire MCP du client, et ses outils deviennent disponibles pour le modèle.
EXEMPLE
Noyau minimal d'un serveur Python (avec le SDK officiel) : un décorateur `@mcp.tool()` enregistre une fonction `get_forecast(latitude, longitude)` comme outil – le client la découvre automatiquement via `tools/list` et l'appelle quand c'est nécessaire.
🛠️ EXERCICE — À TOI DE JOUER
Construis avec un SDK MCP officiel (par exemple Python) un serveur minimal avec exactement un tool, et connecte-le à un client compatible MCP.
- Installe le SDK officiel pour ton langage et crée un serveur avec un seul tool (par exemple une fonction qui renvoie la date du jour).
- Enregistre le serveur dans la configuration MCP de ton client (par exemple Claude Code ou Antigravity) avec la commande de démarrage et les arguments.
- Ouvre le gestionnaire MCP du client (par exemple /mcp), vérifie que le serveur est connecté, et laisse le modèle appeler ton tool.
✅ AUTO-VÉRIFICATION
- ☐ Le client a-t-il détecté automatiquement ton tool via tools/list, sans que tu l'aies enregistré manuellement ?
- ☐ Que se passe-t-il si ton processus serveur (en transport STDIO) écrit ses logs par erreur sur stdout au lieu de stderr ?
- ☐ Pourrais-tu maintenant connecter ce même serveur à un autre client MCP sans le réécrire ?
QUIZ RAPIDE
Qu'est-ce qui distingue un « Tool » MCP d'une « Resource » MCP ?
SOURCES
- MCP-Doku: Build an MCP server ↗ modelcontextprotocol.io
- MCP-Doku: Understanding MCP servers (Tools/Resources/Prompts) ↗ modelcontextprotocol.io
- GitHub: modelcontextprotocol-Organisation (offizielle SDKs) ↗ github.com