MCP Google Map Server
Integrates Google Maps API for location-based queries and data processing.
MCP Google Map Server
A powerful Model Context Protocol (MCP) server providing comprehensive Google Maps API integration with streamable HTTP transport support and LLM processing capabilities.
π Special Thanks
This project has received contributions from the community.
Special thanks to @junyinnnn for helping add support for streamablehttp
.
β Testing Status
This MCP server has been tested and verified to work correctly with:
- Claude Desktop
- Dive Desktop
- MCP protocol implementations
All tools and features are confirmed functional through real-world testing.
Features
πΊοΈ Google Maps Integration
-
Location Search
- Search for places near a specific location with customizable radius and filters
- Get detailed place information including ratings, opening hours, and contact details
-
Geocoding Services
- Convert addresses to coordinates (geocoding)
- Convert coordinates to addresses (reverse geocoding)
-
Distance & Directions
- Calculate distances and travel times between multiple origins and destinations
- Get detailed turn-by-turn directions between two points
- Support for different travel modes (driving, walking, bicycling, transit)
-
Elevation Data
- Retrieve elevation data for specific locations
π Advanced Features
- Streamable HTTP Transport: Latest MCP protocol with real-time streaming capabilities
- Session Management: Stateful sessions with UUID-based identification
- Multiple Connection Support: Handle multiple concurrent client connections
- Echo Service: Built-in testing tool for MCP server functionality
Installation
β οΈ Important Notice: This server uses HTTP transport, not stdio. Direct npx usage in MCP Server Settings is NOT supported.
Method 1: Global Installation (Recommended)
# Install globally
npm install -g @cablate/mcp-google-map
# Run the server
mcp-google-map --port 3000 --apikey "your_api_key_here"
# Using short options
mcp-google-map -p 3000 -k "your_api_key_here"
Method 2: Using npx (Quick Start)
β οΈ Warning: Cannot be used directly in MCP Server Settings with stdio mode
Step 1: Launch HTTP Server in Terminal
# Run in a separate terminal
npx @cablate/mcp-google-map --port 3000 --apikey "YOUR_API_KEY"
# Or with environment variable
GOOGLE_MAPS_API_KEY=YOUR_API_KEY npx @cablate/mcp-google-map
Step 2: Configure MCP Client to Use HTTP
{
"mcp-google-map": {
"transport": "http",
"url": "http://localhost:3000/mcp"
}
}
β Common Mistake to Avoid
// This WILL NOT WORK - stdio mode not supported with npx
{
"mcp-google-map": {
"command": "npx",
"args": ["@cablate/mcp-google-map"]
}
}
Server Information
- Endpoint:
http://localhost:3000/mcp
- Transport: HTTP (not stdio)
- Tools: 8 Google Maps tools available
API Key Configuration
API keys can be provided in three ways (priority order):
-
HTTP Headers (Highest priority)
// MCP Client config { "mcp-google-map": { "transport": "streamableHttp", "url": "http://localhost:3000/mcp", // if your MCP Client support 'headers' "headers": { "X-Google-Maps-API-Key": "YOUR_API_KEY" } } }
-
Command Line
mcp-google-map --apikey YOUR_API_KEY
-
Environment Variable (.env file or command line)
GOOGLE_MAPS_API_KEY=your_api_key_here MCP_SERVER_PORT=3000
Available Tools
The server provides the following tools:
Google Maps Tools
- search_nearby - Search for nearby places based on location, with optional filtering by keywords, distance, rating, and operating hours
- get_place_details - Get detailed information about a specific place including contact details, reviews, ratings, and operating hours
- maps_geocode - Convert addresses or place names to geographic coordinates (latitude and longitude)
- maps_reverse_geocode - Convert geographic coordinates to a human-readable address
- maps_distance_matrix - Calculate travel distances and durations between multiple origins and destinations
- maps_directions - Get detailed turn-by-turn navigation directions between two locations
- maps_elevation - Get elevation data (height above sea level) for specific geographic locations
Development
Local Development
# Clone the repository
git clone https://github.com/cablate/mcp-google-map.git
cd mcp-google-map
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your API key
# Build the project
npm run build
# Start the server
npm start
# Or run in development mode
npm run dev
Project Structure
src/
βββ cli.ts # Main CLI entry point
βββ config.ts # Server configuration
βββ index.ts # Package exports
βββ core/
β βββ BaseMcpServer.ts # Base MCP server with streamable HTTP
βββ tools/
βββ maps/ # Google Maps tools
βββ toolclass.ts # Google Maps API client
βββ searchPlaces.ts # Maps service layer
βββ searchNearby.ts # Search nearby places
βββ placeDetails.ts # Place details
βββ geocode.ts # Geocoding
βββ reverseGeocode.ts # Reverse geocoding
βββ distanceMatrix.ts # Distance matrix
βββ directions.ts # Directions
βββ elevation.ts # Elevation data
Tech Stack
- TypeScript - Type-safe development
- Node.js - Runtime environment
- Google Maps Services JS - Google Maps API integration
- Model Context Protocol SDK - MCP protocol implementation
- Express.js - HTTP server framework
- Zod - Schema validation
Security Considerations
- API keys are handled server-side for security
- DNS rebinding protection available for production
- Input validation using Zod schemas
- Error handling and logging
License
MIT
Contributing
Community participation and contributions are welcome! Here's how you can contribute:
- βοΈ Star the project if you find it helpful
- π Submit Issues: Report bugs or provide suggestions
- π§ Create Pull Requests: Submit code improvements
- π Documentation: Help improve documentation
Contact
If you have any questions or suggestions, feel free to reach out:
- π§ Email: reahtuoo310109@gmail.com
- π» GitHub: CabLate
- π€ Collaboration: Welcome to discuss project cooperation
- π Technical Guidance: Sincere welcome for suggestions and guidance
Changelog
v0.0.18 (Latest)
- Error response improvements: Now all error messages are in English with more detailed information (previously in Chinese)
v0.0.17
- Added HTTP Header Authentication: Support for passing API keys via
X-Google-Maps-API-Key
header in MCP Client config - Fixed Concurrent User Issues: Each session now uses its own API key without conflicts
- Fixed npx Execution: Resolved module bundling issues
- Improved Documentation: Clearer setup instructions
v0.0.14
- Added streamable HTTP transport support
- Improved CLI interface with emoji indicators
- Enhanced error handling and logging
- Added comprehensive tool descriptions for LLM integration
- Updated to latest MCP SDK version
Star History
Related Servers
Cloudflare MCP Server Template
A template for deploying a remote, authentication-free MCP server on Cloudflare Workers. Tools are defined directly in the source code.
Pangea MCP proxy
Protect any MCP server from malicious entities and confidential PII using Pangea's AI Guard and Vault.
Secure Ubuntu MCP Server
A security-focused MCP server for performing safe operations on an Ubuntu system, featuring robust security controls and audit logging.
CData YouTube Analytics
An MCP server for accessing YouTube Analytics data, powered by the CData JDBC Driver.
Microsoft Entra ID MCP Server
A Python MCP server for Microsoft Entra ID (Azure AD) directory, user, group, device, sign-in, and security operations via Microsoft Graph.
Honeycomb MCP
Interact with Honeycomb observability data using the Model Context Protocol.
Hugging Face
Access the Hugging Face Dataset Viewer API to query, explore, search, and analyze machine learning datasets from the Hugging Face Hub.
Meraki Magic MCP
A Python-based MCP server for Cisco's Meraki Dashboard, providing tools to query the API for discovering, monitoring, and managing your Meraki environment.
Remote MCP Server (Authless)
A remote, auth-less MCP server deployable on Cloudflare Workers or locally via npm.
Aviation Weather
Provides aviation weather information for flight planning from aviationweather.gov.