osm-mcp
osm-mcp
Un servidor MCP para OpenStreetMap: geocodificación, distancias y duraciones a pie/en coche/en bicicleta, optimización de rutas con múltiples paradas, isócronas y búsqueda de POI — diseñado para la planificación de viajes con asistentes de IA.
11 herramientas, todas de solo lectura. Todos los backends son servicios públicos gratuitos de OpenStreetMap; no se requiere clave API. Opcionalmente, se puede proporcionar una clave de OpenRouteService para cambiar el motor de enrutamiento.
📖 Documentación completa: https://osm-mcp.ni-c.de
¿Por qué otro servidor MCP para OSM?
Rutas correctas a pie/en bicicleta. Los servidores de demostración públicos de OSRM ignoran el segmento de perfil dentro de la ruta URL de OSRM y siempre devuelven rutas en coche a menos que se utilicen los prefijos de ruta
routed-foot/routed-bike/routed-carde FOSSGIS. La mayoría de los servidores MCP de OSM existentes se equivocan en esto y devuelven silenciosamente tiempos de conducción para consultas a pie. Este servidor utiliza los prefijos y su prueba de humo en vivo afirma que las rutas a pie son mucho más lentas que las rutas en coche.Cumplimiento normativo por construcción. Limitación de velocidad por servicio (Nominatim y OSRM: 1 solicitud/segundo), un User-Agent identificativo en cada solicitud (requerido por la política de uso de Nominatim), almacenamiento en caché de respuestas, concurrencia limitada de Overpass (2 ranuras) y conmutación por error automática a un espejo de Overpass en caso de 429/5xx.
Soporte de Photon. Geocodificación opcional tolerante a errores tipográficos mediante Photon de komoot, diseñado para uso interactivo — una mejor opción para búsquedas impulsadas por LLM que golpear a Nominatim repetidamente.
Related MCP server: Geo MCP Worker
Requisitos
Node.js ≥ 22
Acceso a Internet a los servicios públicos de OpenStreetMap (ver tabla a continuación)
Configuración
Todas las variables son opcionales: el servidor funciona sin configuración adicional.
Variable | Valor por defecto | Descripción |
|
| User-Agent enviado a cada servicio. Nominatim requiere uno real e identificativo. |
|
| Geocodificación / geocodificación inversa |
|
| Geocodificación tolerante a errores tipográficos |
|
| Enrutamiento, matrices, optimización de viajes. Debe servir los prefijos de ruta |
|
| Puntos finales de Overpass separados por comas, probados en orden en caso de 429/5xx |
|
| Isócronas |
| – | Clave OpenRouteService opcional (secreto). Cuando se establece, las rutas, matrices e isócronas usan ORS en lugar de OSRM/Valhalla. Nivel gratuito: 2000 direcciones/día, 40/minuto. |
|
| Punto final de OpenRouteService |
|
| Segundos durante los cuales las respuestas idénticas de upstream se sirven desde la caché en memoria ( |
Instalar
claude mcp add osm -- npx -y osm-mcpClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"osm": {
"command": "npx",
"args": ["-y", "osm-mcp"]
}
}
}Codex (~/.codex/config.toml):
[mcp_servers.osm]
command = "npx"
args = ["-y", "osm-mcp"]Contenedor (multi-arquitectura, con SBOM y procedencia de compilación):
docker run -i --rm ghcr.io/ni-c/osm-mcp-i es obligatorio: el protocolo se ejecuta a través de stdin y stdout. No hay ningún puerto que
publicar. Hay más recetas para clientes en la
guía de clientes.
Herramientas
Herramienta | Descripción |
| Nombre de lugar/dirección → coordenadas (Nominatim o Photon) |
| Coordenadas → dirección más cercana |
| Distancia y duración entre 2+ puntos de paso, |
| Tiempo/distancia de viaje desde cada origen hasta cada destino en una sola llamada |
| Mejor orden de visita para un conjunto de paradas (viajante de comercio, viaje OSRM) |
| Área alcanzable dentro de un presupuesto de tiempo o distancia (Valhalla, u ORS con clave) |
| POI alrededor de una ubicación por categoría o etiqueta OSM sin procesar, ordenados por distancia (Overpass) |
| Registro OSM completo de un elemento: horario de apertura, sitio web, teléfono, … |
| Lugar de encuentro justo para 2–8 personas (tiempos de viaje equilibrados) |
| Distancia de círculo máximo, calculada sin conexión |
| Enlaces de marcador / direcciones de openstreetmap.org, calculados sin conexión |
Cada entrada de lugar acepta un nombre/dirección (geocodificado automáticamente) o
coordenadas literales como "lat,lon".
Políticas de uso y atribución
Este servidor se comunica con la infraestructura comunitaria compartida. Aplica los límites publicados del lado del cliente, pero el operador solicita a los usuarios que mantengan el uso general ligero y no comercial:
Datos: © colaboradores de OpenStreetMap, bajo licencia ODbL 1.0.
Nominatim: máximo 1 solicitud/segundo, User-Agent identificativo obligatorio, resultados en caché (política).
OSRM / Valhalla (FOSSGIS): uso razonable y no comercial; máximo 1 solicitud/segundo (acerca de).
Overpass: ~2 ranuras concurrentes por IP, <10 000 consultas/día (wiki).
Photon: uso justo (photon.komoot.io).
Para uso intensivo o comercial, aloje usted mismo los servicios y apunte las
variables *_BASE_URL a sus propias instancias.
Seguridad
Todas las herramientas son de solo lectura; el servidor nunca escribe en OpenStreetMap.
No se requieren credenciales; la
ORS_API_KEYopcional se elimina del entorno del proceso después de cargarla y se redacta de los mensajes de error.El contenido proveniente de OSM (nombres, direcciones, etiquetas) se marca como datos no confiables en los resultados de las herramientas para que el modelo lo trate como datos, no como instrucciones.
Los cuerpos de error de upstream se truncan y las páginas de error HTML se eliminan antes de que lleguen al contexto del modelo.
Las redirecciones nunca se siguen; todas las solicitudes tienen tiempo de espera.
Desarrollo
npm install
npm run lint # eslint + prettier
npm test # unit tests (all upstream APIs mocked)
npm run test:coverage
npm run build
npm run smoke # opt-in LIVE test against the real public servicesPublicación de versiones
Impulsado por etiquetas, sin paso de publicación manual:
Mueva las entradas
[Unreleased]a una nueva sección## [x.y.z] - YYYY-MM-DDenCHANGELOG.mdy actualicepackage.json.npm run lint && npm run build && npm run test:coverage.Confirme, luego una etiqueta anotada y firmada:
git tag -s vx.y.z -m "vx.y.z".git push origin main vx.y.z.
release.yml ejecuta entonces las pruebas, publica en npm con procedencia a través de Trusted Publishing
(sin token secreto involucrado), crea el lanzamiento de GitHub a partir de la sección
CHANGELOG y publica en el
registro MCP como
io.github.ni-c/osm-mcp. ci.yml envía la imagen multi-arquitectura a GHCR con la misma
etiqueta.
Si el paso del registro falla, arréglelo en main y ejecute el flujo de trabajo
Publish to MCP Registry — no vuelva a ejecutar el trabajo de etiqueta, ya que
verificaría el árbol antiguo.
Licencia
Maintenance
Related MCP Servers
- AlicenseBqualityDmaintenanceA comprehensive MCP server providing 30 tools for geocoding, routing, and OpenStreetMap data analysis. It enables AI assistants to search for locations, calculate travel routes, and perform quality assurance checks on map data.303MIT
- Alicense-qualityBmaintenanceFree geospatial MCP server for AI agents, providing geocoding, reverse geocoding, POI search, and route planning using OpenStreetMap data via Nominatim, Overpass, and OSRM.1GPL 3.0
- Flicense-qualityAmaintenanceAn MCP server providing geocoding, routing, isochrones, and POI-by-proximity search through self-hosted OpenStreetMap backends.
- Alicense-qualityAmaintenanceMCP server for geocoding, reverse geocoding, place/POI search, and distance calculation using OpenStreetMap Nominatim, with no API key required.183MIT
Related MCP Connectors
MCP server for Japan geodata: cadastral lot numbers (chiban) and reverse geocoding, for AI agents.
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
AI marketplace — flights, tours, activities, transport & more via MCP. No auth required.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ni-c/osm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server