MCP server providing access to Google Maps APIs including geocoding, reverse geocoding, directions, distance matrix, and places search
Server has 6 tools with basic descriptions and input schemas visible in main.go. All tools are READ_ONLY and follow verb_noun naming (geocode, reverse_geocode, directions, distance_matrix, search_places, get_usage). Descriptions are present but brief (10-60 chars), below the 50-200 char LLM-optimized baseline. Input schemas use Go struct tags with jsonschema annotations, providing type info. However, parameter descriptions are minimal, output schemas are not documented, and error handling lacks recovery guidance. No tool annotations (readOnlyHint, etc.) despite all being read-only. Missing pagination for search_places despite potentially returning many results.
Get directions between two locations with distance and duration information
Calculate distances and durations between multiple origins and destinations
Convert an address to latitude and longitude coordinates
Get current month's API usage and cost estimate
Convert latitude and longitude coordinates to an address
Search for places by text query
Tool descriptions are too brief (10-60 chars vs. 50-200 char baseline). LLMs cannot determine when/why to select tools. E.g., 'Convert an address to latitude and longitude coordinates' lacks context on prerequisites, return format, or when to use vs. reverse_geocode.
No output schemas documented. LLMs cannot plan downstream calls or extract structured data. E.g., geocode returns formatted_address, lat, lng, place_id, but this is not declared in tool metadata.
search_places lacks pagination (limit, offset, next_cursor). Potentially returns many results, risking context window exhaustion. No documented result cap.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
Error handling returns raw API status strings ('Geocoding failed: ZERO_RESULTS') without recovery guidance. LLM cannot determine next action, should it retry, call a different tool, or ask the user?
No tool annotations despite all tools being read-only. Missing readOnlyHint metadata that would signal to agents these are safe to call without confirmation.