Google Maps MCP Server
Provides tools for geocoding, reverse geocoding, place search, place details, directions, distance matrix, and elevation using the Google Maps Platform.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Maps MCP Serverfind coffee shops in downtown Seattle"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Maps MCP Server
An MCP (Model Context Protocol) 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 |
| Convert an address or place name into coordinates |
| Convert coordinates into a human-readable address |
| Free-text place search (restaurants, businesses, landmarks), with optional location bias |
| Full details for a place: phone, website, hours, rating, reviews |
| Turn-by-turn directions (driving, walking, bicycling, transit) |
| Travel time and distance between multiple origins and destinations |
| Elevation in meters for one or more coordinates |
Related MCP server: MCP Google Maps - stdio Edition
Prerequisites
Node.js 18+
A Google Maps API key — create one in the Google Cloud Console:
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
git clone https://github.com/Mannycon1/Google-Maps-Mcp.git
cd Google-Maps-Mcp
npm install
npm run buildUsage with Claude Desktop
Add this to your claude_desktop_config.json (Claude Desktop → Settings → Developer → Edit Config):
{
"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
claude mcp add google-maps \
--env GOOGLE_MAPS_API_KEY=YOUR_API_KEY_HERE \
-- node /absolute/path/to/Google-Maps-Mcp/dist/index.jsTesting manually
The server speaks JSON-RPC over stdio:
GOOGLE_MAPS_API_KEY=YOUR_KEY node dist/index.jsThen paste an MCP initialize request to interact with it, or use the MCP Inspector:
GOOGLE_MAPS_API_KEY=YOUR_KEY npx @modelcontextprotocol/inspector node dist/index.jsSecurity notes
Never commit your API key. Pass it via the
GOOGLE_MAPS_API_KEYenvironment variable (the.envpattern is gitignored).Consider restricting your API key to only the Maps APIs listed above.
License
MIT
Available Tools
7 toolsmaps_directionsA
Get turn-by-turn directions between an origin and destination
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Travel mode (default: driving) | |
| origin | Yes | Starting point: address, place name, or 'lat,lng' | |
| destination | Yes | Ending point: address, place name, or 'lat,lng' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It conveys that the tool is a read operation returning route data, but it does not disclose the response structure (steps, durations, distances, polyline), whether multiple routes are possible, or any external API/network dependencies. For a tool with no output schema, this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 9-word sentence that leads with the action, names the resource, and states both required inputs. There is no filler, repetition, or unnecessary formatting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives an agent enough to select the tool and pass origin and destination, and 'turn-by-turn directions' hints at the response shape. However, with no output schema and no annotations, key context is missing: what the return object actually contains and when to choose this tool over maps_distance_matrix.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with origin and destination format hints ('address, place name, or lat,lng') and the mode enum all documented inline. The description adds nothing beyond the parameter names themselves, so the schema does the heavy lifting and the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ('Get') with a specific resource ('turn-by-turn directions'), which clearly signals navigation instructions rather than distance/time metrics. This self-evidently differentiates it from siblings like maps_distance_matrix, maps_geocode, and maps_place_details without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is strongly implied: ask for step-by-step route instructions between two points. However, there is no explicit guidance on when to prefer this over maps_distance_matrix (for total time/distance without step-by-step maneuvers) or mention of any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maps_distance_matrixA
Get travel distances and durations between multiple origins and destinations
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Travel mode (default: driving) | |
| origins | Yes | List of origins: addresses, place names, or 'lat,lng' | |
| destinations | Yes | List of destinations: addresses, place names, or 'lat,lng' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. 'Get' signals a read-only operation and the description names the outputs (distances and durations), which is useful. However, it does not mention matrix size limits, response format, or any other operational constraints that could affect an agent's expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no filler. Every word contributes to identifying what the tool does, and the core matrix concept is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple tool, the description communicates the essential output (distances and durations) and the multi-origin/destination nature. The parameter details are fully covered by the schema, and the absence of an output schema is partly offset by naming the return concepts. It lacks explicit limits or format details, but it is adequate for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters origins, destinations, and mode are already documented in the input schema. The description only reinforces the origin/destination concept without adding new meaning. This matches the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('travel distances and durations between multiple origins and destinations'), clearly identifying the tool's core purpose. The phrase 'multiple origins and destinations' hints at the many-to-many matrix behavior and distinguishes it from a single route tool, though it does not explicitly name a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for many-to-many travel distance/duration queries, but it does not explicitly state when to use it versus maps_directions or other sibling tools. There is no when-not-to-use guidance or alternative recommendation, so usage context is only implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maps_elevationA
Get elevation data (in meters) for one or more geographic coordinates
| Name | Required | Description | Default |
|---|---|---|---|
| locations | Yes | List of coordinates to get elevation for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden for behavioral disclosure. The word 'get' implies a safe read operation, and the description adds the useful unit detail ('in meters'). However, it does not disclose traits such as return format, handling of coordinates without elevation data, or any limits beyond what the schema already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the purpose and scopes the input range. No wasted words; the unit clarification earns its place alongside the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with a fully covered schema, the description is nearly complete. The only meaningful gap is that no output schema exists and the description does not specify what the return value looks like (e.g., elevations aligned with input order), which the description could have clarified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the 'locations' parameter fully documented including min/max items and latitude/longitude bounds. The description adds minimal parameter-level meaning beyond confirming the unit context, which meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('get'), a clear resource ('elevation data'), and scopes the input precisely ('one or more geographic coordinates'). It is immediately distinguishable from all sibling tools, which cover geocoding, places, directions, and distance matrices, not elevation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the domain: an agent would select this tool when it needs elevation values rather than addresses, routes, or places. However, no sibling tools are explicitly named and no when-to-use/when-not-to-use guidance is provided. The separation from siblings is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maps_geocodeA
Convert a street address or place name into geographic coordinates (latitude/longitude)
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The street address or place name to geocode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It clearly conveys a read-only conversion operation and the core input-output behavior, but it does not disclose edge-case behavior, coordinate format details, or limitations. For a simple stateless geocoding call, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. The verb and key transformation are front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter geocoding tool, the description is sufficient for selection and invocation: it defines the input and states the output as coordinates. It does not describe the exact output schema, but none is present, and the 'latitude/longitude' phrasing gives enough context. The only real gap is the lack of explicit guidance for choosing between this and sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the 'address' parameter is already documented in the schema. The description adds helpful context by clarifying that the address can be a street address or place name, but the schema already carries the main semantic weight, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Convert') and clearly names the resource ('street address or place name') and the output ('latitude/longitude'), so an agent can tell what the tool does. It does not explicitly contrast with siblings like maps_search_places, which could also return location data, so sibling differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you have an address or place name and need coordinates. However, it does not explicitly state when not to use it or name alternatives, leaving some routing inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maps_place_detailsA
Get detailed information about a specific place by its place_id (contact info, hours, reviews, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| place_id | Yes | The Google Maps place_id (from maps_search_places or maps_geocode) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that the tool returns detailed data including contact info, hours, and reviews, and the 'Get' framing implies a read-only operation. It does not mention error handling or rate limits, but those are not typically expected for a straightforward lookup tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with a parenthetical list of data categories. It is front-loaded with the core action and provides immediate clarity without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only lookup tool, the description covers the goal, the required input, and the nature of returned data. An agent can infer when and how to use the tool, though the exact return structure is not enumerated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single place_id parameter with 100% coverage, including its origin. The description only references place_id without adding further semantic detail beyond what the schema provides, so it stays at the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get', identifies the resource ('detailed information about a specific place'), and specifies the input ('by its place_id'). It clearly communicates what the tool does, though it does not explicitly differentiate itself from sibling tools like maps_search_places or maps_geocode beyond the unique place_id input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this tool is for retrieving details once a place_id is already known. It does not explicitly name alternatives or provide when-not-to-use guidance, but the parameter description ('from maps_search_places or maps_geocode') implies a workflow of first obtaining a place_id and then calling this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maps_reverse_geocodeA
Convert geographic coordinates (latitude/longitude) into a human-readable address
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Latitude | |
| longitude | Yes | Longitude |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses only the basic transformation. It never explicitly confirms a read-only lookup, nor does it describe the return format beyond 'human-readable address', error behavior for invalid coordinates, or any rate-limiting/coverage caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 10-word sentence that front-loads the operation and wastes no words. It is concise without being tautological.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity two-parameter tool, the essential contract (coordinates in, address out) is present and the schema fully documents the parameters. However, with no annotations, no output schema, and no examples, the agent is left without details on the returned address structure or edge-case behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters documented and range-constrained, so the baseline is 3. The description adds only marginal framing — that these numbers are geographic coordinates for address conversion — without adding units, datum, format, or examples beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('convert'), explicit inputs (latitude/longitude), and a clear output (human-readable address), making the reverse-geocoding operation unmistakable. The input/output asymmetry inherently distinguishes it from the geocoding sibling, so an agent can tell the direction without inspecting either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent that has coordinates and needs an address can infer this tool is appropriate. However, there is no explicit when-to-use or when-not-to-use guidance, nor does it name alternatives such as maps_geocode or maps_place_details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maps_search_placesA
Search for places (restaurants, businesses, landmarks, etc.) using a free-text query, optionally biased to a location
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Free-text search query, e.g. 'pizza near Times Square' | |
| radius | No | Optional search radius in meters (max 50000); requires latitude/longitude | |
| latitude | No | Optional latitude to bias results toward | |
| longitude | No | Optional longitude to bias results toward |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It reveals that the query is free-text and that location only 'biases' rather than strictly filters results, which is useful. However, it does not mention what is returned, whether the operation is read-only, or any limitations such as pagination or result ordering. Some behavioral context is provided, but the gaps are noticeable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence that front-loads the verb and resource, followed by the key modifier about location bias. There is no redundant or filler language; the description is as concise as possible while still conveying the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool, the schema covers parameter constraints, but the absence of an output schema means the description should clarify what the tool returns (e.g., a list of matching places). It also does not mention the dependency that longitude and latitude must be provided together when using radius, though the schema hints at this. The description is adequate for basic invocation but incomplete for full usage clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage, documenting each parameter's meaning. The description adds only a summary phrase ('optionally biased to a location') that restates what the schema already says about latitude/longitude and radius. Since the schema does the heavy lifting, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search') and resource ('places'), with clarifying examples ('restaurants, businesses, landmarks'). It clearly distinguishes this from sibling tools like geocoding and place details: it is a free-text place search, not an address-to-coordinate lookup or a details retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: use when you want to find places via a natural-language query, possibly with a location bias. However, it does not explicitly mention alternatives or exclude cases like structured address lookups (which would belong to geocoding) or retrieving detailed info for a known place. The guidance is present only by implication, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
7 tool updates
v1.0.0- First observed
maps_directions - First observed
maps_distance_matrix - First observed
maps_elevation - First observed
maps_geocode - First observed
maps_place_details - First observed
maps_reverse_geocode - First observed
maps_search_places
TDQS
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.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Google Maps MCP Pack — geocoding, places, directions, distance matrix, elevation.
Live Google Maps business search, review, and photo data for AI agents over MCP.
4 Google Maps endpoints. Pay per call in USDC via x402.
The Google Maps MCP server is a fully-managed server provided by the Maps Grounding Lite API that connects AI applications to Google Maps Platform services. It provides three main tools for building LLM applications: searching for places, looking up weather information, and computing routes with details like distance and travel time. The server acts as a proxy that translates Google Maps data into a format that AI applications can understand, enabling agents to accurately answer real-world location and travel queries.
Related MCP Servers
- AlicenseCqualityDmaintenanceProvides access to Google Maps API functionality including geocoding, place search, direction routing, and distance calculations through a structured MCP interface.410MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude Desktop to access Google Maps services including geocoding, place search, directions, distance calculations, and elevation data through stdio communication. Provides comprehensive location-based functionality with direct Google Maps API integration.MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to access Google Maps services including places search, details, directions, geocoding, and nearby search through natural language.62MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Google Maps API for geocoding, place search, directions, distance matrices, and elevation data through natural language.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mannycon1/Google-Maps-Mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server