Skip to main content

Crear un MCP compatible con Whaapy

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.

Resumen rápido

Whaapy espera un servidor MCP por HTTP con estas capacidades: Flujo completo:

Transporte

Expón un endpoint HTTP para MCP:
Whaapy envía estos headers:
Métodos de autenticación soportados: Timeouts actuales del cliente Whaapy:
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.

Handshake

Whaapy inicia la sesión con initialize. Request:
Response:
Después Whaapy envía la notificación notifications/initialized:
El servidor puede responder 202 Accepted.

Discovery con tools/list

Whaapy descubre las herramientas con tools/list. Request:
Response:
Whaapy guarda name, description e inputSchema. Después usa ese schema para validar los argumentos antes de llamar la tool.

Reglas de inputSchema

La raíz del inputSchema debe ser un objeto:
Tipos soportados: Para arrays, define items:
Para objetos anidados, define properties:
No declares object o array si esperas recibir un string con JSON adentro. Whaapy valida tipos reales contra el schema.

Objetos y arrays reales

Este es el error más común al integrar MCPs con Whaapy: pasar estructuras como strings JSON. Bueno:
Malo:
Si el schema dice:
entonces Whaapy espera:
  • rawExtracted como objeto real
  • trackingKeyCandidates como array real
No como texto serializado.

Ejecución con tools/call

Cuando el agente decide usar una capacidad, Whaapy llama tools/call. Request:
Whaapy valida antes de ejecutar:
  • campos requeridos
  • tipos primitivos
  • enum
  • arrays
  • objetos anidados
  • propiedades extra si additionalProperties: false
Si los argumentos no pasan validación, Whaapy no llama al MCP y registra un error de validación.

Respuesta de tools

MCP exige que la respuesta tenga content. Whaapy funciona mejor si devuelves un solo bloque text con JSON válido. Respuesta recomendada:
El JSON dentro de text debería seguir este envelope:
Campos recomendados: Estados recomendados:

Errores

Para errores técnicos del protocolo, usa error JSON-RPC:
Para errores de negocio dentro de una tool, devuelve isError: true y un payload estructurado:
Formato recomendado de errores:
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.

Contrato semántico de una tool

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:
Buenas descripciones reducen llamadas incorrectas y evitan que el agente prometa acciones no ejecutadas.

Acciones con side effects

Si la tool modifica algo externo, no basta con devolver texto. Devuelve evidencia verificable: Ejemplo:
No devuelvas éxito parcial como si fuera éxito final. Si la operación quedó pendiente, usa status: "queued" o status: "pending_confirmation".

Checklist antes de entregar un MCP

El servidor responde initialize correctamente.
tools/list devuelve todas las tools con name, description e inputSchema.
Cada inputSchema tiene raíz type: "object".
Los campos object y array se reciben como estructuras reales, no strings JSON.
Las tools devuelven content con JSON parseable.
Los errores tienen code, mensaje claro y, si aplica, field.
Las acciones con side effects devuelven IDs verificables.
Las tools con datos faltantes devuelven needs_more_info y nextQuestion.
Las credenciales usan permisos mínimos.
Los casos de timeout o sistema externo caído tienen fallback claro.

Ejemplo TypeScript

Ejemplo mínimo usando el SDK oficial:

Siguiente paso

Configurar MCPs

Conecta el MCP al agente desde Whaapy.

Configurar Tools

Define cuándo el agente debe ejecutar cada capacidad.