Mira la aplicación en acción
El asistente busca las estaciones Balderas y Bellas Artes, calcula la ruta con sus herramientas y la muestra en el mapa.
Narración con voz sintética en inglés. Activa el sonido en el reproductor para escucharla.
Abrir videoTambién puedes explorar una secuencia de paradas guardada del GTFS.
Construí un mapa del transporte de la Ciudad de México y después le agregué un asistente. En un mapa puedes pulsar una estación. Un asistente tiene que entender qué quisiste decir con "cerca del museo", elegir estaciones y explicar el trayecto sin inventar una conexión.
La ruta sale de un grafo en PostgreSQL. El modelo lleva la conversación y elige herramientas. Puedo revisar los pasos entre la pregunta y la respuesta.
El código está en oorona/metro. El explorador de esta página usa un viaje del GTFS guardado. Muestra la secuencia de estaciones sin llamar al asistente ni presentarse como un aviso de servicio en tiempo real.
Datos que el agente puede consultar
El backend carga archivos GTFS en tablas PostGIS de estaciones, viajes, horarios y geometrías. Construye aristas de viaje y transbordo para pgRouting. Los CSV de afluencia ofrecen otra vista de la red, con distinta granularidad según el medio de transporte.
Un conteo por línea no justifica un mapa de calor por estación. Por eso la aplicación limita ese mapa a Metro, donde sí hay registros por estación. Repartir un total entre estaciones produciría una estimación que tendría que identificarse como tal.
El repositorio documenta un GTFS de octubre de 2022 y archivos de afluencia hasta marzo de 2026. Una ruta calculada con ese grafo es una estimación bajo sus supuestos guardados. No confirma que todos los servicios operen hoy.
De una pregunta a una ruta
El servidor MCP expone operaciones del backend como herramientas. El agente Gemini las descubre y ejecuta un ciclo limitado: ocho iteraciones y 30 segundos de espera por herramienta en el código revisado.
Entre dos estaciones, resuelve sus identificadores y llama al cálculo de ruta. Con puntos de interés tiene que geocodificar, encontrar estaciones cercanas, comparar alternativas e incluir las caminatas de ambos extremos.
El prompt distingue "tomar el Tren Ligero" de "usar solamente el Tren Ligero". Restringir todo el viaje a un medio puede eliminar el transbordo necesario. También pide comparar estaciones candidatas, porque caminar un poco más hasta una conexión útil puede ahorrar tiempo total.
Esa instrucción necesita evaluación. Tenerla escrita no demuestra que el agente la siga siempre.
Revisar las llamadas
El backend transmite eventos del ciclo, texto del modelo, acciones y resultados. El frontend tiene un panel de trazas junto al mapa. Si la respuesta falla, puedo investigar si eligió mal el lugar, llamó otra herramienta o explicó incorrectamente una ruta válida.
La evaluación debe incluir nombres de estaciones repetidos, abreviaturas de museos, transbordos, orígenes ausentes y lugares que no se pueden resolver. Quiero ver la búsqueda fallida y la aclaración solicitada.
El manifiesto descargable identifica la revisión y los archivos del agente, servidor MCP y motor de rutas. La muestra del navegador contiene estaciones guardadas, no una sesión grabada del modelo. Una grabación completa debe incluir la configuración y la ruta devuelta.
Lo que muestra este proyecto
El trabajo conecta ingestión de datos, consultas espaciales, interfaces de herramientas y una interfaz que permite revisar el resultado. PostgreSQL le da al asistente algo concreto que consultar. La traza permite comprobar cómo lo usó.
Para reproducirlo, conviene una instancia aislada de PostgreSQL con PostGIS y pgRouting. El despliegue existente comparte un servidor de base de datos; reproducir el ejemplo no requiere reiniciarlo ni tocar las otras aplicaciones.