google-maps-mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited google-maps-mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill teaches you how to use the google-maps-mcp MCP server effectively when it's available in the session. The server exposes six Google Maps tools that hit the real Google Maps Platform APIs (Places API New, Directions API, Geocoding API).
Use the google-maps-mcp tools whenever the user's request involves real-world geographic data:
Do NOT use these tools for: general geography trivia Claude already knows (capitals, populations), historical location questions, or non-location business questions.
| User asks | Tool | Why |
|---|---|---|
| "find ramen in Tokyo" | search_places | Text search, business type + location |
| "what are the reviews of the first one?" | get_place_details | Need reviews + amenities for a specific place |
| "cafes within 500m of the Eiffel Tower" | geocode → search_nearby | No coordinates yet, need to geocode first |
| "cafes within 500m of 48.858,2.294" | search_nearby | Already have coordinates |
| "how do I walk from A to B?" | get_directions | Origin + destination + mode |
| "what are the coordinates of X?" | geocode | Address/landmark → lat/lng |
| "what's at 37.8199, -122.4783?" | reverse_geocode | Coordinates → address |
Text search. Input: query (str, required), max_results (int, default 10, max 20). Returns: query, total_results, places[] with name, address, phone, website, rating, hours, location, google_maps_url.
Rich details for a known place. Input: place_id (str, required — get this from a prior search_places result). Returns: everything from search_places plus top 5 reviews, amenities (delivery, dine_in, takeout, outdoor_seating, reservable, live_music), editorial_summary.
Radius search around coordinates. Input: latitude (float), longitude (float), radius_meters (int, default 1000, max 50000), place_type (str optional — "restaurant", "cafe", "bar", "hotel", "gas_station", "pharmacy", etc.), max_results (int). Returns: center, radius_meters, place_type, places[] with same fields as search_places.
Step-by-step route. Input: origin (str — address, landmark, or "lat,lng"), destination (str, same), mode (str — "driving" default, "walking", "bicycling", "transit"). Returns: routes[] with legs[] containing distance, duration, duration_in_traffic (driving only), and steps[].
Address → coordinates. Input: address (str). Returns: formatted_address, latitude, longitude, place_id.
Coordinates → address. Input: latitude (float), longitude (float). Returns: formatted_address, place_id, address_components[].
The user names a landmark but doesn't give coordinates. Two-step:
geocode("Eiffel Tower, Paris") → get latitude, longitudesearch_nearby(latitude=..., longitude=..., radius_meters=500, place_type="cafe")After search_places, the user wants deeper info on one item:
place_id from the first element of places[]get_place_details(place_id=...)Both strings can go directly to directions:
get_directions(origin="Hotel Name, City", destination="Museum Name, City", mode="walking")routes[0].legs[0]If the user provides coordinates (lat,lng or context has them):
search_nearby(latitude=..., longitude=..., radius_meters=1000, place_type="restaurant", max_results=5)get_place_details(place_id=...) for reviewsDo:
google_maps_url field)Don't:
BILLING_DISABLED / 403 ForbiddenThe Google Cloud project backing the API key doesn't have billing enabled. Tell the user:
"The Google Maps API returned a billing error — your API key's GCP project needs billing enabled. Go to https://console.cloud.google.com/billing, link a card (the $200/month free tier covers all normal use), wait 2-3 minutes for propagation, and try again."
places listThe search returned nothing. Don't pretend it returned something. Options:
search_nearbyNo location found for this addressGeocoding failed on an ambiguous input. Ask for more context (city? country?) or suggest a specific landmark.
The underlying httpx request failed. Surface the error, don't retry silently — let the user decide.
geocode first.search_nearby. Larger searches → use search_places with a text query.opening_hours populated. Handle None.src/google_maps_mcp/client.py and src/google_maps_mcp/tools.py.README.md in the repo root.examples/openai_agents_demo.py.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.