FastMCP : Le guide complet pour la création de serveurs et clients MCP

FastMCP : Le guide complet pour la création de serveurs et clients MCP

Un tutoriel complet sur FastMCP 2.0, la manière rapide et inspirée de Python de construire des serveurs et clients MCP (Model Context Protocol). Apprenez à créer des outils, des ressources et des invites pour les applications LLM.

Leçon 2 2025-07-03 06:57

Installation et configuration de FastMCP

Installation et configuration de FastMCP

Prérequis

Avant d'installer FastMCP, assurez-vous de disposer des éléments suivants :

  • Python 3.10+ : FastMCP nécessite Python 3.10 ou une version ultérieure.
  • Gestionnaire de paquets : Nous recommandons d'utiliser uv pour une expérience optimale, bien que pip fonctionne également très bien.

Méthodes d'installation

Utilisation de uv (Recommandé)

La manière la plus rapide et la plus fiable d'installer FastMCP :

uv pip install fastmcp

Utilisation de pip

Si vous préférez pip :

pip install fastmcp

Installation pour le développement

Pour le travail de développement ou pour obtenir les dernières fonctionnalités :

# Cloner le dépôt
git clone https://github.com/jlowin/fastmcp.git
cd fastmcp

# Créer et synchroniser l'environnement avec uv
uv sync

# Ou utiliser pip dans un environnement virtuel
python -m venv venv
source venv/bin/activate  # Sous Windows : venv\Scripts\activate
pip install -e .

Vérification de l'installation

Testez votre installation en créant un simple serveur :

# test_install.py
from fastmcp import FastMCP

mcp = FastMCP("Serveur de test")

@mcp.tool
def hello() -> str:
    """Dire bonjour."""
    return "Bonjour depuis FastMCP !"

if __name__ == "__main__":
    print("FastMCP a été installé avec succès !")
    print(f"Nom du serveur : {mcp.name}")
    # Décommenter pour lancer le serveur
    # mcp.run()

Exécutez le test :

python test_install.py

Vous devriez voir :

FastMCP a été installé avec succès !
Nom du serveur : Serveur de test

Structure du projet

Pour un projet FastMCP typique, nous recommandons cette structure :

mon-projet-mcp/
├── server.py          # Fichier principal du serveur
├── tools/             # Implémentations des outils
│   ├── __init__.py
│   ├── math_tools.py
│   └── data_tools.py
├── resources/         # Implémentations des ressources
│   ├── __init__.py
│   └── config.py
├── tests/            # Fichiers de test
│   └── test_server.py
├── requirements.txt   # Dépendances
└── README.md         # Documentation du projet

Configuration de l'environnement

FastMCP prend en charge la configuration via des variables d'environnement :

# Fichier .env
FASTMCP_LOG_LEVEL=DEBUG
FASTMCP_MASK_ERROR_DETAILS=False
FASTMCP_RESOURCE_PREFIX_FORMAT=path

Variables d'environnement courantes :

  • FASTMCP_LOG_LEVEL : Définit le niveau de journalisation (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  • FASTMCP_MASK_ERROR_DETAILS : Masque les informations détaillées sur les erreurs aux clients
  • FASTMCP_RESOURCE_PREFIX_FORMAT : Comment formater les préfixes des ressources ("path" ou "protocol")

Votre premier serveur FastMCP

Créons un exemple complet de serveur :

# server.py
import random
from datetime import datetime
from fastmcp import FastMCP

# Créer le serveur avec la configuration
mcp = FastMCP(
    name="Mon Premier Serveur MCP",
    instructions="""
    Ce serveur fournit des utilitaires de base, notamment :
    - Des opérations mathématiques
    - La génération de nombres aléatoires
    - Les informations sur l'heure actuelle
    """
)

@mcp.tool
def add_numbers(a: float, b: float) -> float:
    """Additionne deux nombres."""
    return a + b

@mcp.tool
def roll_dice(sides: int = 6, count: int = 1) -> list[int]:
    """Lance des dés avec un nombre de faces spécifié."""
    if count > 10:
        raise ValueError("Maximum 10 dés autorisés")
    return [random.randint(1, sides) for _ in range(count)]

@mcp.resource("time://current")
def get_current_time() -> str:
    """Obtient la date et l'heure actuelles."""
    return datetime.now().isoformat()

@mcp.resource("config://server")
def get_server_config() -> dict:
    """Obtient les informations de configuration du serveur."""
    return {
        "name": mcp.name,
        "version": "1.0.0",
        "features": ["tools", "resources"],
        "uptime": "Vient de démarrer"
    }

if __name__ == "__main__":
    print(f"Démarrage de {mcp.name}...")
    mcp.run()

Exécuter votre serveur

Mode STDIO (Par défaut)

Parfait pour le développement local et les outils en ligne de commande :

python server.py

Mode HTTP

Mieux adapté aux clients web et aux tests de développement :

# Dans votre fichier server.py
if __name__ == "__main__":
    mcp.run(transport="http", host="127.0.0.1", port=8000)

Ensuite, exécutez :

python server.py

Votre serveur sera disponible à l'adresse http://127.0.0.1:8000/mcp/

Tester votre installation

Créez un client de test simple pour vérifier que tout fonctionne :

# test_client.py
import asyncio
from fastmcp import Client

async def test_server():
    # Tester via HTTP (si en mode HTTP)
    async with Client("http://localhost:8000/mcp/") as client:
        # Lister les outils disponibles
        tools = await client.list_tools()
        print("Outils disponibles :", [tool.name for tool in tools])

        # Appeler un outil
        result = await client.call_tool("add_numbers", {"a": 5, "b": 3})
        print("5 + 3 =", result.text)

        # Lire une ressource
        time_resource = await client.read_resource("time://current")
        print("Heure actuelle :", time_resource.content)

if __name__ == "__main__":
    asyncio.run(test_server())

Problèmes d'installation courants

ImportError: No module named 'fastmcp'

Assurez-vous que FastMCP est installé dans le bon environnement Python :

# Vérifiez quel Python vous utilisez
which python
python --version

# Installez dans le bon environnement
python -m pip install fastmcp

Conflits de versions

Si vous effectuez une mise à niveau depuis FastMCP 1.0 ou le SDK MCP officiel :

# Désinstallez les anciennes versions d'abord
pip uninstall mcp fastmcp

# Installez la dernière version
pip install fastmcp

Erreurs de permission

Sur certains systèmes, vous pourriez avoir besoin de :

# Utilisez le drapeau --user
pip install --user fastmcp

# Ou utilisez uv, qui gère mieux cela
uv pip install fastmcp

Prochaines étapes

Maintenant que FastMCP est installé et fonctionne, vous êtes prêt à :

  1. Construire des outils : Apprenez à créer des outils MCP puissants.
  2. Ajouter des ressources : Exposez des sources de données à vos clients LLM.
  3. Se connecter à Claude Code : Intégrez-vous aux environnements de développement.
  4. Déployer en production : Mettre à l'échelle vos serveurs pour une utilisation réelle.

Dans la section suivante, nous nous pencherons en profondeur sur la création d'outils sophistiqués capables de gérer des opérations et des traitements de données complexes.