MCP Server

mcp-stm
montevideo

Montevideo's transit system, accessible to AI El transporte de Montevideo, accesible para la IA

"¿Cuándo pasa el próximo 181 por Bv España y Libertad?"

5 tools for Montevideo transit 5 herramientas para el transporte de Montevideo

An MCP server that gives AI assistants access to Montevideo's public transit data — schedules, routes, stops, and real-time positions from the STM open data portal.

Un servidor MCP que da a los asistentes de IA acceso a los datos del transporte público de Montevideo — horarios, recorridos, paradas y posiciones en tiempo real del portal de datos abiertos del STM.

buscar_parada
Search stops by location, intersection, or coordinates Buscar paradas por ubicación, intersección o coordenadas
proximos_buses
Next buses arriving at a stop Próximos ómnibus en llegar a una parada
recorrido_linea
Full route of a bus line with all its stops Recorrido completo de una línea con todas sus paradas
ubicacion_bus
Real-time bus position (when available) Posición del ómnibus en tiempo real (cuando está disponible)
como_llegar
Route planning from A to B by public transit Planificación de ruta de A a B en transporte público

One command, zero config Un comando, cero configuración

Run it directly with npx. Data downloads automatically from Montevideo's open data portal, caches to disk, and warms up on startup for fast responses.

Ejecutalo directamente con npx. Los datos se descargan automáticamente del portal de datos abiertos de Montevideo, se cachean en disco y se pre-cargan al iniciar para respuestas rápidas.

$ npx mcp-stm-montevideo
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "stm-montevideo": {
      "command": "npx",
      "args": ["-y", "mcp-stm-montevideo"]
    }
  }
}
.cursor/mcp.json
{
  "mcpServers": {
    "stm-montevideo": {
      "command": "npx",
      "args": ["-y", "mcp-stm-montevideo"]
    }
  }
}
.mcp.json (project root)
{
  "mcpServers": {
    "stm-montevideo": {
      "command": "npx",
      "args": ["-y", "mcp-stm-montevideo"]
    }
  }
}
Optional: pre-download datasets Opcional: pre-descargar datasets

The first run downloads data (~60s) and caches it to ~/.cache/mcp-stm-montevideo/. Subsequent runs load from disk cache in ~2s. For development, you can also bundle datasets into the build:

La primera ejecución descarga datos (~60s) y los cachea en ~/.cache/mcp-stm-montevideo/. Las siguientes ejecuciones cargan del caché en disco en ~2s. Para desarrollo, también podés empaquetar los datasets en el build:

$ npm run build-stm-data
Schedules, stops & routes from STM Horarios, paradas y recorridos del STM
$ npm run build-geo-data
Offline geocoding data from OpenStreetMap Datos de geocodificación offline de OpenStreetMap

See it in action Miralo en acción

A realistic conversation between a user and an AI assistant using the STM tools.

Una conversación realista entre un usuario y un asistente de IA usando las herramientas STM.

User

¿Cómo llego de Ciudad Vieja a Pocitos en ómnibus?

Assistant
→ como_llegar(origen="Ciudad Vieja", destino="Pocitos")

Podés tomar la línea 121 desde la parada Sarandí esq. Misiones (Ciudad Vieja). Bajás en Bv España esq. Joaquín Núñez (Pocitos).

Son unas 18 paradas, aproximadamente 25 minutos. El próximo sale en 8 min.

User

¿Y qué otras líneas pasan por esa parada?

Assistant
→ proximos_buses(parada_id="2104")

Por la parada Sarandí esq. Misiones pasan las líneas: 121, 116, 130, 142, 188, D10.