官方 MCP 客户端(dsh-mcp-client)的只读运行时管理面板:/mcp 命令与设置页 MCP 页签展示连接状态、已注册工具、错误与重连计数,脱敏展示并提供启停 patch 建议。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel
GitHub 来源的插件在安装时会在你的机器上执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness 官方 MCP 客户端的只读运行时管理面板——一眼看清每个 MCP 服务器的状态、工具、错误与重连计数,绝不改动你的配置。
English · 简体中文 · Español · Português · हिन्दी
🔭 可观测优先。
@deepseek-ai/dsh-mcp-client的连接状态是私有的——只有日志。本插件展示一切能观测到的事实(配置、工具注册表、Loader 状态),对观测不到的字段如实显示 "unknown",绝不猜测;同时给出让状态可观测的最小上游 seam 提案(见 upstream proposal)。
兼容性
- 运行时:DeepSeek Harness ≥
0.1.0-rc.5(peerDependencies 固定0.1.0-rc.6包线)。 - 最后验证:2026-08-14,针对 deepseek-harness 源码 checkout(workspace 包
0.1.0-rc.5,mainline7b9644f)——headless/mcp端到端 + 实时 web profile;证据见 docs/research-notes.zh.md。同日对 mainline47f9438+mcp/statusseam 分支(feat/mcp-client-status-observability-seam)复验:真实server-everything行经打包插件渲染status: connected (source: upstream-event),并跑通与启动器一致的全流程;记录见 docs/optimization-plan-v2.zh.md。
你能得到什么
| 界面 | 展示内容 |
|---|---|
/mcp 命令 |
transport、目标、工具数、连接状态、最近错误、重连计数——模型可读、可日志重建,支持双语(outputLanguage: en|zh) |
| 设置 → 插件 → MCP 页签 | 同一快照的只读视图:状态徽标、可展开工具清单、脱敏错误、探测结果 |
| 面板探测按钮 | 从页签对单个 streamable-http 服务器一键发起连通性探测;结果仍仅面板可见 |
| 被动探测 | 可选的每服务器后台可达性徽标,与连接状态严格分离展示 |
| 自动刷新 | 宿主建议刷新间隔(refreshIntervalMs);页签轮询并在后台隐藏时暂停 |
/mcp <server> disable|enable |
应应用的 cordis.patch.yml 确切行——只是建议,绝不写文件 |
mcp_probe 工具 |
对 Streamable HTTP 端点的一次性连通性探测(后台 job),结果仅面板可见 |
快速上手
# git 通道(经包的 prepare 脚本构建)
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.2.0
# npm 通道(已发布产物,免构建放行)
dsh plugin --profile web add dsh-mcp-panel@0.2.0
重启(或让 web 面板热重载 cordis.patch.yml),然后:
/mcp
/mcp everything tools
/mcp everything disable
MCP servers (1):
- everything [mcp-everything] stdio node …/server-everything/dist/index.js
| 13 tools | enabled | status: unknown (source: derived) | reconnects: — | last error: —
手动安装:把 dsh-mcp-panel 放进 profile 的 node_modules(或共享的
$DSH_HOME/profiles/node_modules 回退目录),并在 cordis.patch.yml 添加:
- insert:
- id: mcp-panel
name: dsh-mcp-panel
config:
probeEnabled: true
probeTimeoutMs: 10000
卸载
- 从
cordis.patch.yml移除mcp-panel行(web 面板会热重载;其他面板重启)。 - 从 profile 的
node_modules(或共享的profiles/node_modules回退目录)删除该包。 - 用
dsh web --dump-config确认没有残留的mcp-panel行。
诚实契约
- 只读。 绝不写任何配置文件;
disable/enable只是打印建议,由你自行应用。 - 不伪造状态。 无上游数据的连接字段显示
unknown/—,并标注statusSource: derived。 - 展示脱敏。 URL 查询串凭据、userinfo 密码、header 值、Bearer token、JWT 在渲染前全部清洗;配置中的
headers从不进入任何快照。 - panel-only 结果。 探测细节只进设置页签,不进模型上下文;
/mcp输出是模型可读面,且完全可从会话日志重建。 - 零 mcp-client 改动。 传输 / OAuth / 协议不动——可观测缺口由上游提案覆盖,本插件已实现其消费侧(类型化的
mcp/status事件 +mcpStatus查询服务,运行时特性探测)。
配置
| 字段 | 默认 | 说明 |
|---|---|---|
probeEnabled |
true |
是否注册 mcp_probe 工具(需要组合里有 ctx.jobs) |
probeTimeoutMs |
10000 |
单次探测超时 |
maxProbes |
10 |
面板展示的探测记录上限 |
refreshIntervalMs |
0 |
建议的面板刷新间隔(毫秒;0 = 仅手动刷新) |
outputLanguage |
en |
/mcp 命令输出语言(en | zh | es | pt | hi) |
passiveProbeEnabled |
false |
是否周期性后台探测 streamable-http 服务器 |
passiveProbeIntervalMs |
60000 |
被动探测间隔(毫秒) |
权限与数据
- 读取:Loader 条目、工具注册表(
mcp__<server>__名字)以及上游落地后的mcp/status事件。 - 写入:无。绝不修改任何配置文件。
- 网络:仅一次性
mcp_probe(及可选被动探测)向你已配置的端点 POST 一次 MCPinitialize请求;已配置 headers 仅用于该请求,从不展示或记录。 - 无遥测、无外部服务,除可选探测定时器外无后台任务。
故障排查
- 行不见了?运行
dsh web --dump-config,检查mcp-panelinsert 是否生效且 id 唯一。 - 面板显示
status: unknown (source: derived)——在上游 seam 落地前属预期;见 docs/upstream-proposal.md。 - 面板数据不更新?把
mcp-panel配置行的refreshIntervalMs设为正值(如5000)自动轮询。 - 启动日志出现 FAILED 的
mcp-panelfiber——确认包能从 profile 解析(裸name: dsh-mcp-panel经 profile 的node_modules或共享回退目录解析)。 - 回滚:移除该行(见「卸载」)。
安全
发现安全问题?请在 GitHub 提 issue,但不要粘贴密钥、key 或 token——先脱敏。本插件仅在内存中持有你所配置 MCP 服务器的凭据用于探测请求;它们从不进入日志或快照。
工作原理
- Host 半部——
mcpPanelTypert Remote 服务从三个只读来源组装快照:Loader 行(@deepseek-ai/dsh-mcp-client条目)、按mcp__<server>__名字空间分组的ctx.tools.schemas()、以及上游mcp/status观测。手写的./typert清单把mcpPanel/status注册进网关;zod被打包进产物,host bundle 自包含。 - 浏览器半部——
dsh.clientbundle(由/plugins/dsh-mcp-panel/client.js提供)通过ctx.remote.$mount挂载同一描述符,并注册只读的settings.plugins.tab条目(id: mcp)。presenter 是纯函数;样式带作用域且使用主题 token。 /mcp命令走标准命令注册表——每一行都落入command/run+command/done会话事件。
开发
pnpm install
pnpm run typecheck
pnpm test # 96 个测试:脱敏极端用例、分组、聚合容错、命令输出(五语言)、探测门控、客户端接线、presenter
pnpm run build # tsc 声明 → lib/types;tsdown → lib/index.js + lib/typert.host.js + lib/client.js
pnpm run verify:self-contained
pnpm pack
对真实 harness checkout 的验证:
node --import tsx/esm scripts/verify-headless.mjs 在进程内启动完整 web profile(临时端口),打印真实的 /mcp、/mcp <server> tools、/mcp <server> disable 输出。
License
Apache License 2.0 © 2026 dsh-mcp-panel contributors
链接
同类插件
hust-open-atom-club/oh-dsh★ 161
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
Jayden-X-L/forkprobe★ 65
同一任务并行试跑多个技能,对比结果选出最优。
vlln/plugin-registry★ 33
插件生态基建:浏览器面板管理官方 repository 插件(0 patch)+ make-dsh-plugin 插件开发引导技能。
forrestchang/dsh-multica-runtime★ 28
让 dsh 运行时跑在 Multica 上。
DietCokewithSugar/dsh-user-experience★ 18
帮你发现项目中可能存在的用户体验问题:自动走查 React/TypeScript 源码,定位问题并给出具体优化建议。
omdsh-dev/dsh-plugin-check★ 17
插件健康检查:扫描清单协议/patch 格式/构建陷阱,零依赖只读。