Chargement

La création d'un serveur MCP devient beaucoup plus simple lorsque vous utilisez le SDK Python officiel. Au lieu d'écrire manuellement des schémas JSON complexes pour les outils, le SDK gère toute cette complexité pour vous grâce à des décorateurs et des indications de type.

Notre serveur MCP avec des outils pour lire et mettre à jour un document, connecté à document.pdf, spreadsheet.xlsx, report.txt et spec.md.

Dans cet exemple, nous créons un serveur MCP qui gère des documents stockés en mémoire. Le serveur fournira deux outils essentiels : l'un pour lire le contenu d'un document et l'autre pour le mettre à jour via des opérations de recherche et remplacement.

Configuration du serveur MCP

Le SDK Python MCP rend la création de serveur incroyablement simple. Vous pouvez initialiser un serveur MCP complet en une seule ligne :

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

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

Pour cette implémentation, les documents sont stockés dans un simple dictionnaire Python où les clés sont les identifiants de document et les valeurs contiennent le contenu du document :

python
docs = {
    "deposition.md": "This deposition covers the testimony of Angela Smith, P.E.",
    "report.pdf": "The report details the state of a 20m condenser tower.",
    "financials.docx": "These financials outline the project's budget and expenditure",
    "outlook.pdf": "This document presents the projected future performance of the",
    "plan.md": "The plan outlines the steps for the project's implementation.",
    "spec.txt": "These specifications define the technical requirements for the equipment"
}

Définition d'outils avec des décorateurs

Notre serveur MCP avec des outils pour lire et mettre à jour un document, connecté à document.pdf, spreadsheet.xlsx, report.txt et spec.md.

Le SDK transforme la création d'outils d'un processus verbeux en quelque chose de clair et lisible. Au lieu d'écrire de longs schémas JSON, vous utilisez des décorateurs Python et des indications de type.

Création de l'outil de lecture de document

Le premier outil permet à Claude de lire n'importe quel document à partir de son identifiant. Voici l'implémentation complète :

python
@mcp.tool(
    name="read_doc_contents",
    description="Read the contents of a document and return it as a string."
)
def read_document(
    doc_id: str = Field(description="Id of the document to read")
):
    if doc_id not in docs:
        raise ValueError(f"Doc with id {doc_id} not found")
    
    return docs[doc_id]

Le décorateur @mcp.tool génère automatiquement le schéma JSON dont Claude a besoin. La classe Field de Pydantic fournit des descriptions de paramètres qui aident Claude à comprendre ce qu'attend chaque argument.

Création de l'outil d'édition de document

Le second outil effectue de simples opérations de recherche et remplacement sur les documents :

python
@mcp.tool(
    name="edit_document",
    description="Edit a document by replacing a string in the documents content with a new string."
)
def edit_document(
    doc_id: str = Field(description="Id of the document that will be edited"),
    old_str: str = Field(description="The text to replace. Must match exactly, including whitespace."),
    new_str: str = Field(description="The new text to insert in place of the old text.")
):
    if doc_id not in docs:
        raise ValueError(f"Doc with id {doc_id} not found")
    
    docs[doc_id] = docs[doc_id].replace(old_str, new_str)

Cet outil prend trois paramètres : l'identifiant du document, le texte à rechercher et le texte de remplacement. L'implémentation utilise la méthode intégrée replace() des chaînes de caractères Python pour plus de simplicité.

Gestion des erreurs

Les deux outils incluent une gestion d'erreurs de base pour traiter les cas où Claude demande un document qui n'existe pas. Lorsqu'un identifiant de document invalide est fourni, les outils lèvent une ValueError avec un message descriptif que Claude peut comprendre et sur lequel il peut éventuellement agir.

Principaux avantages de l'approche SDK

  • Génération automatique de schémas JSON à partir des indications de type Python
  • Code clair et lisible, facile à maintenir
  • Validation intégrée des paramètres grâce à Pydantic
  • Réduction du code répétitif par rapport à l'écriture manuelle de schémas
  • Sécurité des types et prise en charge par l'IDE pour le développement

Le SDK Python MCP transforme ce qui était autrefois un processus complexe d'écriture de définitions d'outils en quelque chose qui semble naturel pour les développeurs Python. Vous vous concentrez sur la logique métier pendant que le SDK gère les détails du protocole.