Aller au contenu principal

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

AvantageDescription
Génération automatiqueLe schéma JSON est créé depuis les annotations de type
Code lisibleFacile à maintenir et comprendre
Validation intégréePydantic valide les paramètres automatiquement
Moins de boilerplatePas d’écriture manuelle de schémas