Aller au contenu principal

Définir des prompts MCP

Mis à jour le 30 juillet 2026

Troisième et dernière primitive du serveur : les prompts. Ils permettent de définir des instructions pré-construites et de haute qualité que les clients peuvent utiliser plutôt que d’écrire leurs propres prompts — l’ingénierie de prompt du début de ce cours, transformée en service que le serveur distribue.

Pourquoi utiliser des prompts MCP ?

La comparaison qui justifie tout : un utilisateur qui demande « convertis rapport.pdf en markdown » obtiendra des résultats — approximatifs, variables selon la formulation du jour. Un prompt soigneusement testé — avec des instructions précises sur le formatage, la structure et les exigences — donnera des résultats bien supérieurs, à chaque fois, pour tous les utilisateurs. L’économie du dispositif : le développeur du serveur investit une fois dans un excellent prompt, et cet investissement sert chaque invocation, sur chaque client connecté.

Implémentation

Le pattern décorateur, une troisième fois :

from mcp.server.fastmcp.prompts import base

@mcp.prompt(
    name="format",
    description="Réécrit le contenu du document au format Markdown."
)
def format_document(
    doc_id: str = Field(description="Identifiant du document à formater")
) -> list[base.Message]:
    prompt = f"""
Votre objectif est de reformater un document pour utiliser la syntaxe markdown.
L'identifiant du document à reformater est : {doc_id}

Ajoutez des titres, des listes à puces, des tableaux, etc. selon les besoins.
Utilisez l'outil 'edit_document' pour modifier le document une fois reformaté.
"""
    return [base.UserMessage(prompt)]

Trois lectures utiles de ce code. La fonction est un template : doc_id sera fourni par le client à la demande, et l’interpolation se fait ici, côté serveur — le client ne verra jamais le texte du prompt. Le retour est une liste de messages typés (base.UserMessage) : un prompt peut en contenir plusieurs, prêts à rejoindre une conversation Claude tels quels. Et la dernière ligne du prompt mérite un arrêt : elle référence l’outil edit_document du même serveur — le prompt orchestre les outils, les primitives se composent. Quand l’utilisateur tapera /format, Claude lira ces instructions puis mobilisera les outils pour les exécuter.

Bonnes pratiques

  • Soyez spécifiques : des instructions détaillées donnent de meilleurs résultats
  • Testez exhaustivement : avec différentes entrées et scénarios
  • Concevez en lien avec vos outils : le prompt devrait guider Claude à utiliser les outils disponibles
  • Décrivez clairement : les utilisateurs doivent comprendre ce que fait chaque prompt

La deuxième règle mérite d’être prise au sérieux : un prompt MCP est un prompt de production — servi à chaque utilisateur qui invoque la commande. Il mérite la même rigueur d’évaluation que n’importe quel prompt du cours : jeu d’essais, cas limites, itérations mesurées. Et la quatrième règle rappelle le public de la description : elle s’affichera dans les menus des clients — c’est elle qui permet à l’utilisateur de choisir la bonne commande.

Comme toujours, l’inspecteur valide avant intégration : onglet Prompts, saisie des paramètres, et vérification des messages générés — interpolation comprise. La prochaine leçon branche ces prompts côté client, en commandes slash.

Points clés à retenir

  • Les prompts MCP distribuent votre ingénierie de prompt : écrite et testée une fois, servie à tous les clients
  • @mcp.prompt + fonction template : interpolation côté serveur, retour en messages prêts pour Claude
  • Un prompt peut orchestrer les outils du même serveur — les primitives se composent
  • C’est un prompt de production : évaluez-le avec la rigueur du début du cours
  • La description alimente les menus clients ; l’inspecteur (onglet Prompts) valide l’interpolation