Créer un MCP Server from scratch : guide complet pour développeurs

Fondamentaux du protocole · FastMCP · Tools/Resources/Prompts · Déploiement HTTP · Projet base de connaissances

Créer un MCP Server from scratch : guide complet pour développeurs

Les LLM semblent « pas assez intelligents » parce qu'ils n'atteignent ni les outils externes ni les données en direct. Si vous voulez que Claude ou GPT interroge des bases de données, appelle des API et lise des fichiers, le Model Context Protocol (MCP) est la réponse ouverte. Ce guide s'adresse aux développeurs backend et IA maîtrisant Python ou TypeScript. Vous passerez des fondamentaux du protocole à la configuration de l'environnement, à l'enregistrement des Tools, Resources et Prompts, au débogage avec MCP Inspector, au déploiement distant HTTP+SSE et à un projet de base de connaissances personnelle — pour livrer un MCP Server prêt pour la production.

01

Qu'est-ce que MCP ? Comprendre le protocole avant de coder

Le tool calling a évolué de Function Calling → Plugins → MCP. Anthropic a conçu MCP pour standardiser la façon dont l'IA dialogue avec les systèmes externes — écrivez un Server une fois, réutilisez-le sur tous les Clients.

Le MCP Client (Claude Desktop, Cursor) communique avec le MCP Server (votre code) via JSON-RPC 2.0. Les Servers exposent des Tools (fonctions appelables), des Resources (données lisibles) et des Prompts (modèles réutilisables). Transport : stdio (local, faible latence) ou HTTP + SSE (distant, multi-clients). Cycle de vie : poignée de main → négociation des capacités → requête/réponse → arrêt.

  1. 01

    Pas de données en direct : les coupures d'entraînement bloquent cours boursiers et statut de tickets — les API externes sont obligatoires.

  2. 02

    Verrouillage fournisseur : Plugins, Function Calling et Tool Use exigent chacun des adaptateurs distincts.

  3. 03

    Fragmentation IDE : Cursor, VS Code et Claude Desktop ne partagent pas les actifs outils.

  4. 04

    Couplage framework : les Tools LangChain ne se portent pas vers CrewAI sans réécriture.

  5. 05

    Coût N×M : N modèles × M systèmes fait exploser la maintenance ; MCP réduit cela à un seul Server.

DimensionMCPOpenAI Function CallingLangChain Tools
StandardisationProtocole ouvertSpécifique au fournisseurLié au framework
Transportstdio / HTTPHTTPHTTP
Multi-modèleOuiNonPartiel
Resources / PromptsNatifNon pris en chargeNon pris en charge
Écosystème10 000+ Servers (2026)MatureMature
02

Configuration de l'environnement : choix du langage et structure du projet

Python (mcp + FastMCP) convient le mieux aux débutants. TypeScript (@modelcontextprotocol/sdk) s'adapte aux équipes full-stack. Ce guide utilise Python avec des notes TypeScript lorsque pertinent.

bash
python -m venv .venv && source .venv/bin/activate && pip install mcp
npm init -y && npm install @modelcontextprotocol/sdk

Structure suggérée : server.py, tools/, resources/, prompts/, tests/. Déboguez avec MCP Inspector, la config Claude Desktop et les paramètres MCP de Cursor. Documentation : modelcontextprotocol.io.

03

Votre premier MCP Server : Hello World et intégration Cursor

python
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("my-first-server")

@mcp.tool()
def say_hello(name: str) -> str:
    """Greet a person by name"""
    return f"Hello, {name}! This is your first MCP tool."

if __name__ == "__main__":
    mcp.run()
  1. 01

    Créer le venv et installer mcp (Python ≥ 3.10).

  2. 02

    Enregistrer say_hello avec @mcp.tool() ; la docstring devient la description de l'outil.

  3. 03

    Déboguer dans Inspector : npx @modelcontextprotocol/inspector python server.py.

  4. 04

    Configurer MCP dans Cursor avec la commande et le chemin absolu vers server.py.

  5. 05

    Configurer Claude Desktop via claude_desktop_config.json.

  6. 06

    Vérifier : demandez à Cursor de saluer VpsMesh via say_hello et confirmez l'invocation de l'outil.

04

Construire des Tools : cinq exemples pratiques pour l'IA

Utilisez des noms commençant par un verbe (search_web). Modélisez les entrées complexes avec Pydantic. Implémentez : calculatrice, lecture/écriture de fichiers (chemins en liste blanche), client HTTP, SQL en lecture seule et utilitaires de fuseau horaire. Utilisez l'async pour les E/S réseau :

python
@mcp.tool()
async def fetch_url(url: str) -> str:
    async with httpx.AsyncClient(timeout=30.0) as client:
        return (await client.get(url)).text

Renvoyez des erreurs structurées pour les échecs attendus. Définissez des timeouts. Auditez les opérations d'écriture.

05

Resources et Prompts : flux de données et modèles réutilisables

Les Resources sont des données en lecture seule via URI (file://, config://, user://{id}/profile). Les Tools exécutent des actions. Exemples de resources statiques et dynamiques :

python
@mcp.resource("config://app-settings")
def get_app_settings() -> str:
    return json.dumps({"version": "1.0", "env": "production"})

Les Prompts injectent des paramètres dans des modèles multi-tours — revue de code, simulation d'entretien, assistant de débogage. Ils prennent en charge les rôles user et assistant dans un même modèle.

06

Transport HTTP, débogage et erreurs courantes

FonctionnalitéstdioHTTP + SSE
DéploiementProcessus localServeur distant
LatenceTrès faibleDépend du réseau
Multi-clientNonOui
Cas d'usageOutils locauxSaaS / partage d'équipe
python
mcp = FastMCP("remote-server", transport="streamable-http")
mcp.run(host="0.0.0.0", port=8000)

Sécurisez les Servers distants avec des jetons Bearer, un middleware de clé API, CORS et des limites de débit. Testez avec MCP Inspector et pytest + ClientSession. Corrections courantes : mauvais chemin de config, retours non sérialisables, outils lents (async + timeout), refus de permission fichier (répertoires en liste blanche).

07

Déploiement production, projet base de connaissances et écosystème

Conteneurisez avec Docker (Python 3.12-slim). Déployez sur Railway, Render, Cloud Run ou un VPS derrière Nginx. Ajoutez journaux structurés, métriques Prometheus, Sentry et health checks. Déclarez la version du protocole MCP pour la compatibilité.

MCP Server base de connaissances : indexez du Markdown local avec ChromaDB/Qdrant, text-embedding-3-small et watchfiles. Exposez recherche sémantique, création de notes et resources fichier. Demandez à Cursor : « Qu'ai-je écrit sur MCP la semaine dernière ? »

Servers communautaires recommandés : filesystem, GitHub, Brave Search, Postgres, Slack. Tendance 2026 : les clients majeurs prennent en charge MCP ; Marketplace et standards de sécurité entreprise mûrissent. SDK : Python, TypeScript, Inspector.

  • Protocole : JSON-RPC 2.0 ; découverte via tools/list.
  • Écosystème : 10 000+ MCP Servers en 2026.
  • Économies d'intégration : réduction des coûts de 38 à 55 % (enquêtes sectorielles).

Les ordinateurs portables conviennent aux POC mais la mise en veille tue la disponibilité 24 h/24. Un VPS Linux exécute HTTP+SSE mais peine avec Keychain et les outils dépendant de Xcode. Pour les équipes traitant les MCP Servers comme une infrastructure toujours active, la location cloud Mac Mini M4 VpsMesh offre un OpEx prévisible. Consultez les tarifs location Mac Mini M4, le centre d'aide et la page de commande.

FAQ

Les trois questions les plus fréquentes

Python + FastMCP est le plus rapide pour les équipes backend/IA. Le SDK TypeScript convient aux shops Node full-stack. Les deux restent compatibles au niveau protocole.

Les Tools exécutent des actions. Les Resources servent des données en lecture seule par URI. Lisez avec Resources ; agissez avec Tools.

HTTP+SSE sur Railway ou Cloud Run convient à de nombreux cas. Pour les chaînes d'outils macOS natives et des sessions Cursor ininterrompues, la location Mac Mini M4 est plus fiable. Consultez les tarifs location Mac Mini M4 et la page de commande.