← 返回列表
未验证
DeepSeek Harness 的 MCP 引擎与管理器。插件自己掌管整条 MCP…
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/21 · 已提供中文文档
DeepSeek Harness 的 MCP 引擎与管理器。fork 自 yangfch3/dsh-mcp-mgr,MCP 层基于 kimi-code 的架构重建:自包含引擎、三层配置、传输驱动的状态。
综合分
28
GitHub 分
28
用户评分
—
★ Stars
1
周下载量
—
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/danhcng3822f/dsh-mcp-kimicodeandmgr.git数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-mcp-kimicodeandmgr
DeepSeek Harness 的 MCP 引擎与管理器。插件自己掌管整条 MCP 链路——配置解析、传输、连接生命周期、OAuth、工具注册——并提供设置页界面。
关于本 fork
本项目 fork 自 yangfch3/dsh-mcp-mgr,原插件提供了工作区 mcp.json 发现、热同步与设置页界面。
其后 MCP 层被重写为 Kimi Code(Moonshot AI)的架构,并有两处刻意的偏离:
- 自主 MCP 引擎:上游插件委托给 @deepseek-ai/dsh-mcp-client,本 fork 直接基于 @modelcontextprotocol/sdk,自己掌管传输、连接生命周期与 OAuth。这是「按服务真实状态」得以成立的前提。
- 项目级配置(如 Kimi Code):三层配置而非一层,后两层以显式工作区信任为闸。
此处不再分发 Kimi Code 源码——它仅作参考。MCP 分层、状态模型与工具命名方案的功劳归该项目。
功能
- 三种传输:stdio、Streamable HTTP(http)、旧式 sse
- 三层配置:~/.dsh/mcp.json /.mcp.json /.dsh/mcp.json,后两层需信任工作区
- 真实状态:pending / connected / failed / disabled / needs-auth / removed,由传输事件驱动,不再从工具注册表反推
- OAuth:动态客户端注册、PKCE、本地回调服务、CSRF state 校验;令牌存于 ~/.dsh/credentials/mcp.json
- 调用级恢复:工具调用撞上断开的连接时先探活、重试一次,再重连并重发
- 热重载:文件监听发布 { upsert, remove } 差分,改一个 server 不会牵动其他连接
- 工具注册为 mcp____
MCP 服务列表
适用范围
插件由两个包组成,覆盖面不同:
| 包 | 角色 | 平台 |
| --- | --- | --- |
| dsh-mcp-mgr | MCP 引擎:配置、传输、连接、OAuth、工具注册 | 未声明平台 |
| dsh-mcp-mgr-ui | 设置页标签 | 仅 web |
因此设置页标签仅存在于 web profile。引擎未声明平台且只注入 tools,按代码推断它在 non-web profile 也能运行(注册 mcp__ 工具,配置手改 mcp.json),但这一点未经测试——本项目的全部验证都只在 web profile 下进行。
安装
本 fork 未发布到 npm。npm 上的 dsh-mcp-mgr / dsh-mcp-mgr-ui 属于上游项目,仍指向其 0.1.x,因此 plugin add dsh-mcp-mgr@latest 装到的是上游而非本项目。请从源码安装:
git clone https://github.com/danhcng3822f/dsh-mcp-kimicodeandmgr
cd dsh-mcp-kimicodeandmgr
pnpm install
DSH_REPO= pnpm build
node scripts/install.mjs # --profile ,默认 web
npx @deepseek-ai/dsh web
scripts/install.mjs 把两个包链接进 $DSH_HOME/profiles/node_modules,并向该 profile 的 cordis.patch.yml 追加 loader 行;要求 profile 已存在,可重复执行。若装过上游插件,先卸载以免同名冲突。
卸载:
node scripts/uninstall.mjs
完整说明见 USAGE.md(英文)。
配置
优先级从低到高,后面的层会覆盖同名条目:
| 层级 | 界面显示 | 路径 | 界面可写 |
| --- | --- | --- | --- |
| user | 全局 | ~/.dsh/mcp.json(或 $DSH_HOME/mcp.json) | 是 |
| projectRoot | 项目 | /.mcp.json | 否 |
| project | 本地 | /.dsh/mcp.json | 否 |
项目层仅在工作区处于 git 仓库内时存在;不在仓库内则整层跳过。两个项目层 必须在设置页显式「信任此工作区」后才会加载(在此之前既不加载也不监听):项目层的 stdio 条目会执行仓库提供的命令。信任决策存于 ~/.dsh/trusted-workspaces.json。
{
"mcpServers": {
"unity": { "url": "http://localhost:8090/mcp" },
"filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/data"] },
"legacy": { "transport": "sse", "url": "https://example.com/sse" },
"paid": { "url": "https://api.example.com/mcp", "auth": "oauth" },
"token": { "url": "https://api.example.com/mcp", "bearerTokenEnvVar": "MY_MCP_TOKEN" }
}
}
- transport 缺省时自动推断:有 command 视为 stdio,有 url 视为 http。旧式 SSE 端点因此必须显式写 "transport": "sse"
- 每条支持 enabled、startupTimeoutMs、toolTimeoutMs、enabledTools、disabledTools
- 远程条目支持 headers、bearerTokenEnvVar(只存变量名,不存令牌)、auth: "oauth"
- 不填 cwd 则 stdio 子进程在工作区目录运行。项目层的相对 cwd 相对声明它的文件解析(仓库因此无需知道自己被克隆到哪);user 层按原样传递,相对工作区解析
- 密钥不会进入浏览器:Remote 表面把 env 投影为 envKeys、headers 投影为 headerKeys
- 启动 stdio 子进程前清洗父环境(匹配 KEY|PASSWORD|SECRET|TOKEN 的变量与 DSH_);条目自己的 env 再合并到上层,故显式配置的凭据不会被清掉
开发
pnpm install
DSH_REPO= pnpm build # tsc host → gen.mjs → tsc ui → tsdown
DSH_REPO= pnpm verify
verify.mjs 全程使用真实服务器,不用 mock:
| fixture | 覆盖范围 |
| --- | --- |
| fixture-mcp-server.mjs | stdio:工具发现、env 透传、结构化结果、isError、子进程崩溃(真实断线) |
| fixture-mcp-http-server.mjs | streamable-http:bearer 注入、401 分流 |
| fixture-mcp-sse-server.mjs | 旧式 sse:双端点握手,以及传输层从不上报的「静默死亡」 |
| fixture-oauth-server.mjs | 动态注册、PKCE、state 校验、token 交换、授权后重连 |
工具桥同时在手写 registry 与真实 harness ToolRuntime 上验证,并走完整的 ctx.tools.execute() 派发;最后几节把已构建的插件包挂进真实 Cordis context,覆盖插件装配、mcpMgr 服务键、卸载回收与重载语义。
改 src/types.ts(wire 字段)后必须重跑 gen.mjs 并重打 UI bundle——严格 codec 会静默剥离未知字段。
node scripts/install.mjs
node scripts/uninstall.mjs
许可
MIT。
packages/vendor-typert-protocol 是 DeepSeek Harness 中 Typert protocol 源码的内联副本,同为 MIT。扫码进群