Définir des outils avec MCP
Le SDK Python officiel de MCP simplifie considérablement la création de serveurs. Au lieu d’écrire manuellement des schémas JSON complexes, le SDK gère toute cette complexité grâce aux décorateurs et aux annotations de type Python.
Initialisation du serveur
Créer un serveur MCP complet ne nécessite qu’une seule ligne :
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("DocumentMCP", log_level="ERROR")
Les documents sont stockés dans un simple dictionnaire Python :
docs = {
"rapport.md": "Ce rapport détaille l'état d'une tour de condensation.",
"financials.docx": "Ces données financières décrivent le budget du projet.",
"plan.md": "Le plan décrit les étapes de mise en oeuvre du projet.",
}
Définir des outils avec des décorateurs
Outil de lecture de document
@mcp.tool(
name="read_doc_contents",
description="Lire le contenu d'un document et le retourner sous forme de chaîne."
)
def read_document(
doc_id: str = Field(description="Identifiant du document à lire")
):
if doc_id not in docs:
raise ValueError(f"Document avec l'id {doc_id} non trouvé")
return docs[doc_id]
Le décorateur @mcp.tool génère automatiquement le schéma JSON dont Claude a besoin.
Outil de modification de document
@mcp.tool(
name="edit_document",
description="Modifier un document en remplaçant une chaîne par une nouvelle."
)
def edit_document(
doc_id: str = Field(description="Identifiant du document à modifier"),
old_str: str = Field(description="Le texte à remplacer. Doit correspondre exactement."),
new_str: str = Field(description="Le nouveau texte à insérer.")
):
if doc_id not in docs:
raise ValueError(f"Document avec l'id {doc_id} non trouvé")
docs[doc_id] = docs[doc_id].replace(old_str, new_str)
Avantages de cette approche
| Avantage | Description |
|---|---|
| Génération automatique | Le schéma JSON est créé depuis les annotations de type |
| Code lisible | Facile à maintenir et comprendre |
| Validation intégrée | Pydantic valide les paramètres automatiquement |
| Moins de boilerplate | Pas d’écriture manuelle de schémas |