google-trends-mcp について
google-trends-mcpは、Google Trendsの検索関心データをMCPクライアントに提供し、キーワードや地域ごとの分析に使えます。プロキシのローテーションとブロック時の再試行に対応し、Googleに頻繁に遮断されるトレンド一覧の取得は提供しません。
主な機能
- 01最大5件のキーワード関心度を比較
- 02関連クエリの取得
- 03キーワードの地域別関心度を表示
- 04プロキシのローテーションと失敗分の除外
- 05ブロック時の再試行とHTML検出
活用シーン
- 01複数キーワードの検索トレンド比較
- 02テーマに関連するクエリの発見
- 03関心度の高い地域の特定
MCP 対応
MCPサーバーとして、キーワード関心度、関連クエリ、地域別関心度のツールに加え、プロキシ状態の確認と更新ツールをクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @den.dance/google-trends-mcpPROXY_URLシークレットSingle rotating proxy endpoint (e.g. http://user:[email protected]:7000). Provider handles IP rotation.PROXY_LISTシークレットComma-separated proxy list (http://user:pass@host:port,...). Validated on startup, bad ones auto-dropped.PROXY_LIST_FILEPath to a file with one proxy URL per line (# comments allowed). Validated on startup, re-read on proxy_refresh.PROXIES_ENABLEDSet to false to disable proxy logic and use direct requests. Default: enabled.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| geo | string | いいえ | 国コード。例:US、RU(デフォルト:全世界) |
| keywords | array | はい | 最大 5 個のキーワード |
| timeframe | string | いいえ | 例:today 12-m、today 5-y |
詳細
Google Trends MCP
Google のボット対策のもとでも実際に動作する Google Trends MCP サーバーです。Claude を Google Trends の最新データ(キーワードへの関心度、関連する検索キーワード、地域別の人気度)に接続します。
ほとんどの Google Trends MCP パッケージは、Google にブロックされた途端(よくあることです)に Unexpected token 'l' でクラッシュします。無料の公開プロキシリストも役に立ちません。「高品質」とされる人気リストから64個のプロキシをテストしましたが、動作したものは0個でした。このパッケージでは、独自のローテーションプロキシと自動再試行を使用するため、ブロックされたリクエストは新しい IP で透過的に再試行されます。
Denys Malieiev が開発しました。
このパッケージを選ぶ理由
| 改善点 | 詳細 |
|---|---|
| 無料の公開プロキシは動作しません | 64個をテストしましたが、使えたものは0個でした。独自のローテーション型レジデンシャルプロキシをご用意ください(Webshare/IPRoyal/Smartproxy の無料プランでは、1 GB で約46,000件のリクエストを利用できます) |
| Google にブロックされた際の自動再試行 | Google が HTML を返すと、プロキシプールから新しいプロキシを使って最大3回再試行します。テストでのエンドツーエンドの成功率は5/5です |
| ラッパーレベルでの HTML 検出 | 他の MCP では、JSON.parse がわかりにくいエラーでクラッシュします。このパッケージでは、解析の前に HTML を検出します |
| 動作しない機能についても正直に説明 | get_trending_searches は意図的に公開していません。Google はレジデンシャルプロキシなしでは dailyTrends/realTimeTrends を積極的にブロックします。その事実を隠すことはありません |
| 失敗を追跡するプロキシプール | 3回失敗したプロキシは自動的に除外されます。リクエストごとにランダムにローテーションします |
| リクエストごとのローテーション | 各リクエストでプールからランダムなプロキシを選択するため、Google は IP ごとのレート制限を蓄積できません |
クイックスタート
npx @den.dance/google-trends-mcp
フラグが設定されていない IP からは、そのまま動作します。ただし、Google はデータセンターの IP アドレス範囲に対して積極的にレート制限を行います。安定して利用するには、プロキシを設定してください(下記を参照)。
セットアップ
1. ローテーションプロキシのアカウントを取得する
推奨プロバイダー(いずれも無料プランまたは従量課金制です):
- Webshare — 無料のレジデンシャルプロキシ 1 GB(Google Trends のリクエスト約46,000件分)
- IPRoyal — $1.75/GB、最安値
- Smartproxy / Decodo — $4-7/GB、大規模なプール
- Bright Data / Oxylabs — $5-8/GB、エンタープライズグレード
プロバイダーの利用規約で *.google.com が許可されていることを確認してください(大手のほとんどは許可しています)。
2. Claude Desktop を設定する
Claude Desktop の設定ファイルを編集します。
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
単一のローテーションエンドポイント(推奨。プロバイダー側で IP をローテーションします):
{
"mcpServers": {
"google-trends": {
"command": "npx",
"args": ["@den.dance/google-trends-mcp"],
"env": {
"PROXY_URL": "http://USER:[email protected]:7000"
}
}
}
}
または、明示的なリスト(Webshare のようなポートごとのプロキシで便利です):
{
"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"
}
}
}
}
リストが長い場合は、プロキシをファイル(1行に1つ。# コメントを使用できます)に記述し、そのファイルを指定します。
{
"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.txt
http://user:pass@host1:6114
http://user:pass@host2:6014
http://user:pass@host3:5863
ファイルに chmod 600 を設定してください。認証情報はそのファイルに保存されます。編集後、Claude から proxy_refresh を実行すると、再起動せずに設定を再読み込みできます。
JSON 設定を保存した後、Claude Desktop を再起動してください。
3. Claude Code を設定する
claude mcp add google-trends \
-e PROXY_URL="http://USER:[email protected]:7000" \
-- npx @den.dance/google-trends-mcp
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
PROXY_URL | 推奨 | ローテーションする単一のプロキシエンドポイントです。プロバイダーが内部で IP ローテーションを処理します。検証もフォールバックもありません |
PROXY_LIST | 代替 | プロキシのコンマ区切りリスト(http://user:pass@host:port,...)です。起動時に検証され、問題のあるものは自動的に除外されます |
PROXY_LIST_FILE | 代替 | 1 行につき 1 つのプロキシを記載したファイルへのパスです(# コメントと空行を使用できます)。起動時に検証されます。proxy_refresh の実行時に再読み込みされます |
PROXIES_ENABLED | いいえ | すべてのプロキシ処理を無効にするには false を設定します(直接リクエスト)。デフォルトは有効です |
優先順位:PROXY_URL > PROXY_LIST > PROXY_LIST_FILE。いずれも設定されていない場合、リクエストはプロキシを使わずに直接送信されます。これはフラグが立てられていない IP からのみ機能します。
ツール
データツール
compare_keywords— 最大 5 個のキーワードの検索関心度を時系列で比較します。相対スコアの推移を返します。get_related_queries— キーワードに関連する上位および急上昇中の検索クエリを取得します。Google のrelatedQueriesエンドポイントを利用します。get_interest_by_region— キーワードへの関心度が高い上位 20 地域を取得します。
管理ツール
proxy_status— ソース(single/env-list/env-file/none/disabled)、稼働中の件数、経過時間、鮮度、検証の進捗を表示します。proxy_refresh— 現在のプロキシソースを強制的に再検証します。PROXY_URLモードでは何も行いません。
意図的に公開していないツール
get_trending_searches(日次/リアルタイムのトレンド) — Google はこれらのエンドポイントを積極的にブロックします。住宅用プロキシを使っても成功率が低すぎるため、提供できません。実際以上のことを謳うのは避けたいと考えています。
既知の制限事項
- Google は、複数キーワードのリクエスト(2 個または 4 個)を単一キーワードの場合より積極的にブロックすることがあります。自動再試行で対処しますが、3 回の試行がすべてブロックされるとリクエストは失敗します。より高い許容度が必要な場合は、
trends-client.jsのMAX_ATTEMPTSを増やしてください。 - 基盤となる
google-trends-apiライブラリは、文書化されておらず変更される可能性がある Google の内部エンドポイントをスクレイピングします。ライブラリが動作しなくなると、この MCP も動作しなくなります。 - 非常に大量に利用する場合(1 日あたり 10,000 リクエスト超)は、SerpAPI や DataForSEO などのマネージドサービスを検討してください。その規模では、自前のプロキシとの価格差はわずかで、運用上の負担もなくなります。
Claude 向けプロンプト例
- 「過去 12 か月間の『claude ai』『chatgpt』『gemini』の検索関心度を比較してください」
- 「『sourdough bread』に関連して、どんな検索が行われていますか?」
- 「『electric vehicle』への関心度が最も高い地域はどこですか?」
- 「プロキシプールの状態を表示してください」
アーキテクチャに関する注記
server.js(MCP ハンドラー)、proxy-manager.js(プール/キャッシュ)、trends-client.js(DI を使用した再試行ロジック)全体で約 450 行- 検証:並列ワーカー(同時実行数 50)が各プロキシを
trends.google.com/api/autocomplete/testに対して確認し、レスポンス内の anti-XSSI プレフィックス)]}'を探します - キャッシュ:稼働中のプロキシは
proxies.json(gitignore 対象)に保存され、入力リストの SHA1 をキーとして使用します。ソースが変更されると自動的に無効化されます - TTL:4 時間。キャッシュが古くなるとバックグラウンドで再検証します
- 失敗の追跡:セッションごとに 3 回失敗したプロキシはローテーション対象から除外されます
- 再試行:HTML レスポンスまたは例外が発生した場合、各ツール呼び出しで新しい
getAgent()を使って最大 3 回再試行します
開発
テスト
# 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
# Everything
npm run test:all
プロジェクト構成
server.js— MCP サーバーのエントリーポイント(stdio トランスポート)trends-client.js— HTML レスポンス時に再試行する Google Trends API ラッパーproxy-manager.js— プロキシプール、検証、キャッシュ、ソースの優先順位tests/unit/— ネットワークを使わない純粋な単体テスト(約 40 件、約 2 秒で実行)tests/integration/— Google の実際のエンドポイントを使うテスト(RUN_INTEGRATION=1で実行)tests/e2e/— spawn を介した MCP プロトコルの全体テスト(RUN_E2E=1で実行)
セキュリティ
- プロキシ認証情報をバージョン管理にコミットしないでください。リポジトリ外にある
chmod 600のファイル、またはシークレットマネージャーを指すPROXY_LIST_FILEを使用してください。 - 検証済みプロキシから生成される
proxies.jsonキャッシュは Git の追跡対象外であり、公開されません。インストール後、初回実行時に再生成されます。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。