google-surf-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SURF_TZ | No | Timezone for the browser (e.g. America/New_York, default: system timezone) | |
| CHROME_PATH | No | Absolute path to Chrome binary (auto-detected if not set) | |
| SURF_LOCALE | No | Browser locale (default: en-US) | |
| SURF_HEADLESS | No | Set to 'false' to run Chrome visibly (default: 'true') | |
| SURF_PROFILE_ROOT | No | Directory where the warm Chrome profile lives (default: ~/.google-surf-mcp) | |
| SURF_IDLE_CLOSE_MS | No | Idle milliseconds before closing browser contexts (default: '30000') |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search | Single Google search -> title/url/snippet per result. Results are cached 24h, so repeating a query is free -- prefer re-querying over caching results yourself. For latest/today/breaking queries set SURF_CACHE_TTL_SEARCH_MS=0 to bypass the cache. Default limit 10 (max 20). First call ~4s (Chromium warmup), then ~2s. On CAPTCHA a visible Chrome opens for a human to solve (shared-IP protection); SURF_CLOUD_MODE=true makes it fail-fast instead. |
| search_parallel | Run 2-10 Google searches concurrently. Use to compare multiple angles in one call. Each query counts against the internal rate limit (~10/min) -- do not loop this for bulk scraping. First call adds 5-10s pool warmup. Per-query failures are isolated in the results array. Disabled in cloud mode. |
| extract | Fetch one public URL -> clean article text. HTML via Mozilla Readability; academic PDFs (arxiv/biorxiv/Nature/OpenReview/NeurIPS/JMLR/PMLR/Springer/PubMed-via-PMC) auto-detected via Content-Type, %PDF magic, citation_pdf_url meta, and per-domain URL rules. Tiered depth: |
| search_extract | One-shot Google search + parallel extract of the top results. Default |
| health | MCP server status: cascade mode + transitions, rate-limiter usage, cache size, config. Call this if searches start failing or returning empty -- check cascade.totalCaptchas and rateLimiter.queueSize, and reduce search volume if they are high. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
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/HarimxChoi/google-surf-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server