前言¶
在 DeepSeek Harness(DSH)或各类 Agent 开发环境里,Model Context Protocol(MCP)服务常被用来扩展读写文件、调用工具等能力。配置往往写在本地 JSON 里,不一定进版本库,也很少有人按安全基线逐项核对。常见写法例如用 npx -y 拉取未锁版本的 npm 包:每次启动都可能拿到上游最新版,一旦供应链被投毒,Agent 在调用该 MCP 时就会执行不可信代码。npm 依赖有专门的审计工具,但 MCP 服务端声明(命令、参数、远端 URL)是另一条攻击面。下面介绍维护者 feely0208 在 DSH 插件目录中归类为 admin-security 的 dsh-mcp-audit(npm 包名 @deepwhale-cn/dsh-mcp-audit),它针对 MCP 配置文件做静态规则检查,不替代对 MCP 服务源码的审查。
这是什么¶
dsh-mcp-audit 是一款 DSH 安全类插件,当前 npm 版本为 0.1.1(MIT 许可证)。定位一句话:审计 MCP 配置里的未锁定远端包、明文端点、可执行本地服务。仓库地址:https://github.com/feely0208/dsh-mcp-audit;社区目录页:https://www.skillhub.cn/plugins/feely0208/dsh-mcp-audit。DSH 社区插件站点(如 dsh-plugin.org)与 DeepSeek / 幻方无官方从属关系,安装前仍建议自行查看源码与许可证。
MCP 服务通常比普通插件权限更大(文件、工具、账号相关能力),而配置分散在个人机器上时更难被团队流程覆盖。本插件只做「配置长什么样」的规则扫描,与 dsh-dep-audit 分工明确:后者查 npm 依赖,本插件查 MCP 配置。
它查什么¶
规则按 README 中的分级如下(具体条目与依据可用 --list-rules 查看):
| 级别 | 内容 |
|---|---|
| 高 | npx -y 未锁版本;明文 http:// 端点 |
| 中 | 指向本地可执行文件或脚本 |
| 低 | 仓库里找不到 MCP 配置 |
README 用未锁版本的 filesystem 服务举例:配置类似 "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem"] 时,每次启动都会拉最新包,且缺少可回滚的版本记录;将包名锁到具体版本(如 @2024.11.0)可缓解「上游悄悄改包」一类风险。
安装与启用¶
运行环境要求(来自 package.json):Node.js >= 18,DSH >= 0.1.0-rc.6。
在 DSH 中安装(Web 配置档):
dsh plugin --profile web add @deepwhale-cn/dsh-mcp-audit
不通过 DSH 插件机制、仅作 CLI 使用时:
npx @deepwhale-cn/dsh-mcp-audit
插件以当前 dsh / node 进程权限读取本机上的 MCP 配置路径;安装或 npx 执行前,请确认你信任该包来源并阅读仓库代码。
典型用法¶
安装后可通过 dsh-mcp-audit 命令行入口操作。README 给出的示例:
先看演示检出效果:
dsh-mcp-audit --demo
列出规则及依据,便于对照整改:
dsh-mcp-audit --list-rules
生成 HTML 报告(示例输出文件名为 r.html):
dsh-mcp-audit --html r.html
官方 README 附有演示输出、规则列表与 HTML 报告截图(托管于 deepwhale.org.cn 的 plugin-assets),可作为预期输出参考。
适用场景与边界¶
适合谁:在本地或 CI 中为 Agent / IDE 维护 MCP 配置的开发者;希望在接 MCP 进 Agent 前做一层配置 hygiene 的团队。
边界(README 明确说明):
- 只审配置,不审服务本身 —— 服务代码是否外发数据、逻辑是否恶意,本工具看不到。
- 锁定版本不等于绝对安全 —— 能防「上游悄悄改」,防不了「包本身恶意」。
- 与依赖审计插件互补,不能替代最小权限、密钥扫描等其它 guard 能力。
本插件是工具软件;使用者须遵守所在地区法律法规,对使用后果自行承担责任。
结尾¶
dsh-mcp-audit 把 MCP 配置里几类高频风险(未锁远端包、明文 HTTP、本地可执行路径、缺失配置)收成可重复的 CLI / DSH 插件流程,适合在扩 MCP 能力前先做一轮配置审计。进一步了解与安装: