# Google Maps MCP

> Google Maps places: local search, place details, reviews, and turn-by-turn directions.

- name: ai.wondel/google-maps
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 87/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.wondel%2Fgoogle-maps
- tools: https://api.protogrid.dev/v1/servers/ai.wondel%2Fgoogle-maps/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "google-maps": {
      "type": "http",
      "url": "https://mcp.wondel.ai/google-maps/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 98
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-96% +updated-12d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 87/100 (good)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 3600000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 69 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: google_maps_reviews (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); google_local_search (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); google_maps_search (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 3,037 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 4, about 3,037 tokens to load them all
- tool set hash: f134ea0d5713f4c3bffdb5d0bad9b158
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.wondel/google-maps.svg)](https://protogrid.dev/servers/ai.wondel/google-maps)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.wondel.ai/google-maps/mcp (streamable-http, auth none, reachable true, uptime30d 0.95555556)

## Packages

_none_

## Tools (4)

- `google_local_search`: Search the Google Local pack via SerpAPI — the local business listings Google shows for a query. Returns local_results, each with title, rating, reviews, type, address, phone and the place identifiers (place_id / data_id / data_cid) that feed google_maps_reviews. Provide a query q and optionally a location (or a pre-encoded uule). Paginate with start (+20 per page).
- `google_maps_directions`: Get directions between two points via SerpAPI. Provide a start point (one of start_addr, start_coords 'lat,lon', or start_data_id) and an end point (one of end_addr, end_coords, or end_data_id) — the data_ids come from google_maps_search results. Returns the route(s) with distance, duration and step-by-step legs. Shape the route with travel_mode (driving/transit/walking/…), avoid, and time. Result shape: { source, fetchedAt, query, search_metadata, search_parameters, places_info: [{ address, data_id, gps_coordinates }], durations: [{ travel_mode, duration, formatted_duration }], directions: [...] } — the list key is `directions`. Each direction: { travel_mode, via, distance (meters), duration (seconds), formatted_distance, formatted_duration, typical_duration_range, extensions, trips: [{ travel_mode, title, distance, duration, formatted_distance, formatted_duration, details: [{ title, action, distance, duration }] }] } plus, for transit, start_time, end_time, arrive_around, cost, currency; a Flight entry has only { travel_mode, icon, flight }.
- `google_maps_reviews`: Fetch the reviews of a Google Maps place via SerpAPI. Provide exactly one of place_id, data_id or data_cid — all come from google_maps_search or google_local_search results. A digit-only id (the `place_id` that google_local_search returns is a Google CID) is accepted in any of the three fields and resolved to the Maps data_id automatically via one place lookup. Returns reviews (author, rating, text, date) plus the topics you can filter by. Paginate with next_page_token from the previous response.
- `google_maps_search`: Search Google Maps via SerpAPI. type=search (default) returns a list of places for a query q — paginate with start (+20 per page). type=place returns the full details of a single place identified by place_id or data_cid (both obtainable from a prior search result). Center the map with ll ('@lat,lon,zoomz') or lat/lon/z. The place_id / data_cid in results feed google_maps_reviews.
