LabscoMCP early access ↗
aatakansalarMCP SERVER

Valhalla MCP Server

Routes and travel-time polygons from an OpenStreetMap routing engine, returned as GeoJSON.

by aatakansalar ↗Travel Booking, Transit & NavigationCommunity

LABSCO SUMMARY

Isochrones are the part you cannot get from a directions API.

A route between two points is available everywhere; 'everywhere within 15 minutes on a bicycle' is the question that usually means writing code. Here it is one call returning a polygon. Two practical notes: routing quality is entirely a property of the Valhalla instance and the OSM data behind it, and the demo URL is the one with the 1 in it — the obvious hostname returns a web interface.

What it is

A client for Valhalla, the OpenStreetMap routing engine. It asks Valhalla for a route between two points or for an isochrone — the area reachable within a given number of minutes — and returns GeoJSON with the geometry and summary statistics attached.

What you get

  • The route tool takes an origin and destination as lat/lon, a mode, alternatives and units, and returns a GeoJSON LineString with distance_km, duration_seconds and duration_minutes
  • The isochrone tool takes an origin, minutes and mode, and returns the polygon of everywhere reachable in that time
  • Five transport modes — auto, bicycle, pedestrian, taxi, bus
  • A health resource reporting the routing server's status and version
  • A tile resource serving vector tiles for client-side rendering

Requirements

Node.js 18+ and a Valhalla server to talk to — this server does not do the routing itself. VALHALLA_BASE_URL points at it and defaults to http://localhost:8002; the public demo instance is https://valhalla1.openstreetmap.de (note the 1 — the plain hostname serves a web page, not the API). For a local engine, ./start-mcp.sh builds the server and brings up Valhalla with Monaco OSM data through Docker Compose. Published as valhalla-mcp-server version 0.1.0; register it as node against dist/index.js with cwd set to the checkout. DEBUG, LOG_LEVEL, MCP_SERVER_NAME and MCP_SERVER_VERSION are the other environment variables.

Setup effort

Build from source — clone the repository and build it, then point your client at the built dist/index.js