Aller au contenu principal

Les prompts côté client

La dernière étape de la construction de notre client MCP est d’implémenter les fonctionnalités de prompts. Cela permet de lister tous les prompts disponibles du serveur et de récupérer des prompts spécifiques avec les variables remplies.

Implémenter list_prompts

La méthode list_prompts est directe. Elle appelle la fonction de liste de prompts de la session et retourne les prompts :

async def list_prompts(self) -> list[types.Prompt]:
    result = await self.session().list_prompts()
    return result.prompts

Récupérer des prompts individuels

La méthode get_prompt est plus intéressante car elle gère l’interpolation de variables. Quand vous demandez un prompt, vous fournissez des arguments qui sont passés à la fonction de prompt comme arguments mot-clé :

async def get_prompt(self, prompt_name, args: dict[str, str]):
    result = await self.session().get_prompt(prompt_name, args)
    return result.messages

Par exemple, si votre serveur a un prompt format_document qui attend un paramètre doc_id, le dictionnaire d’arguments contiendrait {"doc_id": "plan.md"}. Cette valeur est interpolée dans le template du prompt.

Tester les prompts en action

Une fois implémenté, testez les prompts via la CLI. Quand vous tapez un slash (/), les prompts disponibles apparaissent comme des commandes. Sélectionner un prompt comme “format” vous invite à choisir parmi les documents disponibles.

Après avoir sélectionné un document, le système envoie le prompt complet à Claude. L’IA reçoit à la fois les instructions de formatage et l’identifiant du document, puis utilise les outils disponibles pour récupérer et traiter le contenu.

Comment fonctionnent les prompts

Serveur MCP
  └─► Définit le prompt avec @mcp.prompt
      └─► Template avec variables (doc_id, etc.)

Client MCP
  └─► Appelle list_prompts() pour découvrir les prompts
  └─► Appelle get_prompt(name, args) pour récupérer un prompt instancié
      └─► Reçoit les messages prêts à envoyer à Claude

Application
  └─► Présente les prompts à l'utilisateur (ex: commandes slash)
  └─► Envoie les messages à Claude

Le cycle de vie complet d’un prompt :

  1. Écrire et évaluer un prompt pertinent pour votre domaine
  2. Définir le prompt dans votre serveur MCP avec @mcp.prompt
  3. Les clients demandent le prompt à tout moment avec list_prompts()
  4. Les arguments fournis par le client deviennent des arguments mot-clé dans votre fonction
  5. La fonction retourne des messages formatés prêts pour le modèle IA

Résumé des trois primitives MCP

Avec les prompts côté client, vous avez maintenant implémenté les trois primitives MCP :

PrimitiveContrôlée parMéthodes client
OutilsClaudelist_tools(), call_tool()
RessourcesL’applicationread_resource()
PromptsL’utilisateurlist_prompts(), get_prompt()

Ce système crée des prompts réutilisables et paramétrés qui maintiennent la cohérence tout en permettant la personnalisation via des variables — particulièrement utile pour les workflows complexes où vous voulez vous assurer que l’IA reçoit des instructions correctement structurées à chaque fois.