Tutoriel

Statut éditorial : En attente de relecture

Construire un serveur MCP en Python avec FastMCP

Exposer une ressource et un outil typé via FastMCP, tester le protocole puis sécuriser le transport et les actions.

Classification du contenu

Types

  • Agents IA
Niveau
Intermédiaire
Publié le
13 août 2026
Dernière relecture
Relecture en attente
Prochaine vérification
13 novembre 2026

MCP permet à un client de découvrir des outils et ressources selon un contrat standard. Un serveur sûr expose des capacités étroites, pas un shell ou un accès SQL arbitraire.

Installer

~~~bash python -m venv .venv source .venv/bin/activate pip install -U mcp ~~~

Créer le serveur

~~~python from mcp.server.fastmcp import FastMCP

mcp = FastMCP('catalogue')

PRODUCTS = { 'A-100': {'name':'Clavier', 'stock':12}, 'B-200': {'name':'Souris', 'stock':0}, }

@mcp.tool() def get_product(sku: str) -> dict: """Retourne le nom et le stock d’un SKU connu.""" if len(sku) > 30: raise ValueError('SKU invalide') product = PRODUCTS.get(sku) return {'found': product is not None, 'product': product}

@mcp.resource('catalogue://policy') def policy() -> str: return 'Le stock est informatif et doit être vérifié avant une commande.'

if __name__ == '__main__': mcp.run() ~~~

Le docstring et les types construisent le schéma présenté au client.

Tester

Lancez le serveur avec le transport recommandé par votre client et utilisez l’inspecteur MCP officiel. Vérifiez découverte, appel valide, SKU inconnu, entrée trop longue et exception.

Ajouter une dépendance externe

Pour une API ou une base, fixez endpoint et credentials côté serveur, ajoutez timeout et retour minimal. Une donnée retournée peut contenir du texte hostile : elle ne devient pas une instruction système.

Sécurité

En distant, authentifiez chaque client, autorisez les outils par identité, limitez fréquence et corps, utilisez TLS et journalisez outil, durée et statut. Une écriture exige confirmation humaine et idempotence.

Production

Versionnez schémas, ajoutez tests de contrat et déployez avec moindre privilège. Ne modifiez pas silencieusement la signification d’un outil existant ; créez une version si le contrat change.

FAQ

Ressource et outil, quelle différence ?

Une ressource fournit un contenu adressable ; un outil exécute une opération avec des arguments.

MCP sécurise-t-il automatiquement mes fonctions ?

Non. Le serveur reste responsable de validation, authentification et autorisation.

Sources utilisées