google-search-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_MCP_LOCALE | No | Browser locale, e.g. en-US | |
| GOOGLE_MCP_PROFILE | No | Which signed-in profile to use; one per agent | default |
| GOOGLE_MCP_HEADLESS | No | Headless is a different fingerprint; verify against /sorry/ before trusting it | 0 |
| GOOGLE_MCP_TIMEZONE | No | Browser timezone, e.g. Europe/Berlin | |
| GOOGLE_MCP_OFFSCREEN | No | Park the window offscreen instead of taking over the desktop | 1 |
| GOOGLE_MCP_SESSION_ROOT | No | Where profiles live. Defaults to per-OS user data dir |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| google_session_statusA | Whether the dedicated profile has a live Google session, and which account it is. Worth calling once before relying on personalization: signed out still works, it just returns the neutral (unpersonalized) view. The account is read off the page rather than assumed, because "whoever was signed in" is not a safe default on a box with more than one Google account. |
| google_searchA | Search Google. Ads stripped; results are {rank, title, url, host, snippet, date}. Use the structured arguments rather than typing operators into site='arxiv.org' restrict to one domain filetype='pdf' only PDFs exact='model context protocol' quoted phrase, must appear verbatim exclude=['tutorial'] drop results containing a term after='2026-01-01' published after a date (before= for the other bound) freshness='week' hour | day | week | month | year verbatim=True no synonyms or stemming; the words as typed strict_dates=True apply before/after as Tools > Custom range instead of as query operators (index date rather than document date) country='de', lang='de' region and language bias personalized=False the neutral view, no account history applied
web the default SERP, including rich blocks
web_only the "Web" tab -- plain links, no rich blocks. Cleanest for research;
measured 17 external anchors against 56 on the default SERP.
news news, with dates
videos video results
short_videos the shorts feed
books Google Books (results are google-hosted by nature)
images the image grid; single page,
On failure the result carries a |
| google_fetchA | Read web pages as markdown, through the warmed logged-in browser. Use this instead of a plain HTTP fetch when the page needs a real browser: JS-rendered apps, soft paywalls, cookie-walled articles, anything behind the Google login. That capability is the whole point -- for a static public page an ordinary fetch is cheaper. Boilerplate (nav, footers, cookie banners, related-story rails) is stripped and only the article body comes back, so the payload is a fraction of the raw HTML. Output is markdown, which keeps headings, lists and code fences intact. Capped at 5 URLs per call and read sequentially with per-host throttling -- this is a
real browser making real requests. A page that cannot be read comes back with |
| google_ai_modeA | Google's AI Mode answer for a query, with the sources it cites. The answer is unreliable. Treat it as a lead, never as a fact. It is hit or miss, it is confidently wrong at the same tone it is right, and it is not authoritative even about Google's own products -- which is the trap, because those are exactly the queries where it reads most credible. Nothing from here should reach a user, a document or a decision without being confirmed against a real source. The Absence is normal. AI Mode is not offered for every query, region or account. When
it is not there you get Slower than a search: the answer streams, and this polls until it stops growing (typically ~4s, capped at 20s). |
| google_multi_searchA | Run several related queries in one call. Prefer this when researching a topic. Google makes you search, read ten results, then search again -- and every separate tool call otherwise pays the browser launch and warm-up again. This amortises that across the whole set. Runs sequentially on purpose: concurrent requests are exactly what Google's anti-bot watches for, so the win here is the shared warm browser, not parallelism. Budget roughly 5-7 seconds per query after the first. One failing query does not sink the call -- failures land in |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool serves a distinct purpose: session status, single search, page fetch, AI mode, and batch search. google_search and google_multi_search overlap in search capability, but the latter is explicitly framed as a batching tool for research, so agents can select appropriately.
All tools share the google_ prefix and are descriptively named, but the second part mixes verbs (search, fetch), nouns (session_status, ai_mode), and a compound (multi_search). This minor inconsistency doesn't obscure meaning.
Five tools is well-scoped for a search-focused server: it covers the core operations without redundancy or bloat. Each tool addresses a specific need, from session verification to batch research.
The set covers the complete search workflow: verify session, search across verticals, fetch full page content, get AI-generated overviews, and run multiple queries in one call. No obvious gaps for the stated purpose.