扫描 Claude Code / Codex / CodeBuddy 配置中的 MCP,通过 stdio 与 streamable-http initialize 握手检测真实连通性,支持启停开关与 /mcp 控制面板。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-scan-mcp
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:chenbin-dev/dsh-scan-mcp
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness 的 Windows MCP 控制中心 —— 扫描本机编码 Agent(Claude Code / Codex / CodeBuddy)
配置中的 MCP 服务器,用真实的 MCP initialize 握手检测真实连通性(同时支持 stdio 与
streamable-http 两种传输协议),并可在界面上一键启用/停用。
English README · npm · GitHub
功能特性
- 自动扫描:读取 Claude Code(
~/.claude.json)、Codex(~/.codex/config.toml)、 CodeBuddy(~/.codebuddy/mcp.json)的 MCP 配置,跨 Agent 去重(同一 MCP 只显示一条,来源合并) - 真实连通性检测:stdio 型启动实际进程、streamable-http 型发起真实
initialize握手 (兼容 JSON 与 SSE 响应,支持配置headers认证透传);在线(绿)/ 离线(红)一目了然, 离线时展示具体失败原因与耗时 - 仅检测启用项:只有开启的 MCP 才会被连接检测;停用的默认显示离线(「已停用(未启用,不检测连接)」), 绝不发起连接;重新启用后自动重测
- 单独重连:对任意 MCP 单点重测(停用项按钮置灰)
- 滑动开关:默认全部启用,可单独关闭/打开;状态持久化到
~/.dsh/dsh-scan-mcp.json(重启不丢) /mcp弹出控制面板:聊天框输入/mcp弹出模态面板(不是 AI 回复)- 设置页:设置 → Windows MCP 控制中心(卡片布局)
- 模型工具:
mcp_discovered_catalog(扫描 + 连通性检测,只读)
环境要求
- Windows(扫描的是 Windows 用户目录下的 Agent 配置)
- DeepSeek Harness(DSH)web profile(
dsh web) - Node.js ≥ 20(streamable-http 检测使用内置 fetch)
安装
任选其一(把 <profile-name> 换成你的 profile 名,如 web):
# 1. 从 npm 安装(推荐)
dsh plugin --profile <profile-name> add dsh-scan-mcp
# 2. 从 GitHub 安装
dsh plugin --profile <profile-name> add https://github.com/chenbin-dev/dsh-scan-mcp.git
# 3. 本地开发调试
dsh plugin --profile <profile-name> add /path/to/dsh-scan-mcp
安装后重启 profile(如重新运行 dsh web)。本插件是静态 bundle:DSH 重启不丢失,也无需每次会话审批。
使用
- 任意会话输入
/mcp→ 弹出 MCP 控制面板:- 汇总行:去重 MCP 数 · 在线 · 离线 · 已停用 · 诊断数
- 每个 MCP:名称、传输类型(stdio / streamable-http)· endpoint、● 在线 / ● 离线、 失败原因、重连按钮(已停用项置灰)、滑动开关
- 顶部:刷新扫描 / 关闭
- 或打开 设置 → Windows MCP 控制中心 查看同样的内容(卡片式)
- 模型侧可直接调用工具
mcp_discovered_catalog
扫描来源
| 来源 | 配置文件 | 解析方式 |
|---|---|---|
| Claude Code | ~/.claude.json |
JSON mcpServers 对象 |
| Codex | ~/.codex/config.toml |
TOML [mcp_servers.<name>] 小节 |
| CodeBuddy | ~/.codebuddy/mcp.json |
JSON |
文件缺失/不可读会记入面板「诊断」计数,不影响其余扫描。想加更多来源?改 src/index.js 顶部的
SOURCES 数组即可(或提 PR / issue)。
传输协议支持
- stdio:以
command+args(含env)启动进程,stdin 发initialize,从 stdout 等 JSON-RPC 响应 - streamable-http:向
urlPOSTinitialize,携带Content-Type: application/json与Accept: application/json, text/event-stream; 兼容纯 JSON 与 SSE(data:行)响应;配置中的headers(如Authorization)原样透传
隐私与安全
- 插件只展示环境变量 / header 的名称,从不读取或展示凭据值;Token 仍留在你的 Agent 原始配置里
- 检测只是握手(
initialize):从不调用任何 MCP 工具、检测完即终止进程不常驻、 停用的 MCP 完全不被探测 - 状态文件
~/.dsh/dsh-scan-mcp.json只记录 MCP id 与开关,不含任何凭据
故障排查
某 MCP 一直离线? 点该行「重连」查看具体原因:
ERR_MODULE_NOT_FOUND:通常是 npx 缓存损坏。执行npm cache clean --force(或删除%LocalAppData%\npm-cache\_npx\<hash>对应目录)后重连npm ... 404:包名不存在,改 Agent 配置里的包名(如 sequential-thinking 应为@modelcontextprotocol/server-sequential-thinking)连接超时(stdio):进程 20 秒内未响应 initialize(常见于需要代理的网络)HTTP 状态 404/405(该地址可能不是 MCP 端点):url不是 MCP 端点或服务端未实现 MCP网络不可达 / 连接超时(streamable-http):无法访问端点,检查网络/代理未识别到 MCP initialize 响应:返回内容非 JSON/SSE,端点可能需要headers认证
开发
dsh-scan-mcp/
├── package.json # 插件元数据(dsh.bundle.patch / dsh.client)
├── cordis.patch.yml # bundle 补丁:插入插件行(id: wmcp)
└── src/
├── index.js # Host 半:扫描 + 握手检测 + HTTP RPC + 工具 + /mcp 命令
└── client.js # Client 半(浏览器):设置页 + 弹出面板 + 命令触发
- Host 半是纯 ESM 模块(
export { name, inject, apply }),只用 Node 内置能力 (child_process/fs/fetch);peer 依赖@deepseek-ai/dsh-tools由宿主提供 - Host ↔ Client 通过 HTTP RPC:
POST /__scan-mcp/scan|test|setEnabled - 检测结果缓存 30 秒、并发 3、stdio 超时 20 秒 / http 超时 12 秒
- 语法检查:
node --check src/index.js && node --check src/client.js(即npm test)
License
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 33047
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 4972
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1136
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 509
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 502
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 457
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。