dsh-bing-search
dsh-bing-search
**DeepSeek Harness (DSH)**용 웹 검색으로, curl_cffi로 구동되는 소형 MCP 서버로 구현되었습니다.
search 순서:
DuckDuckGo HTML(
html.duckduckgo.com)을 프로브하고 약 60초 동안 연결 가능성을 캐시합니다. 중국 본토에서는 프록시가 구성되지 않으면 이 프로브가 자주 실패합니다.연결 가능하면 DDG를 사용합니다.
DDG가 다운되었거나, 속도 제한(HTTP 202 / 챌린지)을 받거나, 결과 집합이
quality_label=poor인 경우 Bing으로 폴백합니다.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를 상속하지 않습니다(trust_env=False). 프록시를 강제하려면 플러그인 프로세스에 DSH_WEB_PROXY를 설정하세요(예: cordis env: 맵에서 http://127.0.0.1:10808). 일반적인 중국 본토 가정용 또는 캠퍼스 네트워크에서 DDG가 작동할 것이라고 가정하지 마세요.
커뮤니티 플러그인: DeepSeek Harness는 서드파티 플러그인이
dsh-pluginGitHub 토픽을 사용하여 발견될 수 있도록 요청합니다.
가장 빠른 설치: 이 저장소를 에이전트에 넘기세요
코딩 에이전트에 터미널과 파일 시스템 접근 권한이 있다면(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 구성에서 dsh-bing-search(또는 Windows에서는 dsh-bing-search.exe)의 절대 경로를 사용하세요.
도구 설치 대신 개발용으로는:
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: 10cordis.patch.yml에 - id: mcp-web 항목을 단독으로 추가하지 마세요: 단독 항목은 기존 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"
}반환:
필드 | 의미 |
|
|
| 자연 검색 결과 |
| 정식 URL의 안정적인 ID |
| 쿼리와 제목/스니펫의 0–1 중첩 정도 |
|
|
| 폴백 사유 및 품질 메모 |
중국어 쿼리에는 market=zh-CN을 사용하세요. 쿼리에 CJK가 포함된 경우 market이 en-US여도 Bing 폴백은 여전히 cn.bing.com을 사용합니다.
DuckDuckGo /l/?uddg= 및 Bing /ck/a 리디렉션은 가능한 경우 디코딩됩니다. 일반적인 추적 매개변수는 제거되고 중복 URL은 병합됩니다.
사람, 논문, 일러스트 블로그의 경우 먼저 저자 이름이나 짧은 고유 명사를 검색하세요. quality_label이 poor이면 쿼리를 계속 늘리지 마세요. 중국 학술 메타데이터는 일반 웹 검색이 아닌 특수 코퍼스(예: CNKI)에 속합니다.
open
{
"url": "https://example.com/article",
"max_chars": 24000
}curl_cffi로 공개 HTTP(S) 페이지를 가져오고 DNS/IP 검사와 안전한 리디렉션을 적용하며 응답 크기를 제한하고 자바스크립트를 실행하지 않고 읽을 수 있는 텍스트를 추출합니다.
open은 기사형 HTML용으로 제작되었습니다. 브라우저가 아닙니다. 실제 DSH 실행에서 날씨 및 기타 위젯이 많은 사이트(tianqi.com, weather.com.cn 등)는 탐색 크롬이나 거의 빈 텍스트를 생성하는 경우가 많았습니다: Trafilatura가 본문 기사를 찾지 못하면 폴백이 전체 DOM을 덤프합니다. status는 여전히 ok일 수 있습니다. 이러한 페이지에서는 검색 snippet을 신뢰하거나 더 간단한 기사 URL을 open하세요. 실시간 온도, 지도 또는 기타 JS 렌더링 UI를 기대하지 마세요.
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를 읽어야 합니다.
구성
환경 변수 | 기본값 | 목적 |
|
| 기본값이 아닌 값으로 설정된 경우에만 Bing HTML 엔드포인트를 재정의합니다(테스트). 그 외에는 호스트가 언어별로 선택됩니다 |
|
|
|
| empty | HTTP/HTTPS/SOCKS 프록시. 프로세스는 |
|
| 전송 타임아웃 |
|
| 연결 타임아웃 |
|
|
|
|
| 검색 페이지 최대 본문 크기 |
|
| 최대 리디렉션 수 |
|
| 프로세스 내 최대 동시 요청 수 |
|
| 검색 캐시 TTL |
|
| 페이지 캐시 TTL |
테스트
오프라인 테스트(파서, 품질 점수, 로케일 라우팅, DDG 우선 / Bing 폴백):
uv run pytest -m "not live"라이브 스모크 테스트:
RUN_LIVE_BING=1 uv run pytest -m live -s마커 이름은 여전히 live / RUN_LIVE_BING입니다. 라이브 실행은 DDG를 먼저 시도하고 DDG를 사용할 수 없는 경우에만 Bing을 사용합니다.
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에 있으며 엔진에 독립적입니다.요청은 브라우저 임의화(impersonation)와 함께
curl_cffi.AsyncSession을 사용합니다.사용자가 제공한 페이지 URL은 공개 HTTP(S) 대상으로 제한되며 안전한 리디렉션 처리가 활성화됩니다.
응답 본문은 크기가 제한됩니다.
CAPTCHA / 챌린지 / HTTP 202 페이지는
status="blocked"로 보고됩니다. 플러그인은 이를 우회하려 시도하지 않습니다.www.bing.com의 헤드리스 Bing은 구조적으로 유효하지만 관련 없는 카드를 자주 반환합니다.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