Skip to main content
Glama
Biogod2020
by Biogod2020

dsh-bing-search

简体中文

Websuche für DeepSeek Harness (DSH), implementiert als kleiner MCP-Server und unterstützt von curl_cffi.

search-Reihenfolge:

  1. DuckDuckGo-HTML (html.duckduckgo.com) prüfen und die Erreichbarkeit für etwa 60 Sekunden zwischenspeichern. Vom chinesischen Festland aus schlägt diese Prüfung oft fehl, sofern kein Proxy konfiguriert ist.

  2. DDG verwenden, wenn es erreichbar ist.

  3. Auf Bing zurückfallen, wenn DDG nicht verfügbar ist, rate-limitiert (HTTP 202 / Challenge) ist oder das Ergebnisset quality_label=poor aufweist.

  4. Bing je nach Sprache weiterleiten: Chinesische / zh-*-Märkte gehen an cn.bing.com, andernfalls an www.bing.com.

Jede Suchantwort enthält quality_score (0–1) und quality_label (good / weak / poor). Behandle poor als unbrauchbar (Wörterbuchseiten, Erst-Token-Müll). Zitiere diese Titel nicht.

Es gibt einem DSH-Agenten drei browserartige Werkzeuge:

  • mcp__web__search — durchsuche das öffentliche Web und gib normalisierte organische Ergebnisse zurück.

  • mcp__web__open — öffne eine öffentliche Webseite und extrahiere lesbaren Text.

  • mcp__web__find — finde Text in einer langen Seite und gib umliegenden Kontext zurück.

DSH agent
  -> @deepseek-ai/dsh-mcp-client
  -> dsh-bing-search (MCP/stdio)
  -> curl_cffi.AsyncSession(impersonate="chrome")
  -> html.duckduckgo.com          (if reachable)
  -> else cn.bing.com / www.bing.com

Festlandchina: DuckDuckGo ist ohne Proxy oder VPN oft nicht erreichbar. Das ist zu erwarten. Das Plugin verwendet dann Bing und setzt warnings auf duckduckgo_unreachable. Der MCP-Kindprozess erbt nicht die HTTP_PROXY/HTTPS_PROXY-Einstellungen Ihrer Shell (trust_env=False). Um einen Proxy zu erzwingen, setzen Sie DSH_WEB_PROXY im Plugin-Prozess (zum Beispiel http://127.0.0.1:10808 in der env:-Map von cordis). Gehen Sie nicht davon aus, dass DDG in einem typischen Festland-Heim- oder Campusnetzwerk funktioniert.

Community-Plugin: DeepSeek Harness bittet Drittanbieter-Plugins, das GitHub-Thema dsh-plugin zur Auffindbarkeit zu verwenden.

Schnellste Installation: Dieses Repository einem Agenten übergeben

Wenn Ihr Coding-Agent Terminal- und Dateisystemzugriff hat (Codex, Claude Code, Pi, OpenCode usw.), fügen Sie Folgendes ein:

Install this DeepSeek Harness plugin into my current DSH setup:
https://github.com/Biogod2020/dsh-bing-search

Read the repository README and INSTALL.md first. Install it with uv, detect my active
DSH profile, add it through cordis.patch.yml using the required `insert` patch form,
preserve all unrelated config, use the absolute path of the installed dsh-bing-search
executable, then verify that mcp__web__search, mcp__web__open, and mcp__web__find are
registered. Finally run one real web search smoke test and report what changed.

Das ist der empfohlene Weg. INSTALL.md enthält einen deterministischen Installationsvertrag, der für Agenten geschrieben wurde.

Related MCP server: webmcp

Manuelle Installation

1. Die ausführbare Datei installieren

Python 3.10+ ist erforderlich. Mit uv:

uv tool install --force git+https://github.com/Biogod2020/dsh-bing-search.git

Finden Sie das Tool-Bin-Verzeichnis:

uv tool dir --bin

Verwenden Sie den absoluten Pfad zu dsh-bing-search (oder dsh-bing-search.exe unter Windows) in der DSH-Konfiguration unten.

Für die Entwicklung anstelle einer Tool-Installation:

git clone https://github.com/Biogod2020/dsh-bing-search.git
cd dsh-bing-search
uv sync --extra dev

Das Repository enthält uv.lock für reproduzierbare Entwicklungsinstallationen.

2. Zu DSH hinzufügen

DSH-Profile kombinieren eine Stamm-cordis.yml mit einer Patch-Schicht cordis.patch.yml. Wenn Sie ein neues Plugin über die Patch-Schicht hinzufügen, muss der Eintrag in insert eingebettet werden:

- insert:
    - id: mcp-web
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: web
        transport: stdio
        command: /ABSOLUTE/PATH/TO/dsh-bing-search
        args: []
        toolCallTimeoutMs: 30000
        failOnStartupError: true
        reconnect:
          enabled: true
          initialDelayMs: 500
          maxDelayMs: 30000
          maxAttempts: 10

Fügen Sie keinen nackten Eintrag - id: mcp-web zu cordis.patch.yml hinzu: Nackte Einträge patchen vorhandene IDs, und eine unbekannte ID kann übersprungen werden. Wenn Sie die Stamm-cordis.yml direkt bearbeiten, ist ein normaler nackter Plugin-Eintrag korrekt. Siehe cordis.example.yml.

3. Überprüfen

Nachdem DSH das Profil neu geladen hat, sollte das Modell Folgendes sehen:

mcp__web__search
mcp__web__open
mcp__web__find

Bitten Sie den Agenten dann, nach etwas Aktuellem zu suchen und ein Ergebnis zu öffnen. Ein erfolgreicher Roundtrip bestätigt sowohl den Suchzugriff als auch die MCP-Registrierung. Starten Sie DSH (oder den MCP-Kindprozess) neu, nachdem Sie Plugin-Code geändert haben; der Stdio-Prozess lädt Python nicht neu.

Werkzeuge

{
  "query": "DeepSeek Harness GitHub",
  "count": 8,
  "offset": 0,
  "market": "en-US",
  "safe_search": "Moderate"
}

Gibt zurück:

Feld

Bedeutung

provider

duckduckgo oder bing

title / url / snippet / rank

Organisches Ergebnis

source_id

Stabile ID aus der kanonischen URL

quality_score

0–1 Überlappung der Abfrage mit Titeln/Textauszügen

quality_label

good / weak / poor

warnings

Fallback-Grund und Qualitätshinweise

Verwenden Sie market=zh-CN für chinesische Abfragen. Wenn die Abfrage CJK enthält, verwendet der Bing-Fallback auch bei market=en-US weiterhin cn.bing.com.

DuckDuckGo-/l/?uddg=- und Bing-/ck/a-Weiterleitungen werden nach Möglichkeit dekodiert. Häufige Tracking-Parameter werden entfernt und doppelte URLs werden zusammengeführt.

Suchen Sie bei Personen, Papieren oder illustrierten Blogs zuerst nach dem Autorennamen oder einem kurzen Eigennamen. Wenn quality_label poor ist, verlängern Sie die Abfrage nicht weiter. Chinesische akademische Metadaten gehören in ein spezialisiertes Korpus (z. B. CNKI), nicht in diese allgemeine Websuche.

open

{
  "url": "https://example.com/article",
  "max_chars": 24000
}

Ruft öffentliche HTTP(S)-Seiten mit curl_cffi ab, wendet DNS/IP-Prüfungen und sichere Weiterleitungen an, begrenzt die Antwortgröße und extrahiert lesbaren Text ohne JavaScript auszuführen.

open ist für artikelähnliches HTML gebaut. Es ist kein Browser. Live-DSH-Läufe zeigten, dass Wetter- und andere Widget-lastige Websites (tianqi.com, weather.com.cn und ähnliche) oft Navigations-Chrome oder fast leeren Text liefern: Trafilatura findet keinen Hauptartikel, und der Fallback gibt das gesamte DOM aus. status kann trotzdem ok sein. Vertrauen Sie bei diesen Seiten dem Such-snippet oder öffnen Sie eine einfachere Artikel-URL. Erwarten Sie keine Live-Temperatur, Karten oder andere JS-gerenderte Benutzeroberfläche.

find

{
  "url": "https://example.com/article",
  "pattern": "DeepSeek",
  "max_matches": 5,
  "context_chars": 700
}

Gibt passende Bereiche zurück, ohne die gesamte Seite in den Modellkontext einzufügen.

Warum drei Werkzeuge statt eines riesigen search_and_summarize-Werkzeugs?

Das Plugin hält die Abfrage deterministisch und lässt das DSH-Modell die Recherche-Schleife steuern:

search -> inspect candidates -> open -> find / search again -> synthesize

Das Plugin übernimmt HTTP, Parsing, Bereinigung, Caching, Engine-Fallback, Herkunft und eine Qualitätskennzeichnung. Der Agent entscheidet, wonach gesucht wird, welchen Quellen er vertraut, wann die Abfrage umformuliert wird und wann genügend Beweise gesammelt wurden. Der Agent muss quality_label und warnings lesen.

Konfiguration

Umgebungsvariable

Standard

Zweck

DSH_BING_SEARCH_URL

https://www.bing.com/search

Bing-HTML-Endpunkt nur überschreiben, wenn ein Nicht-Standardwert gesetzt ist (Tests). Andernfalls wird der Host anhand der Sprache gewählt

DSH_WEB_IMPERSONATE

chrome

curl_cffi-Browser-Fingerabdruck

DSH_WEB_PROXY

leer

HTTP/HTTPS/SOCKS-Proxy. Der Prozess verwendet trust_env=False und erbt HTTP_PROXY nicht

DSH_WEB_TIMEOUT_SECONDS

20

Übertragungs-Timeout

DSH_WEB_CONNECT_TIMEOUT_SECONDS

8

Verbindungs-Timeout

DSH_WEB_MAX_BODY_BYTES

5242880

Maximale Größe des Inhalts für open

DSH_BING_MAX_BODY_BYTES

2097152

Maximale Größe des Suchseiteninhalts

DSH_WEB_MAX_REDIRECTS

8

Maximale Anzahl an Weiterleitungen

DSH_WEB_CONCURRENCY

8

Maximale gleichzeitige Anforderungen pro Prozess

DSH_BING_CACHE_TTL_SECONDS

90

Suchcache-TTL

DSH_WEB_CACHE_TTL_SECONDS

600

Seiten-Cache-TTL

Tests

Offline-Tests (Parser, Qualitätswert, Locale-Routing, DDG-zuerst / Bing-Fallback):

uv run pytest -m "not live"

Live-Smoke-Test:

RUN_LIVE_BING=1 uv run pytest -m live -s

Der Markername ist weiterhin live / RUN_LIVE_BING. Ein Live-Lauf greift zuerst auf DDG zu und verwendet Bing nur, wenn DDG nicht verfügbar ist.

CI umfasst Python 3.10, 3.12, 3.13 und 3.14.

Design- und Sicherheitshinweise

Dies ist ein inoffizieller DuckDuckGo-HTML- und Bing-HTML-Adapter. Er verwendet die eingestellte Bing-Such-API nicht.

  • DDG-Markup befindet sich in src/dsh_bing_search/providers/ddg.py.

  • Bing-Markup befindet sich in src/dsh_bing_search/providers/bing_parser.py.

  • Die Qualitätsbewertung befindet sich in src/dsh_bing_search/quality.py und ist engine-agnostisch.

  • Anforderungen verwenden curl_cffi.AsyncSession mit Browser-Imitation.

  • Benutzer bereitgestellte Seiten-URLs sind auf öffentliche HTTP(S)-Ziele beschränkt, und eine sichere Weiterleitungsbehandlung ist aktiviert.

  • Antwortkörper sind größenbegrenzt.

  • CAPTCHA-/Challenge-/HTTP-202-Seiten werden als status="blocked" gemeldet; das Plugin versucht nicht, sie zu umgehen.

  • Headless Bing auf www.bing.com liefert oft strukturierte, aber unpassende Karten. cn.bing.com hilft bei einigen heißen chinesischen Abfragen; Long-Tail-Namen und Titel können weiterhin auf das erste Token kollabieren. Dafür ist die Qualitätskennzeichnung da.

  • open wiederholt langsame Zielseiten nicht automatisch; erhöhen Sie bei Bedarf die Timeout-Umgebungsvariablen.

Community

DeepSeek Harness befindet sich derzeit in der Entwicklervorschau, daher können sich Plugin-Schnittstellen noch ändern. Für DSH-spezifischen Support und Auffindbarkeit:

Beiträge und Parser-Fixes sind willkommen.

Lizenz

MIT

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (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

  • A
    license
    -
    quality
    C
    maintenance
    MCP server for web search and content extraction using DuckDuckGo or SearXNG, with Playwright-based fetching and LLM-powered data extraction.
    140
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    MCP server for internet search via direct Google and DuckDuckGo HTML scraping with AI-powered result normalization and optional summarization, requiring no API keys for search.
    MIT

View all related MCP servers

Related MCP Connectors

  • Serper MCP — wraps the Serper Google Search API (serper.dev)

  • MCP server for Google search results via SERP API

  • Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.

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/Biogod2020/dsh-bing-search'

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