Model Context Protocol server for Valhalla routing engine
The server defines two tools with reasonable structure but has moderate gaps in description quality and parameter documentation. Both tools have schemas with proper type definitions and constraints (lat/lon ranges, enums for modes). However, descriptions lack LLM-optimized guidance on WHEN to use each tool vs alternatives, and several parameters lack usage context. The route tool has a well-constrained schema; the isochrone tool's schema is similarly sound. Error handling is present but generic. No tool annotations (readOnlyHint/destructiveHint) despite both being safe read-only operations. Output schemas are not documented in the visible code.
Generate an isochrone polygon showing areas reachable within a specified travel time from a given point.
Calculate a route between two points using Valhalla routing engine. Returns GeoJSON LineString with summary statistics.
No output schema documentation. Both tools claim to return GeoJSON but LLM context does not show what fields, coordinate order, or metadata is included. LLMs cannot plan downstream processing without knowing output structure.
Descriptions lack WHEN-to-use context. Both tools explain WHAT but not WHEN to call them or how they differ from alternatives. 'Calculate a route' is vague, route for fastest path? Scenic route? Wheelchair-accessible? 'Generate isochrone' doesn't explain use case: commute analysis? Service coverage? Guides omit dependency hints (e.g., 'Call route first to validate coordinates').
No tool annotations despite both being read-only operations. Code marks risk as READ_ONLY but schema lacks readOnlyHint annotation. This prevents clients from optimizing (e.g., caching, parallel execution without transaction concern).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 64 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Parameter descriptions are minimal. 'Travel mode' for 'mode' param is too brief. Does it affect travel time calculation? Route legality? Is 'taxi' different from 'auto'? No explanation of coordinate system (WGS84 assumed but not stated). 'Number of alternative routes' doesn't explain: are these ranked by time? Distance? Polyline similarity?
Error handling not visible in tool definitions. No examples of what happens if coordinates are unreachable, Valhalla service is down, or isochrone calculation fails. Code references handleError() utility but recovery guidance is not present in tool descriptions.