Créer des modèles de prompts et des workflows réutilisablesLes prompts permettent aux serveurs de définir des modèles de prompts et des workflows réutilisables que les clients peuvent facilement présenter aux utilisateurs et aux LLMs. Ils offrent un moyen puissant de standardiser et de partager les interactions courantes avec les LLMs.Les prompts sont conçus pour être contrôlés par l'utilisateur, ce qui signifie qu'ils sont exposés des serveurs aux clients avec l'intention que l'utilisateur puisse explicitement les sélectionner pour les utiliser.Les prompts dans MCP sont des modèles prédéfinis qui peuvent :Accepter des arguments dynamiques
Inclure le contexte des ressources
Chaîner plusieurs interactions
Guider des workflows spécifiques
Apparaître sous forme d'éléments d'interface utilisateur (comme les commandes slash)
Chaque prompt est défini avec :Les clients peuvent découvrir les prompts disponibles via le point de terminaison prompts/list :Pour utiliser un prompt, les clients effectuent une requête prompts/get :Les prompts peuvent être dynamiques et inclure :{
"name": "analyze-project",
"description": "Analyser les logs et le code du projet",
"arguments": [
{
"name": "timeframe",
"description": "Période d'analyse des logs",
"required": true
},
{
"name": "fileUri",
"description": "URI du fichier de code à examiner",
"required": true
}
]
}
Lors du traitement de la requête prompts/get :{
"messages": [
{
"role": "user",
"content": {
"type": "text",
"text": "Analysez ces logs système et le fichier de code pour tout problème :"
}
},
{
"role": "user",
"content": {
"type": "resource",
"resource": {
"uri": "logs://recent?timeframe=1h",
"text": "[2024-03-14 15:32:11] ERROR: Connection timeout in network.py:127\n[2024-03-14 15:32:15] WARN: Retrying connection (attempt 2/3)\n[2024-03-14 15:32:20] ERROR: Max retries exceeded",
"mimeType": "text/plain"
}
}
},
{
"role": "user",
"content": {
"type": "resource",
"resource": {
"uri": "file:///path/to/code.py",
"text": "def connect_to_service(timeout=30):\n retries = 3\n for attempt in range(retries):\n try:\n return establish_connection(timeout)\n except TimeoutError:\n if attempt == retries - 1:\n raise\n time.sleep(5)\n\ndef establish_connection(timeout):\n # Connection implementation\n pass",
"mimeType": "text/x-python"
}
}
}
]
}
Voici un exemple complet d'implémentation de prompts dans un serveur MCP :Lors de l'implémentation de prompts :1.
Utilisez des noms de prompts clairs et descriptifs
2.
Fournissez des descriptions détaillées pour les prompts et les arguments
3.
Validez tous les arguments requis
4.
Gérez les arguments manquants avec élégance
5.
Envisagez le versionnage pour les modèles de prompts
6.
Mettez en cache le contenu dynamique lorsque cela est approprié
7.
Implémentez la gestion des erreurs
8.
Documentez les formats d'arguments attendus
9.
Envisagez la composabilité des prompts
10.
Testez les prompts avec diverses entrées
Les prompts peuvent apparaître dans les interfaces utilisateur client sous forme de :Éléments de menu contextuel
Entrées de la palette de commandes
Les serveurs peuvent informer les clients des modifications apportées aux prompts :1.
Capacité du serveur : prompts.listChanged
2.
Notification : notifications/prompts/list_changed
3.
Le client récupère à nouveau la liste des prompts
Lors de l'implémentation de prompts :Validez tous les arguments
Nettoyez les entrées utilisateur
Envisagez la limitation du débit
Implémentez des contrôles d'accès
Auditez l'utilisation des prompts
Gérez les données sensibles de manière appropriée
Validez le contenu généré
Implémentez des délais d'attente
Tenez compte des risques d'injection de prompt
Documentez les exigences de sécurité
Modified at 2025-03-13 05:36:40