Skip to main content
Glama
arunrajece

Google Maps MCP Server

by arunrajece
README.md
# Google Maps MCP Server

A Model Context Protocol (MCP) server that integrates Google Maps routing and traffic capabilities with Claude AI for advanced route planning, traffic analysis, and cost estimation.

## Prerequisites

- **Node.js** (LTS version 18+ recommended) - Download from [nodejs.org](https://nodejs.org/)
- **Google Maps API Key** with required services enabled
- **Claude Desktop** application for MCP integration

## Setup Instructions

### 1. Clone and Install
```bash
git clone [your-repo-url]
cd google-maps-mcp-server
npm install
```

### 2. Get Google Maps API Key
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Create a new project or select existing one
3. Enable the following APIs:
   - **Directions API** (required for routing)
   - **Distance Matrix API** (required for traffic data)
   - **Geocoding API** (required for address lookup)
   - **Places API** (optional, for enhanced address search)
4. Create credentials → API Key
5. Restrict the API key to the enabled services above

### 3. Configure API Key
Edit `config/config.json` and replace `GOOGLE_API_KEY` with your actual API key:
```json
{
  "googleMaps": {
    "apiKey": "your-actual-api-key-here"
  }
}
```

### 4. Test the Server
```bash
# Test configuration
npm test

# Start in development mode
npm run dev
```

### 5. Configure Claude Desktop
Add this to your Claude Desktop MCP settings file:

**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "google-maps": {
      "command": "node",
      "args": ["/absolute/path/to/google-maps-mcp-server/src/index.js"],
      "cwd": "/absolute/path/to/google-maps-mcp-server"
    }
  }
}
```

### 6. Start Using
Restart Claude Desktop and you can now ask questions like:
- "Find the fastest route from New York to Boston"
- "Compare routes to the airport with and without tolls"
- "What's the traffic like for my commute right now?"

## Available Tools

- **calculate_route**: Get optimal route with traffic consideration and waypoints
- **compare_routes**: Compare multiple route alternatives with different options
- **get_live_traffic**: Get real-time traffic information and travel delays
- **estimate_costs**: Calculate trip costs including fuel and toll estimates

## Troubleshooting

### Common Issues

**1. "Please set your Google Maps API key" error**
- Check that `config/config.json` has your actual API key, not `GOOGLE_API_KEY`
- Ensure the JSON format is valid (no trailing commas)

**2. "Google Maps API error" messages**
- Verify your API key is valid and has the required APIs enabled
- Check API quotas and billing in Google Cloud Console
- Ensure your API key isn't restricted to wrong domains/IPs

**3. "No route found" errors**
- Check that addresses are valid and exist
- Try using coordinates instead of addresses (lat,lng format)
- Verify the locations are accessible by car

**4. Server won't start**
```bash
# Check Node.js version
node --version  # Should be 18+

# Clear dependencies and reinstall
rm -rf node_modules package-lock.json
npm install

# Check for configuration errors
npm test
```

**5. Claude Desktop can't find the server**
- Use absolute paths in Claude Desktop config
- Restart Claude Desktop after configuration changes
- Check that the MCP config file path is correct for your OS

### Debug Mode
Run with debug logging:
```bash
DEBUG=* npm start
```

### Testing Individual Tools
```bash
# Test route calculation
echo '{"origin":"New York, NY","destination":"Boston, MA"}' | node src/index.js

# Check API connectivity
curl "https://maps.googleapis.com/maps/api/directions/json?origin=NYC&destination=Boston&key=YOUR_API_KEY"
```

## Configuration Options

Edit `config/config.json` to customize:

```json
{
  "googleMaps": {
    "apiKey": "your-api-key"
  },
  "server": {
    "port": 3001,
    "host": "localhost"
  },
  "routing": {
    "defaultTrafficModel": "best_guess",
    "maxWaypoints": 25,
    "maxAlternatives": 3,
    "units": "metric"
  },
  "costs": {
    "fuelPricePerLiter": 1.50,
    "vehicleFuelEfficiency": 8.0,
    "tollEstimatePerKm": 0.05
  }
}
```

## License

MIT License - feel free to modify and distribute.