MCP y agentes de IA
Conectá Claude, ChatGPT o tu propio agente al servidor MCP de Fiuit para buscar horarios, reservar y operar el negocio con tu clave de API.
Actualizado:
Fiuit incluye un servidor MCP (Model Context Protocol) para que los agentes de IA usen el mismo motor que el bot de WhatsApp: mismas pre-reservas, misma validación y mismo registro de auditoría. El servidor es un cliente fino de la API: cada herramienta llama a la API con tu misma clave, así que el MCP nunca da más permisos que la clave.
El servidor está en el repositorio (packages/mcp) y hoy lo corrés vos. El servidor alojado en mcp.wagend.app todavía no está desplegado: es Próximamente. La autenticación con OAuth también.
Correr el servidor
Necesitás Python 3.12+ y uv.
cd packages/mcp
uv sync
WAGEND_API_URL=https://api.wagend.app MCP_PORT=8700 uv run python -m wagend_mcp
# escucha en http://127.0.0.1:8700/ (Streamable HTTP)
Variables:
| Variable | Para qué |
|---|---|
WAGEND_API_URL | URL de la API (por defecto https://api.wagend.app) |
MCP_TOOLSETS | Conjuntos a exponer: booking, admin o ambos (por defecto booking,admin) |
MCP_HOST, MCP_PORT | Dónde escucha (por defecto 127.0.0.1:8700) |
MCP_ALLOWED_HOSTS | Hosts permitidos (protección contra DNS rebinding) |
Conectar un cliente
La autenticación es una clave de API en el header Authorization. Sin una clave con formato válido, el servidor responde 401 antes de entrar al protocolo.
Con Claude Code:
claude mcp add --transport http wagend http://127.0.0.1:8700/ \
--header "Authorization: Bearer wg_live_xxx"
O con la configuración JSON de cualquier cliente que soporte HTTP:
{
"mcpServers": {
"wagend": {
"type": "http",
"url": "http://127.0.0.1:8700/",
"headers": { "Authorization": "Bearer wg_live_xxx" }
}
}
}
Para probarlo sin un agente: npx @modelcontextprotocol/inspector (transporte Streamable HTTP, la misma URL y el header).
Herramientas
Todas las herramientas del conjunto activo se listan, pero cada una funciona solo si la clave tiene el scope que necesita; si no, devuelve el error 403 de la API. Las escrituras quedan auditadas con actor mcp.
Reservas (booking): para asistentes que reservan en nombre de un cliente.
| Herramienta | Scope | Hace |
|---|---|---|
list_services | config:read | Servicios con duración y precio |
find_slots | slots:read | Horarios disponibles de un servicio entre dos fechas |
hold_slot | bookings:write | Pre-reserva de 10 minutos |
confirm_booking | bookings:write | Confirma una pre-reserva con los datos del cliente |
cancel_booking, reschedule_booking | bookings:write | Gestiona una reserva existente |
get_booking | bookings:read | Detalle de una reserva |
Administración (admin): para que el dueño opere el negocio desde su asistente de IA.
| Herramienta | Scope | Hace |
|---|---|---|
list_resources | config:read | Equipo, salas, máquinas y grupos |
list_today | bookings:read | Reservas del día |
block_time | config:write y bookings:read | Cierra días completos de un recurso (máx. 31). No cancela reservas existentes: las devuelve para que una persona decida |
create_service, update_service | config:write | Crea o cambia un servicio, con su formulario de reserva |
update_schedule | config:write | Cambia el horario semanal o la zona horaria |
get_stats | bookings:read | Reservas, ocupación y ausencias por recurso |
get_stage_config, list_stage_config_versions, get_stage_config_version | config:read | Etapas, acciones y formularios, con su historial de versiones |
update_stage_config, revert_stage_config | settings:write | Reemplaza o revierte las etapas (crea una versión nueva; no borra historial) |
Las escrituras de configuración exigen confirm=true. Sin él, la herramienta no llama a la API: devuelve confirmation_required con lo que enviaría, para que el agente se lo muestre a una persona y repita con la confirmación.
Ejemplos de pedidos
- "Reservame un corte con Juan mañana a la mañana, a nombre de Carlos."
- "Bloqueá la máquina de láser el lunes que viene por mantenimiento y decime qué reservas quedan afectadas."
- "¿Cuántas ausencias tuvimos este mes?"
Docs para LLMs
/llms.txtlista todas las páginas de la documentación./llms-full.txtcontiene la documentación completa en Markdown.