Skip to main content
Glama
Mannycon1

Google Maps MCP Server

by Mannycon1
README.md
# 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

A4/5.0

Scored across 7 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues