dsh-google-chrome-search
dsh-google-chrome-search
Плагин DeepSeek Harness (DSH), который позволяет AI-агенту выполнять реальный поиск в Google путем управления локальным браузером Chrome через CDP (Chrome DevTools Protocol) и рендерить любую страницу для извлечения её содержимого. Ключ API для поиска не нужен — используется уже установленный Chrome.
Google часто показывает страницу проверки человека (CAPTCHA / «необычный трафик») для автоматизированного и дата-центрового трафика. Когда это происходит, плагин открывает видимое окно Chrome, указывающее на страницу проверки, ждёт, пока человек её пройдёт, а затем извлекает результаты из уже доверенной сессии. Это шаг «спросить человека» — по замыслу агент никогда не пытается решить CAPTCHA самостоятельно.

Что вы получаете
Компонент | Путь | Назначение |
Ядро |
| Поиск Google через Chrome/CDP + проверка CAPTCHA + извлечение результатов |
Движок страниц |
| Рендер любого URL + извлечение читаемого содержимого (Mozilla Readability) + |
MCP-сервер |
| Предоставляет |
CLI |
|
|
Навык |
| Обучает агента использованию + рабочий процесс проверки человеком |
Related MCP server: browser-search-mcp
Требования
Node.js ≥ 18 (протестировано на Node 22)
Локальный бинарник Chrome/Chromium (например,
google-chrome,chromium). Автоопределение из стандартных путей; можно переопределить черезCHROME_PATHили--chrome.Для шага видимой проверки нужен рабочий стол с дисплеем (чтобы окно Chrome можно было показать человеку). Headless/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 «slide to continue»), открывается видимое окно Chrome со страницей, ожидание доverifyTimeoutMsдля прохождения человеком, затем извлекается реальное содержимое — та же философия «передать человеку», что и в потоке CAPTCHA Google. Доверенный сессионный cookie сохраняется в профиле, поэтому последующие страницы этого сайта обычно проходят headless. Используйте--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Два способа объединить поиск и чтение:
Что | Как |
Поиск, затем чтение топ-N страниц одним вызовом |
|
Поиск, затем чтение конкретного результата |
|
Страницы рендерятся последовательно (один браузер, одна страница за раз) — ожидайте ~1–3 с на страницу.
Использование как нативного инструмента DSH (MCP)
Зарегистрируйте MCP-сервер с @deepseek-ai/dsh-mcp-client в конфигурации вашего профиля
(пример — скорректируйте пути 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: 300000После перезапуска DSH агент получает три нативных инструмента:
Инструмент | Что делает |
| Поиск в Google → ссылки + сниппеты |
| Рендер одного URL → извлечённое читаемое содержимое (заголовок, автор, текст, опционально HTML/скриншот) |
| Поиск → рендер топ-N страниц → извлечённое содержимое каждой страницы одним вызовом |
Примечания:
Вызовы сериализуются (Chrome допускает один процесс на профиль), поэтому одновременные вызовы инструментов ставятся в очередь, а не выполняются параллельно.
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/Перед использованием/передачей на другой машине отредактируйте заполнитель <INSTALL_DIR> внутри
SKILL.md, указав путь, куда вы клонировали этот репозиторий (или добавьте CLI через npm link в PATH
— и всё заработает).
Конфигурация (env / параметры)
Параметр / Env | По умолчанию | Значение |
| автоопределение | Исполняемый файл Chrome |
|
| Постоянный выделенный профиль Chrome (сохраняет «проверенные» cookie) |
| 8 | Органические результаты для возврата (макс. 20) |
| 150000 | Сколько ждать, пока человек решит CAPTCHA |
|
| Если |
|
| Регион / язык |
| 8000 | Максимум извлечённых символов на полученную страницу (fetch / search_and_fetch) |
| 3 | Сколько страниц результатов рендерить в |
|
| Параметры fetch: также возвращать извлечённый HTML / скриншот страницы |
| 20000 | Таймаут навигации для каждой полученной страницы |
Поток проверки человеком, шаг за шагом
Chrome выполняет поиск в headless-режиме (выделенный изолированный профиль — никогда ваш реальный браузер).
Если результаты есть → возвращаются (
status: ok).Если Google показывает CAPTCHA:
Сделать скриншот.
Открыть видимое окно Chrome (тот же профиль) на странице проверки.
Ждать до
verifyTimeoutMs, пока человек решит её, опрашивая страницу.Если решено → извлечь и вернуть результаты (с флагом
verifiedViaHuman: true). Если время истекло → вернутьstatus: verification_requiredс последним скриншотом.
Проверенная сессия сохраняется в профиле, поэтому следующий поиск обычно проходит headless.
Тестирование
npm testЗапускает MCP-сервер, проверяет, что инструменты search, fetch и search_and_fetch
перечислены, и — если на машине доступен бинарник Chrome — выполняет живой поиск с
autoVerify: false. В средах без браузера (например, CI) живой вызов пропускается
корректно.
Устранение неполадок
Симптом | Исправление |
| Установите Chrome/Chromium или задайте |
Запуск от root в контейнере, ошибка песочницы | По умолчанию используется |
CAPTCHA при каждом поиске | Сохраняйте выделенный профиль ( |
Нет видимого окна при SSH | Используйте машину с дисплеем или установите |
| Закройте все экземпляры Chrome, использующие этот профиль, затем повторите (профиль отделён от вашего личного). Не запускайте два вызова CLI одновременно — один процесс на профиль. |
| Это шаг проверки человеком работает как задумано: пройдите проверку в окне, затем он повторит и сохранит сессию. |
| Сайт блокирует headless-браузеры, а |
| Страница сильно зависит от JS и не завершила рендеринг; повторите (устаканивается до ~7 с) или увеличьте |
Откат / очистка
Конфигурация: удалите запись
mcp-googleиз конфигурации профиля DSH.Навык:
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