Aller au contenu principal

Definir des outils avec MCP

Le SDK Python MCP simplifie enormement la creation d’outils grace aux decorateurs.

Initialiser le serveur

from mcp.server.fastmcp import FastMCP

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

Definir un outil avec decorateur

@mcp.tool(
    name="add_ints",
    description="Additionne deux entiers",
)
def tool_fn(
    a=Field(description="Premier nombre"),
    b=Field(description="Second nombre"),
) -> int:
    return a + b

MCP genere automatiquement le schema JSON complet en coulisses.

Outil de lecture de documents

@mcp.tool(
    name="read_doc_contents",
    description="Lit le contenu d'un document et le retourne sous forme de chaine."
)
def read_document(
    doc_id: str = Field(description="Identifiant du document a lire")
):
    if doc_id not in docs:
        raise ValueError(f"Document {doc_id} non trouve")
    return docs[doc_id]

Outil d’edition de documents

@mcp.tool(
    name="edit_document",
    description="Edite un document en remplaçant une chaine par une autre."
)
def edit_document(
    doc_id: str = Field(description="Identifiant du document a editer"),
    old_str: str = Field(description="Texte a remplacer. Doit correspondre exactement."),
    new_str: str = Field(description="Nouveau texte.")
):
    if doc_id not in docs:
        raise ValueError(f"Document {doc_id} non trouve")
    docs[doc_id] = docs[doc_id].replace(old_str, new_str)

Avantages de l’approche SDK

  • Pas de schema JSON a ecrire manuellement
  • Validation automatique des parametres via les types
  • Les descriptions Field aident Claude a comprendre l’usage
  • Gestion d’erreurs naturelle via les exceptions Python
  • Enregistrement automatique des outils via les decorateurs