Google Maps MCP Server
This server provides a no-API-key Google Maps scraper that can be used as an MCP server or CLI to search for businesses and places and retrieve detailed place information.
Search Google Maps for businesses, categories, services, landmarks, and points of interest by query and location (e.g., "dentists in Chicago", "coffee shops in Paris").
Get detailed place information using a Google Place ID or a business/landmark name, including address, phone, international phone, website, category, rating, review count, coordinates, and Google Maps URL.
Limit result counts and optionally enable geo-grid tiling to cover entire cities/regions for large-scale data collection.
Configure country, language, and result delivery (inline or as a resource) to tailor searches and avoid context bloat.
Run as a CLI for terminal use, supporting table or CSV output.
Integrate with AI agents like Claude Desktop, Cursor, Windsurf, Cline, Zed via MCP (stdio or streamable HTTP).
Provides tools for searching businesses, attractions, and services on Google Maps, retrieving structured place details including ratings, contact info, coordinates, and Google Maps URLs.
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 me the top-rated pizza places in Brooklyn"
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.
πΊοΈ gmaps-mcp
A Google Maps scraper server and CLI for AI agents and terminal use. No API key required.
β‘ Key Features
No API key β scrapes Google Maps directly via
aiohttpSearch businesses by query with pagination and geo-grid tiling
Place details β full profile by Place ID or name (phone, address, rating, coordinates)
Grid mode β tiles an entire city/region into sub-viewports to collect thousands of results
MCP + CLI β same engine, two interfaces
Related MCP server: Google Maps MCP Server
π Quickstart
Add to AI Agents (Claude Desktop, Cursor, Windsurf, Cline, Zed, etc.)
npx mcp-add -n google-maps -t stdio -c "uvx --from git+https://github.com/devsanthoshmk/gmaps-mcp.git gmaps-mcp serve"Or Run via CLI
# Direct run without cloning
uvx --from git+https://github.com/devsanthoshmk/gmaps-mcp.git gmaps-mcp search "bakeries" "Paris" --country fr --limit 10
# Or clone and run locally
git clone https://github.com/devsanthoshmk/gmaps-mcp.git
cd gmaps-mcp
uv run gmaps-mcp search "bakeries" "Paris" --country fr --limit 10π» CLI
Search
uv run gmaps-mcp search "dentists" "Chicago" --limit 10 --country us --format table
uv run gmaps-mcp search "bakeries" "Paris" --country fr --grid --format table
uv run gmaps-mcp search "pharmacies" "Chennai" --grid --country in --output pharmacies.csvPlace Details
uv run gmaps-mcp details "ChIJ7xiFY1VmUjoR2IuH0fYWMlk" --format table
uv run gmaps-mcp details "Eiffel Tower Paris" --country fr --output eiffel.csvStart MCP Server
uv run gmaps-mcp serve # stdio (default)
uv run gmaps-mcp serve --transport streamable-http --host 0.0.0.0 --port 8000 # HTTPπ MCP Client Config (Manual)
{
"mcpServers": {
"google-maps": {
"command": "uvx",
"args": ["--from", "git+https://github.com/devsanthoshmk/gmaps-mcp.git", "gmaps-mcp", "serve"]
}
}
}Local dev:
{
"mcpServers": {
"google-maps": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/gmaps-mcp", "gmaps-mcp", "serve"]
}
}
}π§© MCP Tools
search_google_maps
Parameter | Type | Default | Description |
| string | required | Search term / business category (e.g. |
| string | required | Target location / city (e.g. |
| integer | null | Max results |
| boolean | false | Enable geo-grid tiling for large area coverage |
| string |
| ISO country code ( |
| string |
| Response language |
|
|
|
|
get_place_details
Parameter | Type | Default | Description |
| string | required | Place ID ( |
| string |
| ISO country code |
| string |
| Response language |
π¦ Output Schema
{
"place_id": "ChIJ7xiFY1VmUjoR2IuH0fYWMlk",
"name": "New Chennai Pharmacy",
"category": "Pharmacy",
"address": "No. 33, Sarojini Street, T.Nagar, Chennai, Tamil Nadu 600017",
"phone": "091500 97960",
"international_phone": "+91 91500 97960",
"website": "https://example.com",
"latitude": 13.0371485,
"longitude": 80.2319365,
"rating": 4.7,
"review_count": 25,
"google_maps_url": "https://www.google.com/maps/place/?q=place_id:ChIJ7xiFY1VmUjoR2IuH0fYWMlk"
}π License
MIT β see LICENSE.
Available Tools
2 toolsget_place_detailsA
Retrieve detailed information for a single specific Google Maps place or business. Looks up a place using its unique Google Place ID (e.g., 'ChIJ...' or 'place_id:ChIJ...') or specific landmark/business name. Returns complete structured details including address, phone number, website, rating, coordinates, and Google Maps URL.
| Name | Required | Description | Default |
|---|---|---|---|
| place | Yes | The place identifier to fetch details for. Can be either: 1. A Google Place ID (e.g., 'ChIJ12k5kG_iDDkRwuzibQwYZ4M' or 'place_id:ChIJ...') 2. An exact place / business name and location (e.g., 'AIIMS New Delhi' or 'Taj Mahal Palace Mumbai'). | |
| country | No | Two-letter ISO country code for region localization (default: 'in'). | in |
| language | No | Language code for the response (default: 'en'). | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | No | Whether the place was successfully found |
| place | No | The retrieved place object if found, otherwise null |
| query_or_id | Yes | The place query or Place ID searched for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the lookup behavior (by ID or name) and the return fields (address, phone, etc.), but does not mention rate limits, authentication requirements, or what happens if the place is not found. Adequate but not comprehensive.
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 two sentences, front-loaded with the main purpose, and each sentence adds essential information. No 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?
Given the tool's moderate complexity, the description covers the key purpose, parameter usage, and return value hints. The presence of an output schema reduces the need to describe return values. Minor gaps exist (e.g., error behavior), but overall it is sufficiently complete.
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 coverage is 100%, so the baseline is 3. The description adds value by explaining the two formats for the 'place' parameter (Google Place ID vs. name/location), which goes beyond the schema's description. This additional context justifies a 4.
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 clearly specifies the verb 'retrieve' and the resource 'detailed information for a single specific Google Maps place or business'. It distinguishes from sibling tool 'search_google_maps' by emphasizing single-place lookup vs. searching.
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 explains when to use this tool (to get details for a known place via ID or name) and implicitly distinguishes from searching. It does not explicitly state when not to use it or mention alternatives beyond the sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_google_mapsA
Search Google Maps for local businesses, places, points of interest, and services. Returns structured place data including business name, Google Place ID, category, formatted street address, phone numbers, website URL, geo-coordinates (latitude/longitude), star rating, total review count, and direct Google Maps URL.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of place results to return (between 1 and 50, default is 10). | |
| query | Yes | The search query for Google Maps. Can be a business category, specific place name, service, or landmark along with a location. Examples: 'coffee shops in Koramangala Bangalore', 'dentists near Connaught Place Delhi', 'Italian restaurants in Bandra Mumbai', 'hospitals in Hyderabad', 'electricians near Indiranagar', 'museums in London'. | |
| country | No | Two-letter ISO 3166-1 alpha-2 country code to localize search results and map boundaries. Default is 'in' (India). Other examples: 'us' (United States), 'gb' (United Kingdom), 'ca' (Canada), 'au' (Australia), 'de' (Germany), 'fr' (France), 'sg' (Singapore), 'ae' (UAE). | in |
| language | No | Language code for the results (e.g. 'en' for English, 'hi' for Hindi, 'es' for Spanish, 'fr' for French, 'de' for German, 'ja' for Japanese). Default is 'en'. | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | The search query that was executed |
| places | No | List of matched Google Maps places |
| country | Yes | The ISO 3166-1 alpha-2 country code used (e.g., 'in', 'us') |
| language | Yes | The language code used for results (e.g., 'en', 'hi') |
| total_results | Yes | Number of places returned in this response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states it returns structured place data listing 10 fields, which is helpful. However, it does not disclose potential rate limits, API quota implications, or any constraints on search frequency or result freshness. The behavioral disclosure is adequate but not comprehensive.
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 that front-loads the main action. It then lists the return fields, which is useful but slightly verbose for a search tool. It earns its place without unnecessary fluff.
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?
Given the tool's low complexity (4 params, 1 required, no nested objects) and presence of an output schema, the description is fairly complete. It explains the search scope and return fields. It could be improved by noting that results are limited by Google's ranking (not just the limit parameter) and how to formulate effective queries beyond the examples.
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 baseline is 3. The description adds no parameter-level detail beyond what the schema already provides. It lists the return fields but not how parameters affect them. Since the schema is already thorough, no penalty is applied.
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 specific verbs ('Search') and resources ('Google Maps for local businesses, places, points of interest, and services'), clearly distinguishing it from its sibling tool 'get_place_details' which would provide details on a specific place.
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 this tool is for broad searches (businesses, places, POIs), and the sibling tool name 'get_place_details' suggests the alternative for specific place info. However, no explicit when-to-use or when-not-to-use guidance is provided.
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.
2 tool updates
v0.1.0- First observed
get_place_details - First observed
search_google_maps
TDQS
The two tools have distinct purposes: search_google_maps finds places by query, and get_place_details retrieves details for a known place ID. There is slight overlap in the returned fields, but the use cases are clearly different.
Both tools use a clear verb_noun pattern (search/get + google_maps/place_details). The naming is consistent, though 'get_place_details' could be more symmetrical as 'get_google_maps_place' for perfect parity.
Only two tools for a Google Maps server is very limited. Maps APIs typically support additional operations like directions, geocoding, or place photos, so the tool count feels too small for the implied scope.
The core search and detail retrieval are present, but critical operations like navigation (directions), geocoding (address to coordinates and reverse), and place photo fetching are missing, creating significant gaps for common map-related tasks.
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
Live Google Maps business search, review, and photo data for AI agents over MCP.
Direct access to 40+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.
Google Maps places, reviews, contributor history, photos and posts as JSON. No Google Cloud.
Ground your AI applications with trusted geospatial data from Google Maps.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables location-aware AI agents to search for nearby places, get detailed place information including hours and ratings, and calculate routes with turn-by-turn directions using Google Maps APIs.22-
- AlicenseAqualityBmaintenanceEnables AI assistants to access Google Maps services including places search, details, directions, geocoding, and nearby search through natural language.62MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to search and scrape Google Maps places data (name, rating, address, etc.) directly without an API key.-
- AlicenseAqualityBmaintenanceEnables AI assistants to scrape Google Maps business data (names, addresses, phones, emails, websites, ratings, etc.) through natural language queries, with tools for synchronous and asynchronous scraping and credit checking.4493MIT
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/devsanthoshmk/gmaps-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server