Aller au contenu principal

Definir des outils avec MCP

Le SDK Python officiel de MCP simplifie la construction de serveurs MCP. Au lieu d’ecrire manuellement des schemas JSON complexes pour les outils, vous les definissez avec des decorateurs et le SDK gere le reste.

Avantages du SDK Python MCP

  • Creation de serveurs MCP avec un minimum de code boilerplate
  • Generation automatique de schemas JSON depuis les signatures de fonctions Python
  • Definition simplifiee des outils via des decorateurs
  • Validation des types et gestion des erreurs integrees

Configuration du serveur

from mcp.server.fastmcp import FastMCP
from pydantic import Field

mcp = FastMCP("DocumentMCP", log_level="ERROR")

docs = {
    "deposition.md": "Ce document couvre le temoignage d'Angela Smith...",
    "report.pdf": "Le rapport detaille l'etat d'une tour de condensation...",
    "financials.docx": "Ces donnees financieres decrivent le budget du projet...",
    "outlook.pdf": "Ce document presente les performances projetees...",
    "plan.md": "Le plan decrit les etapes de mise en oeuvre...",
    "spec.txt": "Ces specifications definissent les exigences techniques..."
}

Implementer l’outil de lecture

@mcp.tool(
    name="read_doc_contents",
    description="Lire le contenu d'un document et le renvoyer sous forme de chaine."
)
def read_document(
    doc_id: str = Field(description="Id du document a lire")
):
    if doc_id not in docs:
        raise ValueError(f"Document avec l'id {doc_id} introuvable")

    return docs[doc_id]

Implementer l’outil d’edition

@mcp.tool(
    name="edit_document",
    description="Editer un document en remplacant une chaine par une nouvelle."
)
def edit_document(
    doc_id: str = Field(description="Id du document a editer"),
    old_str: str = Field(description="Le texte a remplacer. Doit correspondre exactement."),
    new_str: str = Field(description="Le nouveau texte a inserer.")
):
    if doc_id not in docs:
        raise ValueError(f"Document avec l'id {doc_id} introuvable")

    docs[doc_id] = docs[doc_id].replace(old_str, new_str)

Points cles

  • Importez Field de pydantic pour les descriptions de parametres
  • Utilisez les type hints pour specifier les types de parametres
  • Incluez la gestion d’erreurs pour les cas limites
  • Ecrivez des noms et descriptions d’outils clairs et descriptifs
  • Le SDK convertit automatiquement votre signature de fonction en schema JSON

Le SDK Python MCP reduit considerablement la complexite par rapport a l’ecriture manuelle de schemas JSON.