Skip to main content
Glama

google-surf-mcp

✨アンチボット検索MCP:APIキー不要✨

English | 한국어

google-surf-mcp MCP server

demo

デモ用です。実際の検索はデフォルトでヘッドレス(ブラウザが表示されない状態)で実行されます。上のクリップのようにChromeを表示させるには SURF_HEADLESS=false を設定してください。

Google検索MCP。APIキー不要。そのまま使えます。

  • ✅ 実際に動作します(6つの無料Google検索MCPをテストしましたが、すべて失敗しました)

  • ✅ 検索とURL抽出を1つのMCPで実行(通常の検索MCP + 取得MCPの組み合わせを置き換えます)

  • ✅ 4つのツール:search / search_parallel / extract / search_extract

  • ✅ APIキー、プロキシ、ソルバー不要

  • ✅ 自動CAPTCHA復旧(Chromeが開き、人間が一度解決すると呼び出しが再試行されます)

  • extract におけるSSRFガード(デフォルトで localhost、プライベートIP、AWSメタデータをブロック)

概要

任意のMCPクライアントにプラグインするだけで、Google検索をツールとして利用できます。

CAPTCHAソルバーは不要です。いずれかのツールでCAPTCHAが発生すると、人間が解決するためのChromeウィンドウが開きます。解決するたびに、Googleに対するプロファイルの評価が維持されます。持続可能で倫理的な利用のために構築されています。

初回インストール時に約1秒のプロファイル準備が必要です(「インストール」を参照)。

ローカルでの使用を想定して設計されています。ステートレス/サーバーレス環境でのデプロイには適していません。

Related MCP server: Brave Search MCP Server

数値

結果

シーケンシャル

約1.5秒/クエリ(初回呼び出しは約4秒、セットアップを含む)

並列 x4

約1.5秒(初回呼び出しは約9秒、プール準備を含む)

並列 x10

約4.5秒

search_extract x5

約5秒(検索 + 5つの並列抽出)

1Gb/s接続のワークステーションで測定。

スタック

  • Playwright + 永続的なChromeプロファイル

  • playwright-extra ステルス機能

  • 高速化のための画像/メディア/フォントのリソースブロック

  • 初回実行前のワンショットプロファイルブートストラップ

  • 記事抽出のためのMozilla Readability + Turndown

インストール

Node 18以上とGoogle Chrome(またはChromium)がシステムに必要です。

npx google-surf-mcp   # actual MCP - register in client config

またはローカルクローン:

git clone https://github.com/HarimxChoi/google-surf-mcp
cd google-surf-mcp
npm install
npm run bootstrap

bootstrap を実行するとChromeウィンドウが開きます。そこで一度Google検索を実行し、閉じてください。これでプロファイルの準備が完了します。

必要に応じてパスを上書きしてください:

CHROME_PATH=/path/to/chrome SURF_TZ=America/New_York npm run bootstrap

Claude Codeでの使用

~/.claude.json に以下を貼り付けます:

{
  "mcpServers": {
    "google-surf": {
      "command": "npx",
      "args": ["-y", "google-surf-mcp"]
    }
  }
}

Claude Codeを再起動します。これで完了です。searchsearch_parallelextractsearch_extract が利用可能になります。

他のMCPクライアントの場合は、設定ファイルで同じJSON形式を使用してください。

ローカルクローン版:

{
  "mcpServers": {
    "google-surf": {
      "command": "node",
      "args": ["/abs/path/to/google-surf-mcp/build/index.js"]
    }
  }
}

ツール

  • search(query, limit?) - 単一クエリ、約1.5秒。タイトル/URL/スニペットを返します。スポンサー広告は除外されます。

  • search_parallel(queries[], limit?) - 4つのプール、1呼び出しあたり最大10クエリ。

  • extract(url, max_chars?) - URLを取得し、記事のマークダウンを返します(Readabilityを使用し、テキストフォールバックあり)。失敗時は { error } を返し、例外は投げません。

  • search_extract(query, limit?, max_chars?) - 検索 + 並列抽出を1回の呼び出しで実行。記事全文の内容で強化されたSERP結果を返します。ページごとの失敗は分離されます。

search_extract が最も強力です:SERPと記事全文の内容を1回の呼び出しで取得します。多くのエージェントが組み合わせている「検索MCP + URL取得MCP」の組み合わせを置き換えます。

環境変数

変数

デフォルト

備考

CHROME_PATH

自動検出

Chromeバイナリへの絶対パス

SURF_PROFILE_ROOT

~/.google-surf-mcp

プロファイルが保存される場所

SURF_LOCALE

en-US

ブラウザのロケール

SURF_TZ

システムのタイムゾーン

例: America/New_York

SURF_HEADLESS

true

false に設定するとChromeが可視状態で実行されます(デモ/デバッグ用)。CAPTCHA自動復旧は設定に関わらず常に可視状態で実行されます。

SURF_IDLE_CLOSE_MS

30000

シーケンシャルコンテキストとプールを閉じるまでのアイドル時間(ミリ秒)。0 で自動クローズを無効化。値を小さくするとクリーンアップが早くなり、大きくすると間隔の空いた呼び出しでキャッシュが温存されます。

SURF_ALLOW_PRIVATE

false

true に設定すると extract がプライベート/ループバックアドレス(localhost127.0.0.110.x192.168.x169.254.x など)を取得できるようになります。デフォルトではSSRFガードとしてこれらをブロックします。

トラブルシューティング

  • CAPTCHA: 可視状態のChromeウィンドウが自動的に開きます(4つのツールすべてで動作)。一度解決して検索を実行すれば、呼び出しが再試行され継続します。失敗時に即座に終了させたい場合は、ディスプレイなしで実行してください。

  • "Chrome not found": Chromeをインストールするか、CHROME_PATH を設定してください。

  • Stale selectors: Googleはクラス名を変更することがあります。プルリクエストを歓迎します。

変更履歴

CHANGELOG.md を参照してください。

ライセンス

MIT

Install Server
A
license - permissive license
A
quality
C
maintenance

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