MCP server for routing, distance matrix, and isochrone computation using self-hosted Valhalla (OpenStreetMap-based routing engine)
Server has 5 tools with explicit registrations and schemas. Naming is verb-forward (get_*, compare_*, export_*), which is good. However, descriptions lack LLM-optimization guidance (e.g., 'when to use' and 'what happens next'). Parameter descriptions are present but minimal (10-30 chars). Output schemas are not documented, tools return free-text strings rather than structured objects. Error handling is basic (connection errors, HTTP errors) but lacks recovery guidance. No tool annotations (readOnlyHint, destructiveHint). The export_route_gpx tool is incomplete in the provided source (docstring cut off), preventing full assessment.
Computes the same trip across several costing profiles in a single call, reporting progress as each profile finishes. Faster than calling get_route once per profile, since it's one tool call instead of several round trips. origin_lat, origin_lon — latitude and longitude of the starting point. dest_lat, dest_lon — latitude and longitude of the destination.
Exports a previously computed route (see get_route's route_id) as a GPX file, written only into the server's configured export directory. route_id — the route_id returned by get_route. filename — desired file name (no path separators); ".gpx" is appended if missing.
Computes the area reachable within a given travel time from a point, using Valhalla. Useful for questions like "what's within 15 minutes drive of here?". lat, lon — latitude and longitude of the starting point. minutes — travel time budget in minutes. costing — profile: auto, bicycle, pedestrian, truck, motor_scooter, motorcycle.
Computes a time/distance matrix between multiple origins and destinations using Valhalla. Useful for comparing many candidate points at once (e.g., "which of these 3 stops is closest?"). origin_lats, origin_lons — parallel lists of latitude/longitude for each origin point. dest_lats, dest_lons — parallel lists of latitude/longitude for each destination point. costing — profile: auto, bicycle, pedestrian, truck, motor_scooter, motorcycle.
Output schemas not documented. All tools return free-text strings instead of structured JSON objects. LLMs cannot parse results reliably or chain downstream tool calls.
Parameter descriptions are too brief (10-30 chars). E.g., 'latitude of the starting point' lacks context on valid ranges, precision, or coordinate system (WGS84 assumed but not stated).
No tool annotations. Tools lack readOnlyHint (all are read-only except export_route_gpx) and destructiveHint (export_route_gpx writes files). LLMs cannot infer safety properties.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2025-06-18+ | v2 |
Computes a route between two points using a self-hosted Valhalla (OpenStreetMap-based routing engine). origin_lat, origin_lon — latitude and longitude of the starting point. dest_lat, dest_lon — latitude and longitude of the destination. costing — profile: auto, bicycle, pedestrian, truck, motor_scooter, motorcycle.
Error handling lacks recovery guidance. Errors like 'Could not connect to Valhalla' and 'no route for this profile' do not suggest next steps (e.g., 'Check VALHALLA_URL env var' or 'Try a different costing profile').
export_route_gpx docstring is incomplete in source (cut off). Cannot verify full description, parameter validation, or error handling for this write operation.