Google Maps MCP Server
# Google Maps MCP Server
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that gives Claude and other MCP clients access to the Google Maps Platform: geocoding, place search, place details, directions, distance matrix, and elevation.
## Tools
| Tool | Description |
|------|-------------|
| `maps_geocode` | Convert an address or place name into coordinates |
| `maps_reverse_geocode` | Convert coordinates into a human-readable address |
| `maps_search_places` | Free-text place search (restaurants, businesses, landmarks), with optional location bias |
| `maps_place_details` | Full details for a place: phone, website, hours, rating, reviews |
| `maps_directions` | Turn-by-turn directions (driving, walking, bicycling, transit) |
| `maps_distance_matrix` | Travel time and distance between multiple origins and destinations |
| `maps_elevation` | Elevation in meters for one or more coordinates |
## Prerequisites
1. **Node.js 18+**
2. **A Google Maps API key** — create one in the [Google Cloud Console](https://console.cloud.google.com/google/maps-apis/credentials):
- Create (or select) a project
- Enable these APIs: **Geocoding API**, **Places API**, **Directions API**, **Distance Matrix API**, **Elevation API**
- Create an API key under *Credentials*
## Installation
```bash
git clone https://github.com/Mannycon1/Google-Maps-Mcp.git
cd Google-Maps-Mcp
npm install
npm run build
```
## Usage with Claude Desktop
Add this to your `claude_desktop_config.json` (Claude Desktop → Settings → Developer → Edit Config):
```json
{
"mcpServers": {
"google-maps": {
"command": "node",
"args": ["/absolute/path/to/Google-Maps-Mcp/dist/index.js"],
"env": {
"GOOGLE_MAPS_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
```
Restart Claude Desktop and the Google Maps tools will appear.
## Usage with Claude Code
```bash
claude mcp add google-maps \
--env GOOGLE_MAPS_API_KEY=YOUR_API_KEY_HERE \
-- node /absolute/path/to/Google-Maps-Mcp/dist/index.js
```
## Testing manually
The server speaks JSON-RPC over stdio:
```bash
GOOGLE_MAPS_API_KEY=YOUR_KEY node dist/index.js
```
Then paste an MCP `initialize` request to interact with it, or use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector):
```bash
GOOGLE_MAPS_API_KEY=YOUR_KEY npx @modelcontextprotocol/inspector node dist/index.js
```
## Security notes
- Never commit your API key. Pass it via the `GOOGLE_MAPS_API_KEY` environment variable (the `.env` pattern is gitignored).
- Consider [restricting your API key](https://cloud.google.com/docs/authentication/api-keys#securing) to only the Maps APIs listed above.
## License
MIT
TDQS
Scored across 7 tools
Each tool targets a distinct Maps operation: address-to-coordinates, coordinates-to-address, place lookup by ID, free-text place search, directions, distance matrix, and elevation. The only mild overlap is between geocode and search_places, but their inputs and outputs are clearly different enough to avoid confusion.
All tools follow a consistent maps_ prefix with snake_case action-based naming (maps_geocode, maps_search_places, maps_distance_matrix). The naming pattern is uniform, predictable, and instantly communicates the tool's purpose.
Seven tools is a well-scoped size for a Google Maps MCP server. Each tool covers a major Maps API use case without unnecessary redundancy or feature bloat.
The core map workflows are covered: location lookup, place search and details, routing, distance calculation, and elevation. Minor gaps like place autocomplete or timezone lookups exist, but they do not create dead ends for most common use cases.