George GiosueHablemos
Proyectos

MCP Emtrafesa

Servidor MCP que permite a asistentes de IA acceder de forma estructurada a datos de transporte interprovincial de Emtrafesa: terminales, rutas, horarios, disponibilidad de asientos y boletos ya comprados.

Desde agosto de 2026 corre como servidor remoto en Cloudflare Workers. No requiere instalación ni autenticación: basta pegar la URL en el cliente.

Conectar

En Claude Desktop o claude.ai, Configuración → Conectores → Agregar conector personalizado:

https://mcp-emtrafesa.georgegiosue.dev/mcp

En Claude Code:

claude mcp add --transport http emtrafesa https://mcp-emtrafesa.georgegiosue.dev/mcp

También sigue publicado en npm para quien prefiera ejecutarlo localmente por stdio.

Herramientas

Herramienta Qué hace
get-terminals Todos los terminales de Emtrafesa en Perú
get-arrival-terminals Destinos disponibles desde una ciudad
get-departure-schedules Salidas entre dos ciudades
get-available-seats Asientos libres de una salida concreta
get-latest-purchased-tickets Boletos comprados, por DNI y correo
get-ticket-pdf Un boleto como PDF
get-frequently-asked-questions Equipaje, menores, adultos mayores, reglas del servicio

Cada campo que devuelven las herramientas se autodescribe, así que el modelo interpreta los resultados sin explicaciones adicionales. Se pregunta por nombre de ciudad; omitir la fecha significa hoy en Perú.

Arquitectura

El servidor se construye con una única fábrica createServer() que ambas entradas comparten: serveStdio() para el paquete de npm y createMcpHandler() para el Worker. Las herramientas se definen una sola vez y se sirven por los dos transportes.

Sobre el despliegue en Workers hubo tres detalles que no son obvios:

  • El SDK v2 expone una condición de export para workerd que reemplaza Ajv por un validador compatible. Ajv usa eval, prohibido en el runtime de Workers.
  • cheerio en su entrada principal arrastra undici y parse5-parser-stream, que dependen de net y tls. La variante cheerio/slim evita ambos.
  • El bundle necesita nodejs_compat para el Buffer que usa la generación de PDF.

Tecnologías

TypeScript, Bun, Model Context Protocol SDK v2, Cloudflare Workers, Zod, Cheerio.

Capturas

Búsqueda de boleto en PDF

Búsqueda de boleto en PDF

Motivación

Estandarizar el acceso programático a datos de transporte para integraciones con agentes y flujos de planificación de viajes. El paso a servidor remoto eliminó la fricción restante: ya no hace falta tener Node instalado ni editar un archivo de configuración para usarlo.