google_search_autocomplete
Retrieve Google search results with configurable country, location, language, page, and autocorrect options.
Instructions
Search Google for results
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | The query to search for | |
| gl | No | The country to search in, e.g. us, uk, ca, au, etc. | |
| location | No | The location to search in, e.g. San Francisco, CA, USA | |
| hl | No | The language to search in, e.g. en, es, fr, de, etc. | |
| page | No | The page number to return, first page is 1 (integer value as string) | 1 |
| autocorrect | No | Automatically correct (boolean value as string: 'true' or 'false') | true |
Implementation Reference
- src/serper_mcp_server/core.py:14-39 (handler)Core handler: when google_search_autocomplete is called, this parses the tool name's last segment ('autocomplete') to build the Serper API URL (https://google.serper.dev/autocomplete) and delegates to fetch_json.
async def google(tool: SerperTools, request: BaseModel) -> Dict[str, Any]: uri_path = tool.value.split("_")[-1] url = f"https://google.serper.dev/{uri_path}" return await fetch_json(url, request) async def scape(request: WebpageRequest) -> Dict[str, Any]: url = "https://scrape.serper.dev" return await fetch_json(url, request) async def fetch_json(url: str, request: BaseModel) -> Dict[str, Any]: payload = request.model_dump(exclude_none=True) headers = { 'X-API-KEY': SERPER_API_KEY, 'Content-Type': 'application/json' } ssl_context = ssl.create_default_context(cafile=certifi.where()) connector = aiohttp.TCPConnector(ssl=ssl_context) timeout = aiohttp.ClientTimeout(total=AIOHTTP_TIMEOUT) async with aiohttp.ClientSession(connector=connector, timeout=timeout) as session: async with session.post(url, headers=headers, json=payload) as response: response.raise_for_status() return await response.json() - Pydantic schema for the google_search_autocomplete tool input. Extends BaseRequest (q, gl, location, hl, page) with an autocorrect field.
class AutocorrectRequest(BaseRequest): autocorrect: Optional[str] = Field( "true", pattern=r"^(true|false)$", description="Automatically correct (boolean value as string: 'true' or 'false')", ) - src/serper_mcp_server/server.py:45-50 (registration)Tool registration via MCP list_tools: iterates google_request_map including GOOGLE_SEARCH_AUTOCOMPLETE to register the tool with its schema.
for k, v in google_request_map.items(): tools.append( Tool( name=k.value, description="Search Google for results", inputSchema=v.model_json_schema(), - src/serper_mcp_server/enums.py:16-16 (helper)Enum definition mapping 'google_search_autocomplete' string to SerperTools.GOOGLE_SEARCH_AUTOCOMPLETE.
GOOGLE_SEARCH_AUTOCOMPLETE = "google_search_autocomplete" - src/serper_mcp_server/server.py:25-38 (registration)Map that associates the GOOGLE_SEARCH_AUTOCOMPLETE enum value with the AutocorrectRequest schema, used by call_tool to dispatch.
google_request_map = { SerperTools.GOOGLE_SEARCH: SearchRequest, SerperTools.GOOGLE_SEARCH_IMAGES: SearchRequest, SerperTools.GOOGLE_SEARCH_VIDEOS: SearchRequest, SerperTools.GOOGLE_SEARCH_PLACES: AutocorrectRequest, SerperTools.GOOGLE_SEARCH_MAPS: MapsRequest, SerperTools.GOOGLE_SEARCH_REVIEWS: ReviewsRequest, SerperTools.GOOGLE_SEARCH_NEWS: SearchRequest, SerperTools.GOOGLE_SEARCH_SHOPPING: ShoppingRequest, SerperTools.GOOGLE_SEARCH_LENS: LensRequest, SerperTools.GOOGLE_SEARCH_SCHOLAR: AutocorrectRequest, SerperTools.GOOGLE_SEARCH_PATENTS: PatentsRequest, SerperTools.GOOGLE_SEARCH_AUTOCOMPLETE: AutocorrectRequest, }