Skip to main content
Glama

web-search-mcp

Externe Websuche und Seitenabruf für lokale LLMs, bereitgestellt als MCP-Tools und CLI. Die Implementierung ist Playwright-basiert, asynchron und startet standardmäßig das systemseitig installierte Chromium-Binary. Die Design-Historie ist in docs/IMPLEMENTATION_PLAN.md dokumentiert.

Tools

  • search(provider, context) führt eine browsergestützte Suche auf duckduckgo (Standard), google oder yandex durch und gibt bis zu 5 organische Ergebnis-URLs zurück.

  • fetch(urls) ruft 1..5 URLs ab und gibt browser-gerendertes HTML mit pro-URL pages-, errors- und truncated-Feldern zurück.

context ist aus Gründen der Kompatibilität mit dem Aufrufer absichtlich der Such-Query-String.

Related MCP server: Web Search MCP

Einrichtung

uv sync
chromium --version

Falls Chromium an einem nicht standardmäßigen Ort installiert ist, setzen Sie PLAYWRIGHT_CHROMIUM_EXECUTABLE=/path/to/chromium.

Verwendung

Führen Sie den MCP-Server über stdio aus:

uv run web-search serve-mcp

Führen Sie die CLI direkt aus:

uv run web-search search --context "python async playwright"
uv run web-search fetch https://example.com

Stellen Sie HTTP-Transport anstelle von stdio bereit:

uv run web-search serve-mcp --transport streamable-http --host 127.0.0.1 --port 8000

Design-Hinweise

  • Ein gemeinsam genutzter Browser pro Prozess, mit einem neuen Inkognito-Kontext pro Anfrage.

  • Playwright startet das systemseitige Chromium-Binary, nicht ein von Playwright heruntergeladenes Browser-Bundle.

  • System-Chromium funktionierte mit Playwright, während der getestete System-Firefox-Build sofort nach dem Start beendet wurde. Dieses Repository zielt daher auf System-Chromium als unterstützten Host-Browser-Pfad ab.

  • Browser-Smoke-Tests sollten von einer normalen Host-Shell aus ausgeführt werden. Eingeschränkte Sandboxes können den Start von Chromium blockieren, selbst wenn der Host-Browser korrekt funktioniert.

  • Globale Navigations-Gleichzeitigkeitsbegrenzung von 3.

  • Timeouts: 15s pro Seite, 20s insgesamt für search, 35s insgesamt für fetch.

  • SSRF-Schutz: nur http/https, keine eingebetteten Anmeldedaten, blockiert Loopback/private/link-local/reservierte IPs vor der Navigation und bei Browser-Subrequests.

  • JavaScript-Challenge-Seiten erhalten ein begrenztes 10s-Zeitfenster zur Stabilisierung; es gibt kein CAPTCHA-Lösen, Stealth-Fingerprinting oder standortspezifische Umgehungslogik.

  • HTML ist auf 1 MiB pro URL begrenzt; zu große Antworten werden abgeschnitten und in truncated gemeldet.

  • robots.txt wird in v1 nicht berücksichtigt.

Entwicklung

source .venv/bin/activate
pytest

Parser-Tests laufen gegen gespeicherte HTML-Fixtures; Selektor-Drift ist ein erwarteter Wartungsaufwand.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables web searching through Google, DuckDuckGo, and Bing using a headless Chrome browser, returning structured results with titles, URLs, and snippets. Also supports fetching and extracting text content from any webpage.
    15
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables LLMs to fetch and extract web content using browser automation, OCR, and multiple extraction methods, handling JavaScript rendering and anti-scraping techniques.
    17
    MIT