dsh-bing-search
dsh-bing-search
Веб-поиск для DeepSeek Harness (DSH), реализованный как небольшой MCP-сервер на базе curl_cffi.
Порядок search:
Проверяет доступность HTML-версии DuckDuckGo (
html.duckduckgo.com) и кэширует результат примерно на 60 секунд. Из материкового Китая эта проверка часто не проходит без настройки прокси.Использует DDG, когда он доступен.
Переключается на Bing, когда DDG недоступен, ограничен по частоте запросов (HTTP 202 / challenge) или набор результатов имеет
quality_label=poor.Направляет Bing в зависимости от языка: для китайского и рынков
zh-*используетсяcn.bing.com, в остальных случаях —www.bing.com.
Каждый ответ поиска включает quality_score (0–1) и quality_label (good / weak / poor). Считайте poor непригодным к использованию (словарные страницы, мусор из первых токенов). Не цитируйте такие заголовки.
Плагин предоставляет агенту DSH три инструмента в стиле браузера:
mcp__web__search— поиск по публичному вебу и возврат нормализованных органических результатов.mcp__web__open— открыть публичную веб-страницу и извлечь читаемый текст.mcp__web__find— найти текст на длинной странице и вернуть окружающий контекст.
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Материковый Китай: без прокси или VPN DuckDuckGo часто недоступен. Это ожидаемо. В этом случае плагин использует Bing и устанавливает warnings в duckduckgo_unreachable. Дочерний MCP-процесс не наследует переменные HTTP_PROXY / HTTPS_PROXY из вашего shell (trust_env=False). Чтобы принудительно задать прокси, установите DSH_WEB_PROXY в процессе плагина (например, http://127.0.0.1:10808 в карте env: в cordis). Не рассчитывайте, что DDG будет работать в типичной домашней или университетской сети материкового Китая.
Сообщество плагинов: DeepSeek Harness просит сторонние плагины использовать тему
dsh-pluginна GitHub для обнаружения.
Самая быстрая установка: передайте этот репозиторий агенту
Если ваш пишущий код агент имеет доступ к терминалу и файловой системе (Codex, Claude Code, Pi, OpenCode и т.д.), вставьте следующее:
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.Это рекомендуемый путь. INSTALL.md содержит детерминированный контракт установки, написанный для агентов.
Related MCP server: webmcp
Установка вручную
1. Установите исполняемый файл
Требуется Python 3.10 или новее. С помощью uv:
uv tool install --force git+https://github.com/Biogod2020/dsh-bing-search.gitНайдите каталог bin инструмента:
uv tool dir --binИспользуйте абсолютный путь к dsh-bing-search (или dsh-bing-search.exe в Windows) в конфигурации DSH ниже.
Для разработки вместо установки как инструмента:
git clone https://github.com/Biogod2020/dsh-bing-search.git
cd dsh-bing-search
uv sync --extra devРепозиторий включает uv.lock для воспроизводимых установок в режиме разработки.
2. Добавьте его в DSH
Профили DSH объединяют корневой cordis.yml со слоем патчей cordis.patch.yml. При добавлении нового плагина через слой патчей запись обязательно должна быть обёрнута в insert:
- 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Не добавляйте запись - id: mcp-web в cordis.patch.yml без обёртки: такие записи патчат существующие ID, а неизвестный ID может быть пропущен. Если вы редактируете корневой cordis.yml напрямую, обычная запись плагина без обёртки — правильный вариант. См. cordis.example.yml.
3. Проверка
После перезагрузки профиля DSH модель должна увидеть:
mcp__web__search
mcp__web__open
mcp__web__findЗатем попросите агента найти что-то актуальное и открыть один результат. Успешный цикл подтверждает и доступ к поиску, и регистрацию в MCP. Перезапустите DSH (или дочерний MCP-процесс) после изменения кода плагина; процесс stdio не перезагружает Python на лету.
Инструменты
search
{
"query": "DeepSeek Harness GitHub",
"count": 8,
"offset": 0,
"market": "en-US",
"safe_search": "Moderate"
}Возвращает:
Поле | Значение |
|
|
| Органический результат |
| Стабильный ID из канонического URL |
| Пересечение запроса с заголовками/сниппетами от 0 до 1 |
|
|
| Причина переключения и заметки о качестве |
Используйте market=zh-CN для китайских запросов. Если запрос содержит символы CJK, запасной вариант Bing всё равно использует cn.bing.com, даже если market установлен в en-US.
Редиректы DuckDuckGo /l/?uddg= и Bing /ck/a декодируются там, где это возможно. Распространённые отслеживающие параметры удаляются, а дублирующиеся URL объединяются.
Для людей, статей или иллюстрированных блогов сначала ищите имя автора или короткое имя собственное. Если quality_label — poor, не продолжайте удлинять запрос. Китайские академические метаданные относятся к специализированному корпусу (например, CNKI), а не к этому общему веб-поиску.
open
{
"url": "https://example.com/article",
"max_chars": 24000
}Загружает публичные HTTP(S)-страницы с помощью curl_cffi, применяет проверки DNS/IP и безопасные редиректы, ограничивает размер ответа и извлекает читаемый текст без выполнения JavaScript.
open предназначен для HTML, похожего на статьи. Это не браузер. Живые запуски DSH показали, что погодные и другие сайты с большим количеством виджетов (tianqi.com, weather.com.cn и подобные) часто возвращают навигационные элементы или почти пустой текст: Trafilatura не находит основную статью, и запасной вариант выгружает весь DOM. status при этом может быть ok. Для таких страниц доверяйте сниппету из поиска или открывайте более простой URL статьи. Не ожидайте живую температуру, карты или другой JS-рендеринг.
find
{
"url": "https://example.com/article",
"pattern": "DeepSeek",
"max_matches": 5,
"context_chars": 700
}Возвращает соответствующие фрагменты, не вставляя всю страницу в контекст модели.
Почему три инструмента вместо одного большого search_and_summarize?
Плагин сохраняет детерминированный поиск и позволяет модели DSH управлять циклом исследования:
search -> inspect candidates -> open -> find / search again -> synthesizeПлагин обрабатывает HTTP, парсинг, очистку, кэширование, переключение движков, происхождение данных и оценку качества. Агент решает, что искать, каким источникам доверять, когда переформулировать запрос и когда собрано достаточно доказательств. Агент обязан читать quality_label и warnings.
Конфигурация
Переменная окружения | По умолчанию | Назначение |
|
| Переопределяет HTML-эндпоинт Bing, только если задано нестандартное значение (тесты). В противном случае хост выбирается по языку |
|
| Отпечаток браузера |
| пусто | HTTP/HTTPS/SOCKS-прокси. Процесс использует |
|
| Таймаут передачи |
|
| Таймаут соединения |
|
| Максимальный размер тела для |
|
| Максимальный размер тела страницы поиска |
|
| Максимальное количество редиректов |
|
| Максимальное количество одновременных запросов в процессе |
|
| TTL кэша поиска |
|
| TTL кэша страниц |
Тесты
Офлайн-тесты (парсеры, оценка качества, маршрутизация по локали, DDG-first / запасной вариант Bing):
uv run pytest -m "not live"Живой смоук-тест:
RUN_LIVE_BING=1 uv run pytest -m live -sИмя маркера по-прежнему live / RUN_LIVE_BING. Живой запуск сначала обращается к DDG и использует Bing только в том случае, если DDG недоступен.
CI покрывает Python 3.10, 3.12, 3.13 и 3.14.
Замечания по дизайну и безопасности
Это неофициальный адаптер DuckDuckGo HTML + Bing HTML. Он не использует снятый с поддержки Bing Search API.
Разметка DDG находится в
src/dsh_bing_search/providers/ddg.py.Разметка Bing находится в
src/dsh_bing_search/providers/bing_parser.py.Оценка качества находится в
src/dsh_bing_search/quality.pyи не зависит от движка.Запросы используют
curl_cffi.AsyncSessionс имитацией браузера.URL-адреса страниц, предоставленные пользователем, ограничены публичными HTTP(S)-целями и включена безопасная обработка редиректов.
Тела ответов ограничены по размеру.
Страницы CAPTCHA / challenge / HTTP 202 сообщаются как
status="blocked"; плагин не пытается их обходить.Headless Bing на
www.bing.comчасто возвращает структурно валидные, но нерелевантные карточки.cn.bing.comпомогает с некоторыми горячими китайскими запросами; длиннохвостовые имена и заголовки всё ещё могут схлопываться до первого токена. Именно для этого нужна оценка качества.openне выполняет автоматические повторные попытки для медленных целевых сайтов; при необходимости увеличьте переменные окружения таймаута.
Сообщество
DeepSeek Harness в настоящее время находится в предварительной версии для разработчиков, поэтому интерфейсы плагинов могут ещё меняться. Для поддержки и поиска по DSH:
Просмотрите тему
dsh-plugin.См. репозиторий DeepSeek Harness.
Присоединяйтесь к каналам сообщества DSH, ссылки на которые есть в официальном репозитории.
Приветствуются вклады и исправления парсеров.
Лицензия
MIT
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
- Flicense-qualityDmaintenanceThis MCP server provides tools for AI agents to search the web, fetch page content, and query specific elements from pages using DuckDuckGo.18
- Alicense-qualityCmaintenanceMCP server for web search and content extraction using DuckDuckGo or SearXNG, with Playwright-based fetching and LLM-powered data extraction.140MIT
- AlicenseAqualityCmaintenanceA general MCP server providing web search capabilities using DeepSeek's native online search API.114027MIT
- Alicense-qualityDmaintenanceMCP 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
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.
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/Biogod2020/dsh-bing-search'
If you have feedback or need assistance with the MCP directory API, please join our Discord server