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:- Places API (for place search, details, autocomplete, nearby search)
- Geocoding API (for geocoding and reverse geocoding)
- Directions API (for routing and navigation)
Getting Your API Key
Go to Google Cloud Console
Visit Google Cloud Console
Create API Key
Go to “Credentials” and create an API key. Add appropriate restrictions (HTTP referrers or IP addresses) for security.
Important: Secure your API key by restricting it to specific domains, IP addresses, or API endpoints in the Google Cloud Console.
Use Cases
Finding Nearby Restaurants
User: “Find Italian restaurants near 123 Main St, Seattle” Tool Calls:geocode- Convert “123 Main St, Seattle” to coordinatesnearby-search- Search for restaurants with type “italian_restaurant” near those coordinatesget-place-details- Get full details for top results (hours, reviews, phone)
Getting Directions with Traffic
User: “How do I get from my office to the airport? I need to leave now.” Tool Calls:get-directions- Calculate route withmode: "driving"anddeparture_time: "now"for traffic estimates
Location Autocomplete
User: “I’m trying to remember the full address… it’s something like ‘123 Mai’” Tool Calls:autocomplete-places- Get suggestions for “123 Mai” withtypes: "address"
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”) |
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. |
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) |
- 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”) |
- 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
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) |
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.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) |
geocode- All geocoding resultsaddress- Precise street addressesestablishment- 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”) |
- 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
Traffic Estimates: Use
departure_time: "now" with driving mode to get current traffic conditions and adjusted travel times.Common Workflows
Finding a Place
Getting Directions
Location-Based Recommendations
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
API Reference
View the complete API specification for Google Maps MCP server endpoints