dsh-google-chrome-search
dsh-google-chrome-search
DeepSeek Harness (DSH) プラグインで、AIエージェントがローカルのChromeブラウザをCDP(Chrome DevTools Protocol)経由で操作して、実際のGoogleウェブ検索を実行し、任意のページをレンダリングしてコンテンツを抽出できるようにします。検索APIキーは不要で、マシンにインストール済みのChromeで動作します。
Googleは自動化されたトラフィックやデータセンターからのトラフィックに対して、人間による検証ページ(CAPTCHA /「異常なトラフィック」)を頻繁に表示します。その場合、このプラグインは検証ページを指す可視のChromeウィンドウを開き、人間が解決するのを待って、信頼されたセッションから結果を抽出します。これが「人間に尋ねる」ステップです。設計上、エージェントはCAPTCHAを自分で解決しようとはしません。

提供されるもの
構成要素 | パス | 目的 |
コアエンジン |
| Chrome/CDPによるGoogle検索 + CAPTCHA検証 + 結果抽出 |
ページエンジン |
| 任意のURLをレンダリング + 読みやすいコンテンツを抽出(Mozilla Readability)+ |
MCPサーバー |
| stdio経由で |
CLI |
| 直接使用するための |
スキル |
| エージェントに使用方法と人間による検証ワークフローを教える |
Related MCP server: browser-search-mcp
要件
Node.js ≥ 18(Node 22でテスト済み)
ローカルのChrome/Chromiumバイナリ(例:
google-chrome、chromium)。一般的なパスから自動検出されます。CHROME_PATHまたは--chromeで上書きできます。可視の検証ステップには、ディスプレイを備えたデスクトップセッションが必要です(Chromeウィンドウを人間に表示するため)。ヘッドレス/SSHでもCAPTCHAを検出して報告できます(スクリーンショット付き)。
インストール
git clone https://github.com/davidcastilloalvarado/dsh-google-chrome-search.git
cd dsh-google-chrome-search
npm install依存関係:puppeteer-core(あなたのChromeを操作します。ブラウザをダウンロードしません)、@modelcontextprotocol/sdk(MCPサーバー用)、@mozilla/readability(コンテンツ抽出)、zod(スキーマ検証)。
オプションでCLIをグローバルにリンクしてPATHに含めることもできます:
npm link # gives you: dsh-google-search "<query>"CLIの使用
# Search:
node bin/google-search.mjs "nodejs streams" --max 8
# or, after npm install / npm link:
npm run search -- "nodejs streams" --json
# Search, then render + extract the top 3 result pages:
node bin/google-search.mjs "nodejs streams" --max 8 --fetch-top 3 --fetch-max-chars 8000
# Fetch one URL directly (render + extract readable content):
node bin/google-search.mjs fetch "https://nodejs.org/api/stream.html" --max-chars 8000終了コード:0 = 成功(結果 / 取得したコンテンツ)、2 = 検証が必要(CAPTCHA)、3 = 結果なし / フェッチがブロックまたは失敗、1 = エラー、64 = 使用方法。
ページのフェッチ(レンダリング + 抽出)
このプラグインは任意のURLをレンダリングし、読みやすいメインコンテンツを抽出することもできます:
ページを同じ専用Chromeプロファイルで実行します(一貫した信頼されたフィンガープリントを見るサイトの動作が良くなります)。
ページが完全に読み込まれるまで待機します(遅延SPAコンテンツを含む)。
ライブページ内で実行されるMozilla Readabilityを使用して記事を抽出します。ページに明確な記事がない場合は、ページ全体のテキストにフォールバックします。
出力は上限付き(デフォルトではページあたり8,000文字)で、エージェントのコンテキストに適したサイズに保ちます。
アンチボットウォールを検出し、無意味なデータを返す代わりに
blockedを報告します。サイトが人間による検証チャレンジ(例:DataDomeの「スライドして続行」ウォール)を提供する場合、ページを含む可視のChromeウィンドウを開き、人間が通過するのをverifyTimeoutMsまで待ってから、実際のコンテンツを抽出します。これはGoogle CAPTCHAフローと同じ「人間に手渡す」哲学です。信頼されたセッションCookieはプロファイルに残るため、そのサイトの後続ページは通常ヘッドレスで通過します。--no-verify/autoVerify: falseを使用すると、代わりにblockedを報告するだけになります。
dsh-google-search fetch "https://example.com/article" --max-chars 10000
dsh-google-search fetch "https://example.com/article" --html --screenshot検索と読み取りを組み合わせる2つの方法:
内容 | 方法 |
検索して上位Nページを1回の呼び出しで読む |
|
検索して特定の結果を読む |
|
ページは順次レンダリングされます(1つのブラウザで一度に1ページ)。ページあたり約1〜3秒かかります。
ネイティブDSHツール(MCP)として使用
DSHの@deepseek-ai/dsh-mcp-clientを使用してMCPサーバーをプロファイル設定に登録します(例 — commandとargsのパスは環境に合わせて調整してください):
- insert:
- id: mcp-google
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: google
transport: stdio
command: /path/to/node
args: [ /path/to/dsh-google-chrome-search/src/server.mjs ]
env:
CHROME_PATH: /usr/bin/google-chrome # optional — auto-detected if unset
toolCallTimeoutMs: 300000DSHを再起動すると、エージェントは3つのネイティブツールを利用できます:
ツール | 機能 |
| Googleウェブ検索 → リンク + スニペット |
| 1つのURLをレンダリング → 抽出された読みやすいコンテンツ(タイトル、著者、テキスト、オプションでHTML/スクリーンショット) |
| 検索 → 上位Nページをレンダリング → 1回の呼び出しでページごとの抽出コンテンツ |
注意:
呼び出しは直列化されます(Chromeはプロファイルごとに1プロセスを許可するため)。そのため、並行ツール呼び出しは並列実行ではなくキューに入ります。
search_and_fetchは通常の検索より遅いです。上記のようにtoolCallTimeoutMsを300000(5分)に設定してください。人間による検証フローは、Google検索(CAPTCHA)と、ブラウザを遮断する結果ページ(アンチボットスライダー)の両方に適用されます。人間のために可視のChromeウィンドウが開き、その後セッションはプロファイルに残ります。
DSHスキルとして使用
skill/SKILL.mdは、エージェントに検索の実行方法とCAPTCHAの人間への引き渡し方法を教えます。インストールするには、DSHスキルディレクトリにコピーします。例:
mkdir -p ~/.dsh/skills/google-chrome-search
cp skill/SKILL.md ~/.dsh/skills/google-chrome-search/別のマシンで共有/使用する前に、SKILL.md内の<INSTALL_DIR>プレースホルダーを、このリポジトリをクローンした場所を指すように編集してください(またはnpm link CLIをPATHに置けばそのまま動作します)。
設定(環境変数 / オプション)
オプション / 環境変数 | デフォルト | 意味 |
| 自動検出 | Chrome実行ファイル |
|
| 永続的な専用Chromeプロファイル(「検証済み」Cookieを保持) |
| 8 | 返すオーガニック検索結果の数(最大20) |
| 150000 | 人間がCAPTCHAを解決するのを待つ時間 |
|
|
|
|
| 地域 / 言語 |
| 8000 | フェッチしたページごとに抽出する最大文字数(fetch / search_and_fetch) |
| 3 |
|
|
| fetchオプション:抽出したHTML / ページのスクリーンショットも返す |
| 20000 | フェッチしたページごとのナビゲーションタイムアウト |
人間による検証フロー(ステップバイステップ)
Chromeはヘッドレスで検索を実行します(専用の隔離されたプロファイル — 実際のブラウザは使用しません)。
結果が存在する場合 → それらを返します(
status: ok)。GoogleがCAPTCHAを提供する場合:
スクリーンショットを撮ります。
検証ページで可視のChromeウィンドウ(同じプロファイル)を開きます。
人間が解決するのを
verifyTimeoutMsまで待ち、ページをポーリングします。解決された場合 → 結果を抽出して返します(
verifiedViaHuman: trueとマーク)。 タイムアウトした場合 → 最新のスクリーンショットとともにstatus: verification_requiredを返します。
検証済みセッションはプロファイルに残るため、次の検索は通常ヘッドレスで成功します。
テスト
npm testMCPサーバーを起動し、search、fetch、search_and_fetchツールがリストされていることを確認し、マシンでChromeバイナリが利用可能な場合はautoVerify: falseでライブ検索を実行します。ブラウザがない環境(例:CI)では、ライブ呼び出しは正常にスキップされます。
トラブルシューティング
症状 | 修正方法 |
| Chrome/Chromiumをインストールするか、 |
コンテナ内でrootとして実行、サンドボックスエラー | デフォルトは |
毎回CAPTCHAが表示される | 専用プロファイル( |
SSHで可視ウィンドウが表示されない | ディスプレイのあるマシンを使用するか、 |
| そのプロファイルを使用しているすべてのChromeインスタンスを閉じてから再試行します(プロファイルは個人用とは別です)。2つのCLI呼び出しを同時に実行しないでください — プロファイルごとに1プロセスです。 |
| これは意図したとおりの人間による検証ステップです。ウィンドウでチャレンジを通過すると、再試行してセッションを保持します。 |
| サイトがヘッドレスブラウザを遮断し、 |
| ページがJS主体でレンダリングが完了していません。再試行するか(約7秒で安定します)、 |
元に戻す / クリーンアップ
設定:DSHプロファイル設定から
mcp-googleエントリを削除します。スキル:
rm -rf ~/.dsh/skills/google-chrome-searchプロファイル/スクリーンショット:
rm -rf ~/.dsh-chrome-google
ライセンス
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform real-time Google searches with anti-bot protection. Bypasses search engine restrictions using advanced browser automation to extract search results locally without requiring paid API services.7MIT
- AlicenseAqualityAmaintenanceEnables web search via a real browser for any LLM, bypassing anti-bot measures without API keys.5MIT
- AlicenseBqualityBmaintenanceBridges AI agents (Codex, Claude Code) with a real Chrome session via CDP, enabling Google Search and Google AI interactions through the browser.2277MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search the web and extract content using multiple search providers, with caching, retry logic, and options for JavaScript-heavy page rendering.
Related MCP Connectors
Search Google straight from your AI agent. Web results, images, videos, news, products, scholarly ar
The best web search for your AI Agent
Live web search for AI agents. $0.001/call, x402 on Base, no API key.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/DavidCastilloAlvarado/dsh-google-chrome-search'
If you have feedback or need assistance with the MCP directory API, please join our Discord server