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:

VariablePara qué
WAGEND_API_URLURL de la API (por defecto https://api.wagend.app)
MCP_TOOLSETSConjuntos a exponer: booking, admin o ambos (por defecto booking,admin)
MCP_HOST, MCP_PORTDónde escucha (por defecto 127.0.0.1:8700)
MCP_ALLOWED_HOSTSHosts 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.

HerramientaScopeHace
list_servicesconfig:readServicios con duración y precio
find_slotsslots:readHorarios disponibles de un servicio entre dos fechas
hold_slotbookings:writePre-reserva de 10 minutos
confirm_bookingbookings:writeConfirma una pre-reserva con los datos del cliente
cancel_booking, reschedule_bookingbookings:writeGestiona una reserva existente
get_bookingbookings:readDetalle de una reserva

Administración (admin): para que el dueño opere el negocio desde su asistente de IA.

HerramientaScopeHace
list_resourcesconfig:readEquipo, salas, máquinas y grupos
list_todaybookings:readReservas del día
block_timeconfig:write y bookings:readCierra días completos de un recurso (máx. 31). No cancela reservas existentes: las devuelve para que una persona decida
create_service, update_serviceconfig:writeCrea o cambia un servicio, con su formulario de reserva
update_scheduleconfig:writeCambia el horario semanal o la zona horaria
get_statsbookings:readReservas, ocupación y ausencias por recurso
get_stage_config, list_stage_config_versions, get_stage_config_versionconfig:readEtapas, acciones y formularios, con su historial de versiones
update_stage_config, revert_stage_configsettings:writeReemplaza 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.txt lista todas las páginas de la documentación.
  • /llms-full.txt contiene la documentación completa en Markdown.