Crear plantillas y flujos de trabajo de prompts reutilizablesLos prompts permiten a los servidores definir plantillas y flujos de trabajo de prompts reutilizables que los clientes pueden mostrar fácilmente a los usuarios y a los LLM. Proporcionan una forma poderosa de estandarizar y compartir interacciones comunes con LLM.Los prompts están diseñados para ser controlados por el usuario, lo que significa que se exponen de los servidores a los clientes con la intención de que el usuario pueda seleccionarlos explícitamente para su uso.Los prompts en MCP son plantillas predefinidas que pueden:Aceptar argumentos dinámicos
Incluir contexto de recursos
Encadenar múltiples interacciones
Guiar flujos de trabajo específicos
Mostrar como elementos de la interfaz de usuario (como comandos de barra inclinada)
Cada prompt se define con:Los clientes pueden descubrir los prompts disponibles a través del endpoint prompts/list
:Para usar un prompt, los clientes realizan una solicitud prompts/get
:Los prompts pueden ser dinámicos e incluir:{
"name": "analyze-project",
"description": "Analyze project logs and code",
"arguments": [
{
"name": "timeframe",
"description": "Time period to analyze logs",
"required": true
},
{
"name": "fileUri",
"description": "URI of code file to review",
"required": true
}
]
}
Al manejar la solicitud prompts/get
:{
"messages": [
{
"role": "user",
"content": {
"type": "text",
"text": "Analyze these system logs and the code file for any issues:"
}
},
{
"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"
}
}
}
]
}
Aquí hay un ejemplo completo de implementación de prompts en un servidor MCP:1.
Use nombres de prompt claros y descriptivos
2.
Proporcione descripciones detalladas para prompts y argumentos
3.
Valide todos los argumentos requeridos
4.
Maneje los argumentos faltantes con elegancia
5.
Considere el versionado para las plantillas de prompt
6.
Almacene en caché el contenido dinámico cuando sea apropiado
7.
Implemente el manejo de errores
8.
Documente los formatos de argumento esperados
9.
Considere la composibilidad del prompt
10.
Pruebe los prompts con varias entradas
Los prompts se pueden mostrar en las interfaces de usuario del cliente como:Comandos de barra inclinada
Elementos del menú contextual
Entradas de la paleta de comandos
Flujos de trabajo guiados
Los servidores pueden notificar a los clientes sobre los cambios en los prompts:1.
Capacidad del servidor: prompts.listChanged
2.
Notificación: notifications/prompts/list_changed
3.
El cliente vuelve a buscar la lista de prompts
Valide todos los argumentos
Desinfecte la entrada del usuario
Considere la limitación de velocidad
Implemente controles de acceso
Maneje los datos confidenciales de manera apropiada
Valide el contenido generado
Implemente tiempos de espera
Considere los riesgos de inyección de prompt
Documente los requisitos de seguridad
Modified at 2025-03-13 02:55:30