Model Context Protocol server for Google Places API - search and link places to journal entries
The server defines 6 tools for Google Places / location services. Naming follows verb_noun conventions consistently (search_places, get_place_details, get_weather, get_elevation, geocode_address, get_directions). However, critical gaps exist: tool descriptions are present but brief and lack dependency hints or prerequisite guidance. More critically, parameter descriptions are incomplete or missing in many cases, and output schemas are NOT documented anywhere in the provided code. The schema provided for tool inputs is well-formed with proper JSON Schema types and required fields, but there is no documentation of what each tool returns. Error handling is minimal, the code catches generic errors and wraps them in McpError, but does not provide recovery guidance or categorize errors (retryable vs user-fixable). The tool composition is sound (each tool has one job), and naming is clear, but the lack of output documentation and weak error messages are significant gaps for production use.
Convert a human-readable address or place name to lat/lng coordinates. Use before calling get_weather or get_directions when you have an address instead of coordinates.
Get directions and travel time between two locations. Supports driving, walking, transit, and bicycling modes. Use for commute time estimation during daily planning.
Get elevation data for one or more locations.
Get detailed information about a specific place using its Google Place ID.
Get current weather conditions for a location.
Search for places using text query to get suggestions with Google Place IDs.
Output schemas are not documented for any tool. LLMs cannot plan downstream calls or extract required fields from responses without knowing what the tool returns.
Error handling is generic. When a tool fails, the code wraps the error in McpError but does not categorize it (retryable vs user-fixable vs fatal) or provide recovery guidance. E.g., 'API key error' should suggest checking credentials; 'not found' should suggest alternative queries or lookup tools.
Dependency hints are sparse. Only geocode_address and get_directions hint at prerequisites or related tools. search_places and get_place_details descriptions do not explain that search_places must be called first to get a place_id, or that geocode_address is needed if the user has an address but not coordinates.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 73 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Some parameter descriptions lack format/precision/range hints. E.g., 'place_id' parameter in get_place_details does not specify format (is it a 27-character string? a UUID?). 'departure_time' in get_directions says 'Unix timestamp string' but does not clarify if it is seconds or milliseconds since epoch.
Tool descriptions are generic and do not differentiate similar tools well. search_places, get_place_details, and geocode_address all operate on location data but descriptions do not make the distinction clear ('Why call search_places vs geocode_address?').