/ Annuaire / Playground / MCP Python SDK
● Officiel modelcontextprotocol ⚡ Instantané

MCP Python SDK

par modelcontextprotocol · modelcontextprotocol/python-sdk

SDK Python officiel pour le Model Context Protocol — construisez des serveurs et clients en 30 lignes, livré avec des décorateurs compatibles FastMCP.

Le SDK Python officiel maintenu par Anthropic pour MCP. Fournit serveur (mcp.server.fastmcp.FastMCP), client (mcp.client.session.ClientSession), et des primitives de bas niveau. Utilisé comme référence canonique pour la conformité à la spécification — en cas de doute, c'est la source de vérité. L'API FastMCP basée sur les décorateurs a été intégrée depuis jlowin/fastmcp.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

mcp-python-sdk.replay ▶ prêt
0/0

Installer

Choisissez votre client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcp-python-sdk": {
      "command": "uvx",
      "args": [
        "--with",
        "mcp",
        "python",
        "-m",
        "mcp.server.example"
      ],
      "_inferred": true
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mcp-python-sdk": {
      "command": "uvx",
      "args": [
        "--with",
        "mcp",
        "python",
        "-m",
        "mcp.server.example"
      ],
      "_inferred": true
    }
  }
}

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mcp-python-sdk": {
      "command": "uvx",
      "args": [
        "--with",
        "mcp",
        "python",
        "-m",
        "mcp.server.example"
      ],
      "_inferred": true
    }
  }
}

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcp-python-sdk": {
      "command": "uvx",
      "args": [
        "--with",
        "mcp",
        "python",
        "-m",
        "mcp.server.example"
      ],
      "_inferred": true
    }
  }
}

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mcp-python-sdk",
      "command": "uvx",
      "args": [
        "--with",
        "mcp",
        "python",
        "-m",
        "mcp.server.example"
      ]
    }
  ]
}

Continue utilise un tableau d'objets serveur plutôt qu'une map.

~/.config/zed/settings.json
{
  "context_servers": {
    "mcp-python-sdk": {
      "command": {
        "path": "uvx",
        "args": [
          "--with",
          "mcp",
          "python",
          "-m",
          "mcp.server.example"
        ]
      }
    }
  }
}

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add mcp-python-sdk -- uvx --with mcp python -m mcp.server.example

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : MCP Python SDK

Construire votre premier serveur MCP en Python en moins de 10 minutes

👤 Développeurs Python nouveaux dans MCP ⏱ ~15 min beginner

Quand l'utiliser : Vous voulez exposer une fonction Python à Claude.

Prérequis
  • Python 3.10+ — uv ou pyenv
Déroulement
  1. Installer et scaffolder
    Use uv to install mcp. Create server.py with one tool: get_weather(city) that calls a public API.✓ Copié
    → Fichier de 10 lignes avec décorateur @tool
  2. Lancer via stdio
    Run mcp dev server.py. Open the MCP Inspector and verify the tool listing.✓ Copié
    → Outil appelable depuis l'inspector
  3. Ajouter à Claude Desktop
    Add to claude_desktop_config.json. Test from Claude.✓ Copié
    → Réponse live dans le chat

Résultat : Serveur MCP Python fonctionnel enregistré avec Claude.

Pièges
  • Utiliser print() dans le handler casse stdio — Utilisez logging vers stderr ; n'écrivez jamais sur stdout

Écrire des tests d'intégration pour un serveur MCP en utilisant le client du SDK

👤 Développeurs publiant des MCPs en production ⏱ ~30 min intermediate

Quand l'utiliser : Vous avez besoin de tests CI qui prouvent que votre MCP se comporte correctement.

Déroulement
  1. Lancer le serveur
    Use mcp.client.stdio to spawn server.py and call list_tools(). Assert expected names.✓ Copié
    → Test passe
  2. Appeler chaque outil
    For each tool, call with a representative input and assert the output schema.✓ Copié
    → Tous les outils vérifiés
  3. Intégrer dans pytest
    Convert into pytest fixtures so CI runs them on every PR.✓ Copié
    → Harnais de test réutilisable

Résultat : Serveur MCP avec la confiance que les outils ne régresseront pas.

Streamer la sortie d'un outil longue durée vers Claude au fur et à mesure

👤 Développeurs construisant des MCPs pour des builds, déploiements ou longues simulations ⏱ ~45 min advanced

Quand l'utiliser : L'outil prend des minutes et vous voulez de la progression dans le chat, pas après la fin.

Déroulement
  1. Utiliser le transport HTTP streamable
    Switch from stdio to streamable HTTP. Yield progress events from the tool.✓ Copié
    → Claude montre une sortie partielle pendant l'exécution
  2. Ajouter l'annulation
    Honor cancel requests so user can abort if the tool takes too long.✓ Copié
    → L'annulation fonctionne en cours d'exécution

Résultat : Outils qui semblent en temps réel même quand ils sont lents.

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

mcp-python-sdk + mcp-go-mark3labs

Polyglotte — performances critiques en Go, ML/données en Python

Use mcp-python-sdk for the model-serving MCP, mcp-go for the high-throughput one.✓ Copié
mcp-python-sdk + mcp-registry

Publier votre MCP Python dans le registry officiel

Submit metadata to modelcontextprotocol/registry once your server passes its tests.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
FastMCP name, version? Création du serveur au niveau supérieur 0
@server.tool decorator on async function Chaque fonction que vous voulez exposer 0
@server.resource decorator with uri pattern Exposition de données en lecture seule 0
@server.prompt decorator on prompt builder Templates de prompts réutilisables 0
ClientSession transport Tests ou construction de clients MCP 0
stdio_server () Mode local 0

Coût et limites

Coût d'exécution

Quota d'API
N/A — bibliothèque
Tokens par appel
N/A
Monétaire
Gratuit (MIT)
Astuce
Épinglez la version SDK dans pyproject.toml ; la spec évolue

Sécurité

Permissions, secrets, portée

Stockage des identifiants : Ce dont vos outils ont besoin
Sortie de données : Contrôlé par vos handlers

Dépannage

Erreurs courantes et correctifs

Outil n'apparaissant pas

Assurez-vous que le décorateur @tool est sur une fonction async et que la fonction est enregistrée avant le démarrage du serveur

Vérifier : Run `mcp dev server.py` and open the inspector
Erreurs de validation Pydantic

Les entrées des outils sont validées par Pydantic ; vérifiez que les annotations de type correspondent à ce que Claude envoie

Le serveur se bloque sur EOF stdin

Assurez-vous que vos handlers async ne créent pas de deadlock — utilisez anyio pour la compatibilité

Alternatives

MCP Python SDK vs autres

AlternativeQuand l'utiliserCompromis
FastMCP (PrefectHQ)Vous voulez le fork tiers original avec des utilitaires supplémentairesMaintenant principalement remerged ; fine couche d'enveloppement
mcp-go (mark3labs)Go est votre langageÉcosystème différent

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills