serp_google_maps
Search Google Maps for locations and get structured results including places, addresses, and contact info. Supports pagination, country, and language filters for localized searches.
Instructions
Search Google Maps for locations.
Performs a Google Maps search and returns structured map results.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query string for maps/location search. Required. | |
| country | No | Country code for localized results (e.g., 'us', 'cn', 'uk'). Default is 'us'. | |
| language | No | Language code for results (e.g., 'en', 'zh-cn', 'fr'). Default is 'en'. | |
| number | No | Number of results per page (default: 10). Note: More than 10 results may incur additional credits. | |
| page | No | Page number for pagination (default: 1). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- tools/search_tools.py:301-342 (handler)The async function that handles the 'serp_google_maps' MCP tool. It delegates to serp_google_search with search_type='maps'.
@mcp.tool() async def serp_google_maps( query: Annotated[ str, Field(description="The search query string for maps/location search. Required."), ], country: Annotated[ str | None, Field( description="Country code for localized results (e.g., 'us', 'cn', 'uk'). Default is 'us'." ), ] = None, language: Annotated[ str | None, Field( description="Language code for results (e.g., 'en', 'zh-cn', 'fr'). Default is 'en'." ), ] = None, number: Annotated[ int | None, Field( description="Number of results per page (default: 10). Note: More than 10 results may incur additional credits." ), ] = None, page: Annotated[ int | None, Field(description="Page number for pagination (default: 1)."), ] = None, ) -> str: """Search Google Maps for locations. Performs a Google Maps search and returns structured map results. """ result: str = await serp_google_search( query=query, search_type="maps", country=country, language=language, number=number, page=page, ) return result - main.py:174-174 (registration)Registration of the 'serp_google_maps' tool in the MCP server's tool list in main.py.
{"name": "serp_google_maps", "description": "Search Google Maps"}, - tools/search_tools.py:88-115 (helper)The underlying serp_google_search function that serp_google_maps delegates to, building the API payload with search_type='maps'.
try: # Build payload payload: dict = {"query": query, "type": search_type} if country: payload["country"] = country if language: payload["language"] = language if time_range: payload["range"] = time_range if number: payload["number"] = number if page: payload["page"] = page result = await client.search(**payload) if not result: return json.dumps({"error": "No results found for your query."}) return json.dumps(result, ensure_ascii=False, indent=2) except SerpAuthError as e: return json.dumps({"error": "Authentication Error", "message": e.message}) except SerpAPIError as e: return json.dumps({"error": "API Error", "message": e.message}) except Exception as e: return json.dumps({"error": "Error performing search", "message": str(e)}) - main.py:123-123 (registration)Listing the tool in the terminal/console output during startup.
safe_print(" - serp_google_maps") - tools/search_tools.py:302-329 (schema)Pydantic Field annotations defining input parameters (query, country, language, number, page) for the serp_google_maps tool.
async def serp_google_maps( query: Annotated[ str, Field(description="The search query string for maps/location search. Required."), ], country: Annotated[ str | None, Field( description="Country code for localized results (e.g., 'us', 'cn', 'uk'). Default is 'us'." ), ] = None, language: Annotated[ str | None, Field( description="Language code for results (e.g., 'en', 'zh-cn', 'fr'). Default is 'en'." ), ] = None, number: Annotated[ int | None, Field( description="Number of results per page (default: 10). Note: More than 10 results may incur additional credits." ), ] = None, page: Annotated[ int | None, Field(description="Page number for pagination (default: 1)."), ] = None, ) -> str: