DeepSeek Harness 简洁、优雅的 MCP 工具管理器。
类 Cursor 风格的全局 MCP 控制:自由添加、停用、删除 MCP 接口与工具,适合 MCP 测试、按需请求、拓展上下文等场景。
GitHub 仓库 · npm · 问题反馈 · English
|
|
| 粘贴 mcpServers JSON | 工具描述 tooltip |
| --- | --- |
|
|
|
## 🧩 工作原理
```
DeepSeek Harness Web (dsh web)
├── Host 插件(lib/) ← cordis bundle patch,复用原生 MCP 客户端
│ ├── manager.js 连接、工具注册、启停
│ ├── store.js ~/.dsh/dsh-mcp-tools/state.json(原子写、监听外部修改)
│ └── routes.js /mcp-tools/api/*
└── 客户端 bundle(client/client.js)
└── 设置分区「MCP」(id: mcp,order: 18)—— classic script,无需构建
```
- 启停生效于**注册时**而非调用时:停用的工具根本不出现在模型工具列表里。
- 状态存于 `~/.dsh/dsh-mcp-tools/state.json`,原子写入;外部修改会被监听并热应用。
- REST 接口:`GET /mcp-tools/api/state`、`POST /servers/{test,save,delete,toggle,refresh}`、`POST /tools/{toggle,bulk}`、`POST /import`、`POST /reload`、`GET /logs`;详见 [docs/API.md](docs/API.md)。
## 🔒 安全说明
- 请求头以**明文**保存在本地状态文件里,只在本机——不要提交到仓库或同步到公开位置。
- 给每个 MCP 服务器使用独立、最小权限的密钥。
- 除你配置的 MCP 服务器外不发起任何网络请求,没有遥测;删除服务器后它的工具会从后续所有请求中移除。
## 🛠 开发
```bash
git clone https://github.com/hxlog/dsh-mcp-tools.git
cd dsh-mcp-tools
node --check client/client.js
npm run selftest
```
把源码目录链接进 profile 调试(Windows 示例):
```bat
rmdir "C:\Users\<你>\.dsh\profiles\web\node_modules\dsh-mcp-tools"
mklink /J "C:\Users\<你>\.dsh\profiles\web\node_modules\dsh-mcp-tools" "D:\path\to\dsh-mcp-tools"
```
- **客户端改动**:刷新页面即可,bundle 直接从磁盘提供,无构建。
- **Host 改动**:改一次 profile 的 `cordis.patch.yml`(例如追加一行注释)触发 HMR 重组,日志出现 `MCP 管理器已启动` 即生效。
- 面板是单个 classic script,只能 `require` `react` 与 `@deepseek-ai/dsh-client-ui-primitives`。
## ❓ 常见问题
| 问题 | 处理 |
| --- | --- |
| 设置里没有 MCP 分区 | 多半是 bundle 未启用:插件页确认并刷新,必要时重启 `dsh web`。 |
| 会话里看不到工具 | 确认服务器开关已打开、对应工具 chip 也已启用;停用的工具不会被注册。 |
| 测试连接失败 | 检查 URL、服务器是否使用 `streamable-http`(而非普通 SSE)、请求头名称是否与服务端要求一致;网络 / 代理问题也会在这里暴露。 |
| 状态文件在哪 | `~/.dsh/dsh-mcp-tools/state.json`;删除即重置为空,下次启动自动重建。 |
## 📄 License
[MIT](LICENSE) · Powered by [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)
[](https://github.com/deepseek-ai/deepseek-harness)