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 clientsFASTMCP_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 à :
- Construire des outils : Apprenez à créer des outils MCP puissants.
- Ajouter des ressources : Exposez des sources de données à vos clients LLM.
- Se connecter à Claude Code : Intégrez-vous aux environnements de développement.
- 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.