Esta guía es para desarrolladores que quieren exponer un MCP para que Whaapy pueda conectarlo a un agente, tool o subagent.Whaapy usa MCP como una capa estructurada para consultar datos o ejecutar acciones externas. Para que funcione bien, el servidor debe declarar schemas claros, recibir argumentos tipados y devolver resultados verificables.
Si solo quieres conectar un MCP desde el dashboard, revisa Configurar MCPs. Esta página explica cómo construir el servidor MCP que Whaapy va a consumir.
POST https://tu-dominio.com/mcpDELETE https://tu-dominio.com/mcp
Whaapy envía estos headers:
Content-Type: application/jsonAccept: application/json, text/event-streamMCP-Protocol-Version: 2025-06-18Mcp-Session-Id: <session-id si el server lo entregó>
Métodos de autenticación soportados:
Tipo
Cómo se envía
none
Sin credenciales
bearer
Authorization: Bearer <token>
api_key
Header configurado, por ejemplo X-API-Key: <value>
custom_headers
Uno o varios headers configurados
Timeouts actuales del cliente Whaapy:
Operación
Timeout
initialize
15 segundos
tools/list
15 segundos
tools/call
30 segundos
notifications/initialized
5 segundos
Diseña tools que respondan rápido. Si una operación tarda más de 30 segundos, conviértela en una operación encolada y devuelve un estado verificable.
Para errores de negocio dentro de una tool, devuelve isError: true y un payload estructurado:
{ "content": [ { "type": "text", "text": "{\"ok\":false,\"status\":\"needs_more_info\",\"errors\":[{\"code\":\"missing_customer_identity\",\"message_es\":\"Falta confirmar la identidad del cliente\",\"field\":\"customerId\",\"retryable\":true}],\"nextQuestion\":\"¿Me compartes tu número de servicio o usuario?\",\"toolName\":\"get_customer_balance\"}" } ], "isError": true}
Formato recomendado de errores:
{ "errors": [ { "code": "missing_customer_identity", "message": "Customer identity is required", "message_es": "Falta confirmar la identidad del cliente", "field": "customerId", "retryable": true } ]}
Usa message_es cuando el agente atienda usuarios en español. Whaapy puede usar ese mensaje para explicar el siguiente paso con menos ambigüedad.
Además del schema, la descripción debe explicar cuándo usar la tool y qué significa un resultado correcto.Incluye estas secciones en description:
When to use:Cuando el cliente envía un comprobante de transferencia y hay datos suficientes para validarlo.Never use for:Pagos en efectivo, comprobantes ilegibles o casos donde el cliente no corresponde.Identity:Requiere identityConfirmed=true o un candidato explícito pendiente de confirmación.Side effects:Valida el SPEI y registra evidencia de pago.Success criteria:ok=true, status=success y data.paymentId presente.Fallback:Si faltan datos, devolver status=needs_more_info con nextQuestion.
Buenas descripciones reducen llamadas incorrectas y evitan que el agente prometa acciones no ejecutadas.