google-maps-mcp-server
STDIO-based MCP server for Google Maps Platform APIs
Google Maps MCP Server
A Model Context Protocol (MCP) server that provides comprehensive access to Google Maps Platform APIs. This server enables LLMs to perform geocoding, places search, routing, and other geospatial operations through a standardized interface.
Features
- πΊοΈ Comprehensive Google Maps Integration - Access to Places, Routes, Geocoding, and utility APIs
- π Advanced Places Search - Text search, nearby search, autocomplete, and detailed place information
- π£οΈ Smart Routing - Route computation with real-time traffic, tolls, and alternative routes
- π Precise Geocoding - Forward and reverse geocoding with international support
- π Geolocation Services - IP-based and WiFi/cellular location estimation
- π Rich Resources - Built-in documentation and examples accessible via MCP resources
- π Security First - Input validation, rate limiting, and secure API key handling
Quick Start
1. Get Google Maps API Key
- Visit the Google Cloud Console
- Create a new project or select an existing one
- Enable the required APIs (see API requirements by tool below)
- Create an API key and restrict it to the enabled APIs
- Important: This server uses the new Google Maps Platform APIs (Places API (New) and Routes API), not the legacy versions
API Requirements by Tool
Tool | Required Google Cloud Console API |
---|---|
geocode_search , geocode_reverse | Geocoding API |
places_search_text , places_nearby , places_autocomplete , places_details , places_photos | Places API (New) |
routes_compute , routes_matrix | Routes API |
elevation_get | Elevation API |
timezone_get | Time Zone API |
geolocation_estimate | Geolocation API |
roads_nearest | Roads API |
ip_geolocate , nearby_find | Geolocation API + Places API (New) |
2. Configure MCP Client
Add the server to your MCP client configuration:
Cursor
Add to your Cursor MCP settings (~/.cursor/mcp.json
or through Command Palette > Open MCP Settings > New MCP Server):
{
"mcpServers": {
"google-maps": {
"command": "npx",
"args": ["-y", "google-maps-mcp-server"],
"env": {
"GOOGLE_MAPS_API_KEY": "your-api-key-here"
}
}
}
}
With custom rate limiting:
{
"mcpServers": {
"google-maps": {
"command": "npx",
"args": ["-y", "google-maps-mcp-server"],
"env": {
"GOOGLE_MAPS_API_KEY": "your-api-key-here",
"GOOGLE_MAPS_RATE_LIMIT_ENABLED": "true",
"GOOGLE_MAPS_RATE_LIMIT_WINDOW_MS": "120000",
"GOOGLE_MAPS_RATE_LIMIT_MAX_REQUESTS": "200"
}
}
}
}
Claude Desktop
Add to claude_desktop_config.json
:
{
"mcpServers": {
"google-maps": {
"command": "npx",
"args": ["google-maps-mcp-server"],
"env": {
"GOOGLE_MAPS_API_KEY": "your-api-key-here"
}
}
}
}
With rate limiting disabled:
{
"mcpServers": {
"google-maps": {
"command": "npx",
"args": ["google-maps-mcp-server"],
"env": {
"GOOGLE_MAPS_API_KEY": "your-api-key-here",
"GOOGLE_MAPS_RATE_LIMIT_ENABLED": "false"
}
}
}
}
Other MCP Clients
# Set environment variable
export GOOGLE_MAPS_API_KEY="your-api-key-here"
# Run the server
npx google-maps-mcp-server
Available Tools
Geocoding
geocode_search
- Convert addresses to coordinatesgeocode_reverse
- Convert coordinates to addresses
Places
places_search_text
- Search places with natural languageplaces_nearby
- Find places within a radiusplaces_autocomplete
- Get place suggestionsplaces_details
- Get detailed place informationplaces_photos
- Get place photo URLs
Routing
routes_compute
- Calculate optimal routesroutes_matrix
- Compute distance matrices
Utilities
elevation_get
- Get elevation datatimezone_get
- Get timezone informationgeolocation_estimate
- Estimate location from WiFi/cell dataroads_nearest
- Find nearest roads
Special Tools
nearby_find
- Find nearby cities, towns, or POIsip_geolocate
- Geolocate using IP address
Usage Examples
Find Nearby Restaurants
{
"tool": "places_nearby",
"arguments": {
"location": {"lat": 37.7749, "lng": -122.4194},
"radius_meters": 1000,
"included_types": ["restaurant"],
"max_results": 10
}
}
Get Driving Directions
{
"tool": "routes_compute",
"arguments": {
"origin": {"address": "San Francisco, CA"},
"destination": {"address": "Los Angeles, CA"},
"travel_mode": "DRIVE",
"routing_preference": "TRAFFIC_AWARE"
}
}
Geocode an Address
{
"tool": "geocode_search",
"arguments": {
"query": "1600 Amphitheatre Parkway, Mountain View, CA",
"language": "en"
}
}
Geolocate by IP Address
{
"tool": "ip_geolocate",
"arguments": {
"reverse_geocode": true
}
}
The ip_geolocate
tool also supports an optional ip_override
parameter for testing with different IP addresses:
{
"tool": "ip_geolocate",
"arguments": {
"ip_override": "8.8.8.8",
"reverse_geocode": true
}
}
Note: The ip_override
parameter accepts public IPv4 or IPv6 addresses. Private and reserved IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8) are rejected. The IP override is best-effort and Google's Geolocation API may not always honor the request.
Configuration
Environment Variables
GOOGLE_MAPS_API_KEY
(required) - Your Google Maps Platform API key
Rate Limiting Configuration
GOOGLE_MAPS_RATE_LIMIT_ENABLED
(optional, default:true
) - Enable/disable rate limiting- Set to
false
to disable rate limiting entirely
- Set to
GOOGLE_MAPS_RATE_LIMIT_WINDOW_MS
(optional, default:60000
) - Rate limit window in milliseconds- Controls the time window for rate limiting (e.g., 60000 = 1 minute)
GOOGLE_MAPS_RATE_LIMIT_MAX_REQUESTS
(optional, default:100
) - Maximum requests per window- Maximum number of requests allowed per endpoint within the time window
Example Rate Limiting Configurations
# Default rate limiting (100 requests per minute per endpoint)
GOOGLE_MAPS_API_KEY="your-api-key-here"
# Disable rate limiting entirely
GOOGLE_MAPS_API_KEY="your-api-key-here"
GOOGLE_MAPS_RATE_LIMIT_ENABLED=false
# Custom rate limiting (200 requests per 2 minutes per endpoint)
GOOGLE_MAPS_API_KEY="your-api-key-here"
GOOGLE_MAPS_RATE_LIMIT_WINDOW_MS=120000
GOOGLE_MAPS_RATE_LIMIT_MAX_REQUESTS=200
# Stricter rate limiting (50 requests per 30 seconds per endpoint)
GOOGLE_MAPS_API_KEY="your-api-key-here"
GOOGLE_MAPS_RATE_LIMIT_WINDOW_MS=30000
GOOGLE_MAPS_RATE_LIMIT_MAX_REQUESTS=50
API Quotas and Billing
This server uses Google Maps Platform APIs which require billing to be enabled. Monitor your usage in the Google Cloud Console to avoid unexpected charges. Consider implementing usage limits in your application.
Resources
The server provides built-in MCP resources with documentation and examples:
google-maps://docs/api-overview
- API overview and capabilitiesgoogle-maps://docs/place-types
- Complete place types referencegoogle-maps://docs/travel-modes
- Available travel modesgoogle-maps://docs/field-masks
- Places API field optimizationgoogle-maps://examples/common-queries
- Example queries and patterns
Access these through your MCP client's resource interface.
Development
Building from Source
git clone <repository-url>
cd google-maps-mcp-server
npm install
npm run build
Testing
npm test
Using MCP Inspector
npm run build
GOOGLE_MAPS_API_KEY="your-api-key-here" npx @modelcontextprotocol/inspector ./dist/index.js
Error Handling
The server returns structured errors with helpful context:
{
"error": {
"code": "QUOTA_EXCEEDED",
"message": "API quota exceeded",
"context": {
"endpoint": "/places/textsearch",
"status": 429
}
}
}
Common error codes:
INVALID_REQUEST
- Invalid input parametersAPI_KEY_INVALID
- Invalid or missing API keyQUOTA_EXCEEDED
- API quota exceededREQUEST_FAILED
- Network or API request failed
Security
- API keys are never logged or exposed
- Input validation prevents injection attacks
- Rate limiting protects against abuse
- IP addresses are hashed in logs for privacy
Contributing
Contributions are welcome! Please submit pull requests to our GitHub repository.
License
MIT License - see LICENSE file for details.
Related Servers
OpenSearch MCP Server
An MCP server for interacting with OpenSearch clusters.
The Movie Database (TMDB)
Integrates with The Movie Database (TMDB) API, allowing AI assistants to search for movies, retrieve details, and generate related content.
Manticore Search
Provides access to Manticore Search, an open-source database for real-time, full-text search.
Grep App
Search code across public GitHub repositories using the grep.app API.
Brave-Gemini Research MCP Server
Perform web searches with the Brave Search API and analyze research papers using Google's Gemini model.
ProPublica MCP Server
Search and analyze nonprofit organizations' Form 990 data using ProPublica's Nonprofit Explorer API.
Perplexity Search
Web search and chat completion powered by the Perplexity AI API.
IP2Location.io
IP2Location.io API integration to retrieve the geolocation information for an IP address.
Geocoding Tool
Convert city names and locations into latitude and longitude coordinates using the free OpenStreetMap Nominatim API. No API key is required.
Naver Map Direction MCP
Provides geographical and directional data from the Naver Map API.