> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chatbotplatform.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Maps MCP Server

> Geocoding, place search, directions, and comprehensive location services powered by Google Maps APIs.

## Summary

The Google Maps MCP server provides comprehensive location services including geocoding, place search, directions, and autocomplete. Perfect for building location-aware assistants, navigation bots, and local business finders.

## Authentication

This server requires a **Google Maps API key**. The key must have the following APIs enabled:

1. **Places API** (for place search, details, autocomplete, nearby search)
2. **Geocoding API** (for geocoding and reverse geocoding)
3. **Directions API** (for routing and navigation)

### Getting Your API Key

<Steps>
  <Step title="Go to Google Cloud Console">
    Visit [Google Cloud Console](https://console.cloud.google.com/)
  </Step>

  <Step title="Create or Select a Project">
    Create a new project or select an existing one
  </Step>

  <Step title="Enable Required APIs">
    Enable Places API, Geocoding API, and Directions API for your project
  </Step>

  <Step title="Create API Key">
    Go to "Credentials" and create an API key. Add appropriate restrictions (HTTP referrers or IP addresses) for security.
  </Step>

  <Step title="Use in Requests">
    Include the key in your request header:

    ```
    X-Google-Maps-Api-Key: YOUR_API_KEY
    ```
  </Step>
</Steps>

<Callout type="warning">
  **Important:** Secure your API key by restricting it to specific domains, IP addresses, or API endpoints in the Google Cloud Console.
</Callout>

## Use Cases

### Finding Nearby Restaurants

**User:** "Find Italian restaurants near 123 Main St, Seattle"

**Tool Calls:**

1. `geocode` - Convert "123 Main St, Seattle" to coordinates
2. `nearby-search` - Search for restaurants with type "italian\_restaurant" near those coordinates
3. `get-place-details` - Get full details for top results (hours, reviews, phone)

**Result:** List of Italian restaurants with ratings, hours, distance, and contact info

***

### Getting Directions with Traffic

**User:** "How do I get from my office to the airport? I need to leave now."

**Tool Calls:**

1. `get-directions` - Calculate route with `mode: "driving"` and `departure_time: "now"` for traffic estimates

**Result:** Turn-by-turn directions with current traffic conditions and estimated travel time

***

### Location Autocomplete

**User:** "I'm trying to remember the full address... it's something like '123 Mai'"

**Tool Calls:**

1. `autocomplete-places` - Get suggestions for "123 Mai" with `types: "address"`

**Result:** Complete address suggestions the user can select from

## Available Tools

### geocode

Convert an address or location name to geographic coordinates.

| Parameter    | Type   | Required | Description                                                                           |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------- |
| `address`    | string | Yes      | Street address, city, postal code, or landmark (e.g., "Eiffel Tower, Paris")          |
| `language`   | string | No       | Language code for results (default: "en"). Examples: "es", "fr", "de", "ja"           |
| `components` | string | No       | Component filter to bias results (e.g., "country:US" or "country:FR\|locality:Paris") |

**Returns:** Latitude/longitude coordinates, formatted address, place ID, and address components breakdown.

**Example:**

```
Input: "1600 Amphitheatre Parkway, Mountain View, CA"
Output: Coordinates (37.4224764, -122.0842499), place_id, formatted address
```

***

### reverse-geocode

Convert coordinates to a human-readable address.

| Parameter     | Type   | Required | Description                                                             |
| ------------- | ------ | -------- | ----------------------------------------------------------------------- |
| `latitude`    | number | Yes      | Latitude coordinate (-90 to 90)                                         |
| `longitude`   | number | Yes      | Longitude coordinate (-180 to 180)                                      |
| `language`    | string | No       | Language code for results (default: "en")                               |
| `result_type` | string | No       | Filter by type: "street\_address", "route", "locality", "country", etc. |

**Returns:** Multiple detail levels from specific street address to country.

**Example:**

```
Input: latitude: 48.8584, longitude: 2.2945
Output: "Avenue Anatole France, 75007 Paris, France" + neighborhood, city, country
```

***

### search-places

Search for places using natural language queries.

| Parameter  | Type    | Required | Description                                                                |
| ---------- | ------- | -------- | -------------------------------------------------------------------------- |
| `query`    | string  | Yes      | Search query (e.g., "coffee shops in Seattle", "hotels near Central Park") |
| `location` | string  | No       | Bias results near this location as "latitude,longitude"                    |
| `radius`   | integer | No       | Search radius in meters from location (1-50000, default: 5000)             |
| `type`     | string  | No       | Filter by place type (restaurant, cafe, hotel, etc.)                       |
| `language` | string  | No       | Language code (default: "en")                                              |
| `limit`    | integer | No       | Max results to return (1-20, default: 10)                                  |

**Returns:** List of places with names, addresses, ratings, open status, and place IDs.

**Common Place Types:**

* Food: `restaurant`, `cafe`, `bar`, `bakery`, `meal_takeaway`
* Lodging: `hotel`, `lodging`, `motel`
* Services: `gas_station`, `parking`, `car_repair`, `hospital`, `pharmacy`, `bank`, `atm`
* Activities: `gym`, `park`, `zoo`, `museum`, `movie_theater`
* Shopping: `store`, `supermarket`, `shopping_mall`
* Transit: `airport`, `train_station`, `bus_station`, `subway_station`

***

### get-place-details

Get comprehensive information about a specific place.

| Parameter  | Type   | Required | Description                                                                 |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `place_id` | string | Yes      | Google place\_id from search results (e.g., "ChIJN1t\_tDeuEmsRUsoyG83frY4") |
| `language` | string | No       | Language code (default: "en")                                               |

**Returns:** Full place details including:

* Name and business status
* Complete address and coordinates
* Rating, review count, and sample reviews
* Contact info (phone, website)
* Opening hours with current status
* Price level

**Example:**

```
Input: place_id from previous search
Output: Complete business information with hours, reviews, and contact details
```

***

### nearby-search

Find places of a specific type near coordinates.

| Parameter    | Type    | Required | Description                                        |
| ------------ | ------- | -------- | -------------------------------------------------- |
| `latitude`   | number  | Yes      | Center latitude (-90 to 90)                        |
| `longitude`  | number  | Yes      | Center longitude (-180 to 180)                     |
| `type`       | string  | No       | Place type (restaurant, cafe, gas\_station, etc.)  |
| `keyword`    | string  | No       | Keyword filter (e.g., "pizza", "sushi", "vegan")   |
| `radius`     | integer | No       | Search radius in meters (1-50000, default: 1500)   |
| `open_now`   | boolean | No       | Only return currently open places (default: false) |
| `min_rating` | number  | No       | Minimum rating filter (1.0-5.0, default: 0)        |
| `language`   | string  | No       | Language code (default: "en")                      |
| `limit`      | integer | No       | Max results (1-20, default: 10)                    |

**Returns:** Places sorted by distance with ratings, open status, and distance from center point.

<Callout type="tip">
  **Use with geocode:** If you have an address instead of coordinates, call `geocode` first to get lat/lon coordinates, then use those with `nearby-search`.
</Callout>

***

### autocomplete-places

Get autocomplete suggestions for partial addresses or place names.

| Parameter  | Type    | Required | Description                                                                       |
| ---------- | ------- | -------- | --------------------------------------------------------------------------------- |
| `input`    | string  | Yes      | Partial address or place name (minimum 2 characters)                              |
| `location` | string  | No       | Bias results near "latitude,longitude"                                            |
| `radius`   | integer | No       | Bias radius in meters (1-50000, default: 50000)                                   |
| `types`    | string  | No       | Restrict to types: "geocode", "address", "establishment", "(regions)", "(cities)" |
| `language` | string  | No       | Language code (default: "en")                                                     |
| `limit`    | integer | No       | Max suggestions (1-10, default: 5)                                                |

**Returns:** Autocomplete suggestions with place IDs for detailed lookup.

**Type Filters:**

* `geocode` - All geocoding results
* `address` - Precise street addresses
* `establishment` - Businesses and points of interest
* `(regions)` - Geographic regions (cities, states, countries)
* `(cities)` - Cities only

***

### get-directions

Get routes and turn-by-turn directions between locations.

| Parameter        | Type    | Required | Description                                                                     |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------------- |
| `origin`         | string  | Yes      | Starting location (address, place name, or "lat,lon")                           |
| `destination`    | string  | Yes      | Ending location (address, place name, or "lat,lon")                             |
| `mode`           | string  | No       | Travel mode: "driving", "walking", "bicycling", "transit" (default: "driving")  |
| `waypoints`      | string  | No       | Intermediate stops, pipe-separated (e.g., "Seattle, WA\|Portland, OR"). Max 25. |
| `avoid`          | string  | No       | Features to avoid (comma-separated): "tolls", "highways", "ferries", "indoor"   |
| `departure_time` | string  | No       | When to leave: "now" or Unix timestamp. Enables traffic estimates for driving.  |
| `arrival_time`   | string  | No       | When to arrive (transit only): Unix timestamp. Cannot use with departure\_time. |
| `alternatives`   | boolean | No       | Return alternative routes (default: false)                                      |
| `units`          | string  | No       | Distance units: "metric" or "imperial" (default: "metric")                      |
| `language`       | string  | No       | Language code (default: "en")                                                   |

**Returns:**

* Step-by-step directions with distances and times
* Total distance and duration
* Traffic information (if departure\_time specified for driving)
* Alternative routes (if requested)
* Warnings and notices

**Examples:**

```
# Current traffic conditions
departure_time: "now"
mode: "driving"

# Arrive by 3pm tomorrow (transit only)
arrival_time: 1704123600
mode: "transit"

# Multi-stop route
waypoints: "Seattle, WA|Portland, OR"
```

<Callout type="info">
  **Traffic Estimates:** Use `departure_time: "now"` with driving mode to get current traffic conditions and adjusted travel times.
</Callout>

***

## Common Workflows

### Finding a Place

<Steps>
  <Step title="Search">
    Use `search-places` with a descriptive query
  </Step>

  <Step title="Get Details">
    Use `get-place-details` with the place\_id from the best match
  </Step>
</Steps>

### Getting Directions

<Steps>
  <Step title="Calculate Route">
    Use `get-directions` with origin and destination (addresses work directly)
  </Step>

  <Step title="Add Traffic">
    Add `departure_time: "now"` for current traffic conditions (driving mode)
  </Step>
</Steps>

### Location-Based Recommendations

<Steps>
  <Step title="Geocode Address">
    Use `geocode` to convert address to coordinates
  </Step>

  <Step title="Search Nearby">
    Use `nearby-search` with coordinates and desired type
  </Step>

  <Step title="Get Details (Optional)">
    Use `get-place-details` for top results
  </Step>
</Steps>

***

## Tips & Best Practices

* **Include geographic context** in search queries for better results (e.g., "pizza in downtown Seattle" vs "pizza")
* **Use place\_id from search results** to get details - never guess or construct place IDs
* **Addresses work directly** in `get-directions` - no need to geocode first
* **Check opening hours by day** if relevant - hours vary by day of the week
* **Use departure\_time** with driving mode for traffic-aware travel estimates
* **Results are cached briefly** - very recent changes may not appear immediately

***

<Card title="API Reference" icon="code" href="https://app.chatbotplatform.io/openapi">
  View the complete API specification for Google Maps MCP server endpoints
</Card>
