Google Maps

Places, addresses and routes from Google Maps

Verified: Checked by the catalog team: official server with OAuth or docs and an owner contactOnlineAPI key requiredGlobalFree tierRead-only

What it can do

  • Find a place or business
  • Geocode an address
  • Route and travel-time estimate

What data it sees

Your queries go to Google Maps Platform; billed against your key.

Do you need an account

An API key from the service settings is required

Official Google Maps Platform server. Requires a Google Cloud API key passed as a header.

How to connect

How to connect Google Maps to Claude

The server address to paste into Claude settings:

https://mapstools.googleapis.com/mcp

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect Google Maps to ChatGPT

The server address to paste into ChatGPT settings:

https://mapstools.googleapis.com/mcp

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect Google Maps to Cursor

The server address to paste into Cursor settings:

https://mapstools.googleapis.com/mcp

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (5)

Raw names from tools/list. Only developers need these.

search_placesCall this tool when the user's request is to find places, businesses, addresses, locations, points of interest, or any other Google Maps related search. **Input Requirements (CRITICAL):** 1. **`text_query` (string - MANDATORY):** The primary search query. This must clearly define what the user is looking for. * **Examples:** `'restaurants in New York'`, `'coffee shops near Golden Gate Park'`, `'SF MoMA'`, `'1600 Amphitheatre Pkwy, Mountain View, CA, USA'`, `'pets friendly parks in Manhattan, New York'`, `'date night restaurants in Chicago'`, `'accessible public libraries in Los Angeles'`. * **For specific place details:** Include the requested attribute (e.g., `'Google Store Mountain View opening hours'`, `'SF MoMa phone number'`, `'Shoreline Park Mountain View address'`). 2. **`location_bias` (object - OPTIONAL):** Use this to prioritize results near a specific geographic area. * **Format:** `{"location_bias": {"circle": {"center": {"latitude": [value], "longitude": [value]}, "radius_meters": [value (optional)]}}}` * **Usage:** * **To bias to a 5km radius:** `{"location_bias": {"circle": {"center": {"latitude": 34.052235, "longitude": -118.243683}, "radius_meters": 5000}}}` * **To bias strongly to the center point:** `{"location_bias": {"circle": {"center": {"latitude": 34.052235, "longitude": -118.243683}}}}` (omitting `radius_meters`). 3. **`language_code` (string - OPTIONAL):** The language to show the search results summary in. * **Format:** A two-letter language code (ISO 639-1), optionally followed by an underscore and a two-letter country code (ISO 3166-1 alpha-2), e.g., `en`, `ja`, `en_US`, `zh_CN`, `es_MX`. If the language code is not provided, the results will be in English. 4. **`region_code` (string - OPTIONAL):** The Unicode CLDR region code of the user. This parameter is used to display the place details, like region-specific place name, if available. The parameter canaffect results based on
lookup_weatherRetrieves comprehensive weather data including current conditions, hourly, and daily forecasts. **Specific Data Available:** Temperature (Current, Feels Like, Max/Min, Heat Index), Wind (Speed, Gusts, Direction), Celestial Events (Sunrise/Sunset, Moon Phase), Precipitation (Type, Probability, Quantity/QPF), Atmospheric Conditions (UV Index, Humidity, Cloud Cover, Thunderstorm Probability), and Geocoded Location Address. **Location & Location Rules (CRITICAL):** The location for which weather data is requested is specified using the `location` field. This field is a 'oneof' structure, meaning you MUST provide a value for ONLY ONE of the three location sub-fields below to ensure an accurate weather data lookup. 1. Geographic Coordinates (lat_lng) * Use it when you are provided with exact lat/lng coordinates. * Example: {"location": {"lat_lng": {"latitude": 34.0522, "longitude": -118.2437}}} // Los Angeles 2. Place ID (place_id) * An unambiguous string identifier (Google Maps Place ID). * The place_id can be fetched from the search_places tool. * Example: {"location": {"place_id": "ChIJLU7jZClu5kcR4PcOOO6p3I0"}} // Eiffel Tower 3. Address String (address) * A free-form string that requires specificity for geocoding. * City & Region: Always include region/country (e.g., "London, UK", not "London"). * Street Address: Provide the full address (e.g., "1600 Pennsylvania Ave NW, Washington, DC"). * Postal/Zip Codes: MUST be accompanied by a country name (e.g., "90210, USA", NOT "90210"). * Example: {"location": {"address": "1600 Pennsylvania Ave NW, Washington, DC"}} **Usage Modes:** * **Current Weather:** Provide `location` only. Do not specify `date` and `hour`. * **Hourly Forecast:** Provide `location`, `date`, and `hour` (0-23). Use for specific times (e.g., "at 5 PM") or terms like "next few hours" or "later today". If the user specifies minute, round down to the nearest
compute_routesComputes a travel route between a specified origin and destination. **Supported Travel Modes:** DRIVE (default), WALK. **Input Requirements (CRITICAL):** Requires both **origin** and **destination**. Each must be provided using one of the following methods, nested within its respective field: * **address:** (string, e.g., 'Eiffel Tower, Paris'). Note: The more granular or specific the input address is, the better the results will be. * **lat_lng:** (object, {"latitude": number, "longitude": number}) * **place_id:** (string, e.g., 'ChIJOwE_Id1w5EAR4Q27FkL6T_0') Note: This id can be obtained from the search_places tool. Any combination of input types is allowed (e.g., origin by address, destination by lat_lng). If either the origin or destination is missing, **you MUST ask the user for clarification** before attempting to call the tool. **Example Tool Call:** {"origin":{"address":"Eiffel Tower"},"destination":{"place_id":"ChIJt_5xIthw5EARoJ71mGq7t74"},"travel_mode":"DRIVE"} * The grounded output must be attributed to the source using the information from the `attribution` field when available.
resolve_namesResolves a batch list of specific location queries (landmark names or exact addresses) into canonical Google Maps Place IDs. **Input Requirements (CRITICAL):** 1. **`queries` (array of objects - MANDATORY):** A list of location queries to resolve. You may specify up to 20 queries. * **Each query object must have:** * **`text` (string - MANDATORY):** The text query representing a specific place name or address to resolve. * **Examples:** `'Googleplex, Mountain View, CA'`, `'1600 Amphitheatre Pkwy, Mountain View, CA'`, `'Eiffel Tower, Paris'`. 2. **`location_bias` (object - OPTIONAL):** Use this to prioritize results near a specific geographic area. * **Format:** `{"viewport": {"low": {"latitude": [value], "longitude": [value]}, "high": {"latitude": [value], "longitude": [value]}}}` 3. **`region_code` (string - OPTIONAL):** The Unicode CLDR region code (two-letter country code, e.g., `US`, `CA`) of the user to bias the results. **Instructions for Tool Call:** * Specificity (CRITICAL): Queries must represent a specific place name or address. General searches like `'restaurants'` or chain names like `'Starbucks'` are not supported. * Do NOT call this tool if the downstream tools you plan to invoke already accept raw address or place name strings directly. **Error Handling (CRITICAL):** * This is a batch processing tool. A request might return "mixed results" (e.g. some queries resolve successfully while others fail). * The output list of `results` is guaranteed to map 1:1 with the input `queries` indices. A failed query will result in an empty `Result` message (no `entity` is set) at its corresponding index in the `results` list. * You **MUST** check the `failed_requests` map field in the response to identify which specific query index failed. The key of `failed_requests` represents the 0-based index of the failed query in the request. Do not assume the entire batch call failed because of a partial failure.
resolve_maps_urlsResolves a list of Google Maps URLs into canonical Google Maps Place IDs. **When to call this tool (CRITICAL):** * Use this tool when the user provides one or more Google Maps sharing links or URLs (e.g. 'https://maps.app.goo.gl/...', 'https://www.google.com/maps/place/...', or 'https://maps.google.com/...') and you need to extract the underlying canonical Place IDs. * You can specify up to 20 URLs to resolve in a single batch request. **Input Requirements (CRITICAL):** * **`urls` (array of strings - MANDATORY):** The list of Google Maps URLs to resolve. Each URL must be a valid, single-place Google Maps URL. **Error Handling (CRITICAL):** * This is a batch processing tool. A request might return "mixed results" (e.g. some URLs resolve successfully while others fail). * The output list of `entities` is guaranteed to map 1:1 with the input `urls` indices. A failed URL resolution will result in an empty `Entity` message (no fields are set) at its corresponding index in the `entities` list. * You **MUST** check the `failed_requests` map field in the response to identify which specific URL index failed. The key of `failed_requests` represents the 0-based index of the failed URL in the request. Do not assume the entire batch call failed because of a partial failure.