SuperAPI AI Directory

google-maps-mcp

Remote MCP server for Google Maps: place search and place details, reviews, photos, posts and contributor history, as JSON, with no Google Cloud project to set up.

Open website

About this tool

Purpose

This is a Model Context Protocol (MCP) server hosted by HasData that provides six read-only Google Maps tools to Claude, Cursor, Windsurf, and any other MCP client. It enables AI clients to search for places, read the full information of a single place, retrieve its reviews, photos, and posts, and trace along the history of a single reviewer, all returned as structured JSON, without creating a Google Cloud project or enabling billing.

Key capabilities

The server exposes six read-only tools:

Search Google Maps (hasdata_google_maps_search_performMapSearch): returns place results for a query term according to Google Maps ranking, with each result carrying position, title, placeId, dataId, address, gpsCoordinates, rating, reviews, type, types, price, website, thumbnail, openState, workingHours, serviceOptions, and the menu link when Google displays a menu. Location information goes in the ll parameter rather than the query term, and ll contains the map center and zoom level; writing only "coffee" returns an arbitrary location determined by Google, and the zoom number determines the coverage of the results.

Get place details (hasdata_google_maps_place_getPlaceDetails): returns the complete record of a single place by placeId, including the same fields as in search results, plus an images array.

Get place reviews (hasdata_google_maps_reviews_getMapReviews): returns a paginated stream of reviews for a place, including placeInfo, a topics array, a reviews array, and pagination. Each review carries reviewId, rating, snippet, date, isoDate, link, images, a user object, and response when the owner has replied. topics are Google's clusters of what the reviews mention, with keyword and mentions counts; passing the id of a topic as topicId reads only the reviews that mention that topic. Each review's user carries contributorId, which is the input to the contributor tool, so "who wrote this review" can move to "all the reviews he has written" in a single call.

Get a contributor's reviews (hasdata_google_maps_contributor_reviews_getMapReviews): returns every review a person has written across all the places they have reviewed. The response contains a contributor object (name, level, points, and contribution breakdown) and a reviews array, and each review includes its own placeInfo, so you know which place the review is for without a second query. This tool reads a person's public review history and must be used in compliance with Google's terms and applicable law.

Get place photos (hasdata_google_maps_photos_getMapPhotos): returns a place's photo stream, including a categories array (All, Latest, Videos, Menu, and place-specific categories), a photos array (each with image and thumbnail URLs), and pagination.

Get place posts (hasdata_google_maps_posts_getMapPosts): returns the business's own posts and updates on its Google listing, including a posts array. This tool does not paginate; reviews and photos accept nextPageToken, but it does not, and returns only what the listing displays. Most places do not publish posts, so an empty posts array is common.

How to use it

This is a remote MCP server based on streamable HTTP that supports custom request headers. It requires an MCP client that speaks streamable HTTP and supports custom request headers, as well as a HasData API key (which can be created for free in the dashboard, with no credit card required). The simplest way to connect is to use a URL and a request header; there is no need to run a container, and no Google Cloud project or API key is needed. Clients that only support stdio can use @hasdata/google-maps-mcp (npm) or the hasdata-google-maps-mcp (PyPI) launcher.

The server URL is the same for all clients. Claude Desktop only loads local (stdio) servers from the configuration file, so connect to the remote server through the stdio launcher; the @hasdata/google-maps-mcp package is that launcher and reads the key from an environment variable. For Python environments, a PyPI package is available, run by uvx, with no manual installation required. Clients that support OAuth can add the URL as a connector and sign in, without putting the key in a configuration file. Clients such as Cursor, Windsurf, VS Code, and Gemini are configured according to their respective documentation's remote server format.

Search results come with placeId and dataId, so the details, reviews, photos, and posts calls need no separate parsing step; reviews come with the author's contributorId, letting you jump to all of that person's history in one call. The apis parameter lets you specify the list of exposed tools: ?apis=google_maps exposes only these six tools, ?apis=google_maps,google_serp also adds Google Search, and if the parameter is omitted, all 57 tools currently exposed by HasData are returned.

The server also provides 2 prompts and 4 resources; each resource corresponds to a parameter whose value is a fixed list, the URI format is hasdata://google_maps/<parameter>, and reading consumes no credits. The prompts and resource lists can be read without an API key.

Regarding error handling, tool calls almost never return HTTP error codes to the client; the MCP layer returns 200 and puts the failure in the result, with isError set to true and the reason given as text. An invalid key appears as 401 Unauthorized in the tool output, not as a connection failure. The only real HTTP error is a missing key; authorization happens before any tool, and the connection itself fails with 401. Parameters that do not match the schema are rejected before the request is sent, returning MCP error -32602: Input validation error and indicating the field name, with no scraping and no billing. Reviews, photos, and posts calls require passing placeId or dataId; passing neither returns 422 and indicates both fields at once. A place id that cannot be resolved returns 400 Bad Request, with requestMetadata.status as error. Empty posts are real data; the call succeeds and status is ok.

Use cases

Suitable for scenarios that need to let AI clients read public Google Maps data: place search and information organization, review and topic analysis, reviewer credibility and review network research, place photos and business posts retrieval, etc. Search, place details, reviews, reviewer reviews, and photos each consume 10 credits per successful call, and posts are likewise 10 credits; response size does not affect the price. The free tier offers 1,000 credits per month with no credit card required, equivalent to about 100 calls at the 10-credit rate, resetting with the billing cycle. Paid plans start at $59 per month, including 200,000 credits. The plan also determines concurrency: 1 request at a time on the free tier, 5 for Startup, 15 for Basic, and Growth ranges from 50 to 500. Concurrency is the only rate limit; there is no separate per-minute request cap. Pagination consumes one call each time.

Limitations

The server does not do route planning, geocoding, address validation, or distance matrices, and it has no write operations; it only reads what Maps displays to visitors. If you need routes or to convert addresses to coordinates, use Google Maps Platform; if you need the full review stream beyond the first few, a single reviewer's history across all the places they have reviewed, a photo stream, or business posts, the Platform does not provide them but this server can. It reads a person's public review history, and use must comply with Google's terms and applicable law.