Google Trends Mcp

io.github.den-indance由 GitHub 账号 den-indance 发布v1.0.0更新于 Oct 24, 2026

Google Trends MCP with proxy rotation, auto-retry on Google blocks, residential-proxy setup.

概览

AI 生成的概览

本地 MCP 服务器,让助手获取实时 Google Trends 数据——关键词热度走势、相关查询和地区热度,并带代理轮换与重试。

可以做什么
  • 对比最多 5 个关键词的搜索热度走势,返回相对分数时间线
  • 获取某个关键词的热门与上升相关查询
  • 列出对某关键词兴趣最高的前 20 个地区
  • 查看代理池状态(来源、可用数量、缓存时间、新鲜度)
  • 强制重新校验当前配置的代理来源
适用场景
当需要助手基于实时 Google Trends 数据回答搜索需求、关键词对比、相关搜索或地区兴趣等问题,并且你能提供轮换代理以保证稳定性时使用。
运行要求
通过 npx 在本地运行(需要 Node.js)。Google 侧无需账号或 API 密钥。建议配置轮换代理:设置 PROXY_URL,或用 PROXY_LIST / PROXY_LIST_FILE 提供含凭据的代理地址。PROXIES_ENABLED=false 可关闭代理逻辑。需要能访问 Google Trends 的网络。
安装前请注意
代理凭据通过环境变量(PROXY_URL、PROXY_LIST)或代理列表文件传入,应限制文件权限并避免提交到版本库。代理是第三方服务,可能按流量计费。请求发往 Google 未公开的内部接口,被拦截时会失败。服务器会在本地写入 proxies.json 缓存。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Google Trends Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Google Trends MCP

[npm] [smithery badge] [GitHub] [MIT License]

The Google Trends MCP server that actually works under Google's anti-bot. Connect Claude to live Google Trends data — keyword interest, related queries, regional popularity.

Most Google Trends MCP packages crash with Unexpected token 'l' the moment Google blocks them (which is often). Free public proxy lists don't help — we tested 64 proxies from a popular "high-quality" list and 0 worked. This one uses your own rotating proxy with auto-retry, so blocked requests transparently retry on a fresh IP.

Built by Denys Malieiev.


Why this one

What's fixedDetail
Free public proxies don't workWe tested 64 — 0 survived. Bring your own rotating residential (Webshare/IPRoyal/Smartproxy free tier = ~46k requests on 1 GB)
Auto-retry on Google blocksWhen Google returns HTML, we retry up to 3 times with a fresh proxy from the pool. End-to-end success rate in our tests: 5/5
HTML-detection at the wrapper levelOther MCPs let JSON.parse crash with cryptic errors. We detect HTML before parsing
Honest about what doesn't workget_trending_searches is intentionally not exposed — Google blocks dailyTrends/realTimeTrends aggressively without residential proxies. We don't pretend otherwise
Pool with fail-trackingProxies that fail 3 times get dropped automatically. Random rotation per request
Per-request rotationEach request picks a random proxy from the pool — Google can't accumulate per-IP rate limits

Quick Start

bash
npx @den.dance/google-trends-mcp

Works out-of-the-box from non-flagged IPs, but Google rate-limits datacenter ranges aggressively. For reliable use, set up a proxy (see below).


Setup

1. Get a rotating proxy account

Recommended (all have free tiers / pay-per-GB):

  • Webshare — free 1 GB residential (~46k Google Trends requests)
  • IPRoyal — $1.75/GB, lowest price
  • Smartproxy / Decodo — $4-7/GB, large pool
  • Bright Data / Oxylabs — $5-8/GB, enterprise grade

Make sure the provider allows *.google.com in their ToS (most majors do).

2. Configure Claude Desktop

Edit your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Single rotating endpoint (recommended — provider rotates IPs internally):

json
{  "mcpServers": {    "google-trends": {      "command": "npx",      "args": ["@den.dance/google-trends-mcp"],      "env": {        "PROXY_URL": "http://USER:[email protected]:7000"      }    }  }}

Or an explicit list (useful for Webshare-style per-port proxies):

json
{  "mcpServers": {    "google-trends": {      "command": "npx",      "args": ["@den.dance/google-trends-mcp"],      "env": {        "PROXY_LIST": "http://user:pass@host1:6114,http://user:pass@host2:6014,http://user:pass@host3:5863"      }    }  }}

For longer lists, put proxies in a file (one per line, # comments allowed) and point to it:

json
{  "mcpServers": {    "google-trends": {      "command": "npx",      "args": ["@den.dance/google-trends-mcp"],      "env": {        "PROXY_LIST_FILE": "/home/you/.config/google-trends/proxies.txt"      }    }  }}
# ~/.config/google-trends/proxies.txthttp://user:pass@host1:6114http://user:pass@host2:6014http://user:pass@host3:5863

chmod 600 the file — credentials live there. Run proxy_refresh from Claude to hot-reload after editing.

Restart Claude Desktop after saving the JSON config.

3. Configure Claude Code

bash
claude mcp add google-trends \  -e PROXY_URL="http://USER:[email protected]:7000" \  -- npx @den.dance/google-trends-mcp

Environment Variables

VariableRequiredDescription
PROXY_URLrecommendedSingle rotating proxy endpoint. Provider handles IP rotation internally. No validation, no fallback
PROXY_LISTalternativeComma-separated list of proxies (http://user:pass@host:port,...). Validated on startup, bad ones auto-dropped
PROXY_LIST_FILEalternativePath to a file with one proxy per line (# comments and blank lines allowed). Validated on startup. Re-read on proxy_refresh
PROXIES_ENABLEDnoSet to false to disable all proxy logic (direct requests). Default: enabled

Priority: PROXY_URL > PROXY_LIST > PROXY_LIST_FILE. If none are set, requests go direct (no proxy) — works only from non-flagged IPs.


Tools

Data tools

  • compare_keywords — search interest over time for up to 5 keywords. Returns a timeline of relative scores.
  • get_related_queries — top + rising related queries for a keyword. Powered by Google's relatedQueries endpoint.
  • get_interest_by_region — top 20 regions by interest in a keyword.

Admin tools

  • proxy_status — show source (single / env-list / env-file / none / disabled), working count, age, freshness, validation progress.
  • proxy_refresh — force re-validation of the current proxy source. No-op in PROXY_URL mode.

Intentionally not exposed

  • get_trending_searches (daily / real-time trends) — Google blocks these endpoints aggressively. Even with residential proxies the success rate is too low to ship. We'd rather not lie about it.

Known limitations

  • Google sometimes blocks multi-keyword requests (2 or 4 keywords) more aggressively than single. Our auto-retry handles this — but if all 3 attempts hit blocks, the request fails. Increase MAX_ATTEMPTS in trends-client.js if you need higher tolerance.
  • The underlying google-trends-api library scrapes Google's internal endpoints, which are undocumented and can change. If the library breaks, this MCP breaks too.
  • For very heavy use (>10k req/day) consider a managed service like SerpAPI or DataForSEO — at that scale the price difference vs your own proxy is marginal and the operational burden disappears.

Example prompts for Claude

  • "Compare search interest for 'claude ai', 'chatgpt', and 'gemini' over the last 12 months"
  • "What are people searching for related to 'sourdough bread'?"
  • "Which regions have highest interest in 'electric vehicle'?"
  • "Show me the proxy pool status"

Architecture notes

  • ~450 lines total across server.js (MCP handlers), proxy-manager.js (pool/cache), trends-client.js (retry logic with DI)
  • Validation: parallel workers (concurrency 50) check each proxy against trends.google.com/api/autocomplete/test, looking for the anti-XSSI prefix )]}' in the response
  • Cache: working proxies persisted to proxies.json (gitignored), keyed by SHA1 of input list — automatically invalidated when source changes
  • TTL: 4 hours; background re-validation when cache is stale
  • Fail tracking: proxies drop from rotation after 3 failures per session
  • Retry: every tool call retries up to 3 times with fresh getAgent() on HTML response or exception

Development

Tests

bash
# Unit only (fast, offline, no network)npm test
# With coverage report (html in coverage/)npm run test:coverage
# Integration (real Google hit, gated)RUN_INTEGRATION=1 npm run test:integration
# E2E (spawns server.js, JSON-RPC over stdio)RUN_E2E=1 npm run test:e2e
# Everythingnpm run test:all

Project structure

  • server.js — MCP server entrypoint (stdio transport)
  • trends-client.js — Google Trends API wrapper with retry-on-HTML
  • proxy-manager.js — proxy pool, validation, cache, source priority
  • tests/unit/ — pure unit tests, no network (~40 tests, runs in ~2s)
  • tests/integration/ — real Google endpoint tests (gated by RUN_INTEGRATION=1)
  • tests/e2e/ — full MCP protocol tests via spawn (gated by RUN_E2E=1)

Security

  • Never commit proxy credentials to version control. Use PROXY_LIST_FILE pointing to a chmod 600 file outside the repo, or your secrets manager
  • proxies.json cache (built from validated proxies) is gitignored and never published — re-generated on first run after install

License

MIT

来源:README.md,提交 2831f0d

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.0.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分