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