自管 MCP 连接与配置,可视化设置页管理服务
28/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/danhcng3822f/dsh-mcp-kimicodeandmgr.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 74 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 32 处,展示前 27 条)
- 写入本地文件gen.mjs:16
mkdirSync(output, { recursive: true }) - 写入本地文件gen.mjs:17
writeFileSync(join(output, `typert.${artifact.face}.js`), artifact.js) - 写入本地文件gen.mjs:18
writeFileSync(join(output, `typert.${artifact.face}.d.ts`), artifact.dts) - 写入本地文件gen.mjs:20
writeFileSync(join(output, 'typert.remote-client.js'), artifact.remote.js) - 写入本地文件gen.mjs:21
writeFileSync(join(output, 'typert.remote-client.d.ts'), artifact.remote.dts) - 写入本地文件gen.mjs:22
writeFileSync(join(output, 'typert.remote-client.d.ts.map'), artifact.remote.dtsMap) - 读取本地文件harness-root.mjs:23
return MARKERS.every(marker => existsSync(join(candidate, marker))) - 读取本地文件packages/dsh-mcp-mgr/src/index.ts:465
exists: existsSync(path), - 读取本地文件packages/dsh-mcp-mgr/src/index.ts:480
states.push({ layer: layerOf(path), path, exists: existsSync(path), writable: false }) - 读取本地文件packages/dsh-mcp-mgr/src/version.ts:54
const pkg = JSON.parse(readFileSync(new URL(relative, import.meta.url), 'utf8')) as { version?: unknown } - 发起网络请求packages/dsh-mcp-mgr/src/version.ts:71
const response = await fetch( - 读取本地文件packages/tsdown.client.ts:238
const source = await readFile(fileId) - 读取本地文件packages/tsdown.client.ts:279
if (existsSync(emitted)) return emitted - 执行外部命令来自配置/变量verify.mjs:44
const child = spawn(process.execPath, [join(root, script), ...args], { - 写入本地文件verify.mjs:148
mkdirSync(join(workspace, '.dsh'), { recursive: true }) - 写入本地文件verify.mjs:150
writeFileSync(userMcpJsonPath(), JSON.stringify({ - 写入本地文件verify.mjs:157
writeFileSync(join(projectRoot, '.mcp.json'), JSON.stringify({ - 写入本地文件verify.mjs:163
writeFileSync(join(workspace, '.dsh/mcp.json'), JSON.stringify({ - 删除本地文件递归verify.mjs:214
rmSync(projectRoot, { recursive: true, force: true }) - 写入本地文件verify.mjs:228
writeFileSync(userMcpJsonPath(), JSON.stringify({ keepMe: 1, mcpServers: {} }), 'utf8') - 读取本地文件verify.mjs:237
const doc = JSON.parse(readFileSync(userMcpJsonPath(), 'utf8')) - 写入本地文件verify.mjs:239
writeFileSync(userMcpJsonPath(), JSON.stringify({ mcpServers: {} }), 'utf8') - 发起网络请求verify.mjs:525
const { code } = await (await fetch(authorizeUrl)).json() - 发起网络请求verify.mjs:531
await fetch(forged) - 发起网络请求verify.mjs:541
const issued = await (await fetch(goodUrl)).json() - 发起网络请求verify.mjs:545
const page = await fetch(callback) - 删除本地文件递归verify.mjs:798
rmSync(home, { recursive: true, force: true })
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 自管MCP连接与配置
- 可视化设置页管理服务
- 三层配置
DeepSeek Harness 的 MCP 引擎与管理器。fork 自 yangfch3/dsh-mcp-mgr,MCP 层按 kimi-code 架构重写:自包含引擎、三层配置、传输驱动的状态。
README
由 DeepSeek 最新模型翻译生成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 分层、状态模型与工具命名方案的功劳归该项目。
展开完整文档(README 剩余 1 节)
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。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
danhcng3822f/dsh-mcp-kimicodeandmgr
自管 MCP 连接与配置,可视化设置页管理服务
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,025未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,358已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13938 个插件含 PR 收录与…
★ 350已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7