dsh-search-mcp
Replace dsh's built-in web search with search MCP servers (Tavily / Brave / Exa / Perplexity / DuckDuckGo / custom), configured from the web Settings page. When this plugin is enabled the built-in DeepSeek search provider is disabled.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:gxpppp/dsh-search-mcp说明文档
阅读完整 README ↗dsh-search-mcp
用搜索类 MCP 服务器完全替代 DeepSeek Harness(dsh)内置搜索的独立插件。
- 模型侧
web_search工具保留原名、原展示,但执行全部走你配置的搜索 MCP 服务器(Tavily / Brave / Exa / Perplexity / DuckDuckGo / 任意自定义 MCP)。 - 插件启用期间内置 DeepSeek 搜索 provider 不可用(
web-search-deepseek行被禁用,web.searchProvider切到search-mcp);卸载插件即完全还原。 - 所有服务器配置(类型、端点/命令、API key 或 key 环境变量、工具名)都可以在 Web 设置 → Plugins → search-mcp 卡片里增删改,保存后即时生效,无需重启。
为什么需要它
dsh 内置 web_search 依赖 DeepSeek 官方搜索接口(DEEPSEEK_API_KEY 必须可解析),且每次搜索都消耗一次模型调用。换成 MCP 搜索服务器后:结果来自专业搜索 API(Tavily/Brave/Exa…),snapshot 质量更高、成本更可控,且多个搜索服务可在设置页里自由切换。
安装
# 0. 先让插件自包含:安装它自己的依赖(MCP SDK、dsh 服务包等)
cd
npm install
# 1. 把插件装进 web profile(pnpm 需在 PATH 上;用 link: 使插件源码的
# 后续改动即时生效,无需重装)
dsh plugin --profile web add link:
# 2. 删除旧的直连 Tavily MCP 行(避免 `mcp__tavily__*` 工具重复出现):
# 编辑 C:\Users\\.dsh\profiles\web\cordis.patch.yml,
# 删掉 mcp-tavily 那段 insert(本仓库已在本机完成此迁移,保留注释备份)
# 3. 配置搜索服务器的 API key(密钥不入仓库):
# 编辑 C:\Users\\.dsh\.credentials.yaml 添加,例如:
# TAVILY_API_KEY:
# 或在 Web 设置 → Plugins → search-mcp 里直接填 apiKey 字段。
# 4. 重启 dsh web 生效(Web bundle 未启用 HMR,必须重启进程)
dsh web
安装即自动生效三件事(由本包的 cordis.patch.yml bundle 层完成):
- insert:
- id: search-mcp # 本插件行(内置 Tavily 服务器条目,key 已迁移)
- id: web
config:
searchProvider: search-mcp # web_search 工具改走本插件的 provider
- id: web-search-deepseek
disabled: true # 内置 DeepSeek 搜索不可用
说明:bundle 层在
dsh-base/dsh-web-app之后、你的cordis.patch.yml之前应用;删除插件后该层整体消失,内置搜索原样恢复。
配置搜索服务器(设置页)
打开 Web 界面 → 设置 → Plugins → search-mcp,维护 servers 列表:
| 字段 | 说明 |
|---|---|
id | 服务器唯一标识,defaultServer 用它引用 |
kind | tavily / brave / exa / perplexity / duckduckgo / custom,自动补全默认端点、鉴权方式和工具名 |
transport | http(streamable-http,默认)或 stdio(本机命令,如 duckduckgo) |