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