Skip to main content
Glama
DavidCastilloAlvarado

dsh-google-chrome-search

dsh-google-chrome-search

CI license: MIT node: >=18

Ein DeepSeek Harness (DSH) Plugin, das es einem KI-Agenten ermöglicht, eine echte Google-Websuche durchzuführen, indem es den lokalen Chrome-Browser über CDP (Chrome DevTools Protocol) steuert und beliebige Seiten rendert, um deren Inhalt zu extrahieren. Kein Such-API-Schlüssel erforderlich – es funktioniert mit dem bereits auf dem Rechner installierten Chrome.

Google zeigt für automatisierten und Rechenzentrums-Traffic häufig eine Seite zur menschlichen Verifizierung (CAPTCHA / „ungewöhnlicher Traffic"). Wenn das passiert, öffnet dieses Plugin ein sichtbares Chrome-Fenster, das auf die Verifizierungsseite zeigt, wartet darauf, dass der Mensch sie löst, und extrahiert dann die Ergebnisse aus der nun vertrauenswürdigen Sitzung. Das ist der Schritt „den Menschen fragen" – der Agent versucht niemals, ein CAPTCHA selbst zu lösen.

Googles Verifizierungsseite, wie sie dem Menschen gezeigt wird

Was Sie erhalten

Komponente

Pfad

Zweck

Kern-Engine

src/search.mjs

Chrome/CDP-Google-Suche + CAPTCHA-Verifizierung + Ergebnis-Extraktion

Seiten-Engine

src/fetch.mjs

Beliebige URL rendern + lesbaren Inhalt extrahieren (Mozilla Readability) + search_and_fetch

MCP-Server

src/server.mjs

Stellt search, fetch, search_and_fetch über stdio bereit → native mcp__google__* in DSH

CLI

bin/google-search.mjs

dsh-google-search "<query>" und dsh-google-search fetch "<url>" für die direkte Nutzung

Skill

skill/SKILL.md

Bringt dem Agenten die Nutzung bei + den Workflow zur menschlichen Verifizierung

Related MCP server: browser-search-mcp

Voraussetzungen

  • Node.js ≥ 18 (getestet mit Node 22)

  • Ein lokales Chrome/Chromium-Binary (z. B. google-chrome, chromium). Wird automatisch aus gängigen Pfaden erkannt; überschreibbar mit CHROME_PATH oder --chrome.

  • Für den sichtbaren Verifizierungsschritt wird eine Desktop-Sitzung mit Display benötigt (damit das Chrome-Fenster dem Menschen gezeigt werden kann). Headless/SSH kann das CAPTCHA weiterhin erkennen und melden (mit einem Screenshot).

Installation

git clone https://github.com/davidcastilloalvarado/dsh-google-chrome-search.git
cd dsh-google-chrome-search
npm install

Abhängigkeiten: puppeteer-core (steuert Ihr Chrome – es lädt keinen Browser herunter), @modelcontextprotocol/sdk (für den MCP-Server), @mozilla/readability (Inhalts-Extraktion) und zod (Schema-Validierung).

Optional die CLI global verlinken, damit sie im PATH ist:

npm link        # gives you: dsh-google-search "<query>"

CLI verwenden

# 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

Exit-Codes: 0 = Erfolg (Ergebnisse / abgerufener Inhalt), 2 = Verifizierung erforderlich (CAPTCHA), 3 = keine Ergebnisse / Abruf blockiert oder fehlgeschlagen, 1 = Fehler, 64 = Verwendung.

Seite abrufen (rendern + extrahieren)

Das Plugin kann auch beliebige URLs rendern und deren lesbaren Hauptinhalt extrahieren:

  • Führt die Seite im gleichen dedizierten Chrome-Profil aus (so verhalten sich Seiten, die einen konsistenten, vertrauenswürdigen Fingerabdruck sehen, besser).

  • Wartet, bis die Seite vollständig geladen ist (einschließlich später SPA-Inhalte).

  • Extrahiert den Artikel mit Mozilla Readability, das innerhalb der Live-Seite ausgeführt wird. Wenn die Seite keinen eindeutigen Artikel hat, wird auf den vollständigen Seitentext zurückgegriffen.

  • Begrenzte Ausgabe (Standard 8.000 Zeichen pro Seite), damit sie agentenkontextfreundlich bleibt.

  • Erkennt Anti-Bot-Wände und meldet blocked, statt Müll zurückzugeben. Wenn eine Website eine Herausforderung zur menschlichen Verifizierung ausliefert (z. B. DataDomes „Schieben zum Fortfahren"-Wand), öffnet es ein sichtbares Chrome-Fenster mit der Seite, wartet bis zu verifyTimeoutMs, bis der Mensch sie besteht, und extrahiert dann den echten Inhalt – dieselbe Hand-an-Mensch-Philosophie wie beim Google-CAPTCHA-Ablauf. Das vertrauenswürdige Sitzungscookie bleibt im Profil erhalten, sodass spätere Seiten dieser Website normalerweise headless durchgehen. Verwenden Sie --no-verify / autoVerify: false, um stattdessen einfach blocked zu melden.

dsh-google-search fetch "https://example.com/article" --max-chars 10000
dsh-google-search fetch "https://example.com/article" --html --screenshot

Zwei Möglichkeiten, Suche und Lesen zu kombinieren:

Was

Wie

Suchen und dann die Top-N-Seiten in einem Aufruf lesen

search_and_fetch (MCP) / --fetch-top N (CLI)

Suchen und dann ein bestimmtes Ergebnis lesen

search, dann fetch mit der gewählten URL

Seiten werden sequenziell gerendert (ein Browser, eine Seite nach der anderen) – rechnen Sie mit ~1–3 s pro Seite.

Als natives DSH-Tool verwenden (MCP)

Registrieren Sie den MCP-Server mit DSHs @deepseek-ai/dsh-mcp-client in Ihrer Profilkonfiguration (Beispiel – passen Sie die command- und args-Pfade an Ihre Umgebung an):

- 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

Nach einem DSH-Neustart erhält der Agent drei native Tools:

Tool

Was es tut

mcp__google__search

Google-Websuche → Links + Snippets

mcp__google__fetch

Eine URL rendern → extrahierter lesbarer Inhalt (Titel, Autor, Text, optional HTML/Screenshot)

mcp__google__search_and_fetch

Suche → die Top-N-Seiten rendern → extrahierter Inhalt pro Seite in einem Aufruf

Hinweise:

  • Aufrufe werden serialisiert (Chrome erlaubt nur einen Prozess pro Profil), daher werden gleichzeitige Tool-Aufrufe in eine Warteschlange gestellt, statt parallel zu laufen.

  • search_and_fetch ist langsamer als eine einfache Suche: Halten Sie toolCallTimeoutMs bei 300000 (5 Minuten), wie oben gezeigt.

  • Der Ablauf zur menschlichen Verifizierung gilt sowohl für die Google-Suche (CAPTCHA) als auch für Ergebnis-Seiten, die den Browser blockieren (Anti-Bot-Slider): Ein sichtbares Chrome-Fenster öffnet sich für den Menschen, und die Sitzung bleibt danach im Profil erhalten.

Als DSH-Skill verwenden

skill/SKILL.md bringt dem Agenten bei, wie die Suche ausgeführt wird und wie die CAPTCHA-Übergabe an den Menschen gehandhabt wird. Zur Installation kopieren Sie es in Ihr DSH-Skills-Verzeichnis, z. B.:

mkdir -p ~/.dsh/skills/google-chrome-search
cp skill/SKILL.md ~/.dsh/skills/google-chrome-search/

Bevor Sie es auf einem anderen Rechner teilen/verwenden, bearbeiten Sie den Platzhalter <INSTALL_DIR> in SKILL.md, sodass er auf den Ort zeigt, an dem Sie dieses Repository geklont haben (oder legen Sie die npm link-CLI auf PATH und es funktioniert einfach).

Konfiguration (env / Optionen)

Option / Env

Standard

Bedeutung

chromePath / CHROME_PATH

Auto-Erkennung

Chrome-Ausführungsdatei

profileDir / GSEARCH_PROFILE

~/.dsh-chrome-google

persistentes, dediziertes Chrome-Profil (behält „verifizierte" Cookies)

maxResults

8

organische Ergebnisse, die zurückgegeben werden (max. 20)

verifyTimeoutMs

150000

wie lange auf die Lösung eines CAPTCHAs durch den Menschen gewartet wird

autoVerify

true

wenn false, wird nie ein sichtbares Fenster geöffnet – nur melden

gl / hl

us / en

Region / Sprache

maxChars

8000

maximale extrahierte Zeichen pro abgerufener Seite (fetch / search_and_fetch)

fetchTop

3

wie viele Ergebnis-Seiten in search_and_fetch gerendert werden (max. 5)

includeHtml / screenshot

false

Fetch-Optionen: zusätzlich extrahiertes HTML / einen Seiten-Screenshot zurückgeben

timeoutMs

20000

Navigations-Timeout pro abgerufener Seite

Der Ablauf zur menschlichen Verifizierung, Schritt für Schritt

  1. Chrome führt die Suche headless aus (ein dediziertes, isoliertes Profil – niemals Ihr echter Browser).

  2. Wenn Ergebnisse vorhanden sind → zurückgeben (status: ok).

  3. Wenn Google ein CAPTCHA ausliefert:

    • Screenshot davon machen.

    • Ein sichtbares Chrome-Fenster (gleiches Profil) auf der Verifizierungsseite öffnen.

    • Bis zu verifyTimeoutMs auf die Lösung durch den Menschen warten, die Seite dabei pollen.

    • Wenn gelöst → Ergebnisse extrahieren + zurückgeben (gekennzeichnet mit verifiedViaHuman: true). Wenn Zeitüberschreitung → status: verification_required mit dem neuesten Screenshot zurückgeben.

  4. Die verifizierte Sitzung bleibt im Profil erhalten, sodass die nächste Suche normalerweise headless erfolgreich ist.

Testen

npm test

Startet den MCP-Server, prüft, ob die Tools search, fetch und search_and_fetch aufgelistet sind, und – falls ein Chrome-Binary auf dem Rechner verfügbar ist – führt eine Live-Suche mit autoVerify: false durch. In Umgebungen ohne Browser (z. B. CI) wird der Live-Aufruf elegant übersprungen.

Fehlerbehebung

Symptom

Lösung

Could not find Chrome / Startfehler

Chrome/Chromium installieren oder CHROME_PATH / --chrome setzen

Läuft als Root in einem Container, Sandbox-Fehler

Standard ist --no-sandbox (für Isolation); wenn Sie die Sandbox aktivieren möchten, übergeben Sie noSandbox: false

CAPTCHA bei jeder Suche

Das dedizierte Profil (~/.dsh-chrome-google) behalten – das Löschen setzt die „verifizierten" Cookies zurück. Rechenzentrums-IPs erhalten häufiger CAPTCHAs.

Kein sichtbares Fenster bei SSH

Verwenden Sie einen Rechner mit Display oder setzen Sie autoVerify: false und lösen Sie das CAPTCHA manuell im Browser-Kontext des gedruckten Screenshots.

ECONNREFUSED / veraltete Sperre im Profil

Schließen Sie alle Chrome-Instanzen, die dieses Profil verwenden, und versuchen Sie es erneut (das Profil ist von Ihrem persönlichen getrennt). Führen Sie nicht zwei CLI-Aufrufe gleichzeitig aus – ein Prozess pro Profil.

fetch öffnet ein Fenster mit einem Slider / „Bestätigen Sie, dass Sie ein Mensch sind"

Das ist der Schritt zur menschlichen Verifizierung, wie beabsichtigt: Bestehen Sie die Herausforderung im Fenster, dann wird erneut versucht und die Sitzung bleibt erhalten. --no-verify überspringt das Fenster und meldet nur blocked.

fetch gibt blocked zurück (kein Fenster)

Die Website blockiert Headless-Browser und autoVerify ist deaktiviert (oder kein Display vorhanden). Versuchen Sie eine andere Quelle für dasselbe Thema oder führen Sie es mit aktivierter Verifizierung aus.

fetch gibt leeren Text zurück

Die Seite ist stark JS-lastig und war noch nicht fertig gerendert; versuchen Sie es erneut (sie stabilisiert sich nach bis zu ~7 s) oder erhöhen Sie --timeout.

Zurücksetzen / Bereinigen

  • Konfiguration: Entfernen Sie den Eintrag mcp-google aus Ihrer DSH-Profilkonfiguration.

  • Skill: rm -rf ~/.dsh/skills/google-chrome-search

  • Profil/Screenshots: rm -rf ~/.dsh-chrome-google

Lizenz

MIT

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
4Releases (12mo)
Commit activity

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

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

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/DavidCastilloAlvarado/dsh-google-chrome-search'

If you have feedback or need assistance with the MCP directory API, please join our Discord server