信任
安全扫描
Star 衡量人气。评分衡量仓库信号。认证证明服务器能响应真实的 MCP 握手。安全扫描回答第四个问题:这段代码在你的机器上运行时会做什么。每个已认领和已认证的服务器每周扫描一次,并在列表页展示公开评分卡。
扫描器是NVIDIA SkillSpector,一个面向代理技能和 MCP 服务器的开源(Apache 2.0)安全扫描器,以静态模式运行。不会执行任何代码:扫描读取仓库的最新快照,遍历代码,并向 OSV.dev 查询依赖。它与认证是两回事,认证会在内核沙箱中真正运行服务器。
检查内容
已知漏洞依赖
锁文件和清单与 OSV.dev 比对,适用于固定版本的每个 CVE 和 GHSA 公告都会带着编号显示。这是最常见也最容易修复的发现。
数据外泄
批量读取整个环境变量、把对话上下文发送给第三方,以及环境变量或文件内容流向网络或 shell 汇点的污点流。
凭据与权限
读取 SSH 密钥或云凭据文件、访问 Docker socket、特权容器,以及发布代码中的 sudo。读取本地 .env 视为配置,而不是窃取。
隐藏指令
提示注入、反拒绝文本,以及窥探其他代理配置目录,检查范围是代理真正会读取的文件:AGENTS.md、CLAUDE.md、SKILL.md 以及 .claude、.cursor、.codex 目录。
危险执行与混淆
eval、动态导入、子进程调用、编码载荷、混合文字系统的文本,以及用 YARA 规则匹配的恶意软件特征。
评分方式
SkillSpector 为小型技能目录而设计。对准整个 MCP 服务器仓库时,它自身的评分会饱和:README 里的 HTML 注释算作隐藏指令,每次对外 API 调用算作外泄,十几个中等发现就累加到 100。微软的 Playwright MCP 用那种算法得到 100 CRITICAL。因此 MCPVault 保留 SkillSpector 的全部发现,但套用自己的 MCP 服务器策略。
- 发现按所在文件分类。发布代码和面向代理的指令文件计分。README、其他文档、配置、CI 和测试文件成为备注。
- 每条规则的权重反映它对安装 MCP 服务器的人意味着什么。子进程调用往往就是工具的用途本身,批量收集整个环境变量则不是。
- 按规则递减:第一次出现全额计分,第二次一半,第三次四分之一,之后不再计分。重复一百次的模式无法淹没一个严重的发现。
- 已知漏洞依赖按包计分(critical 12、high 8、medium 4、low 2),上限 30 分,所以旧的锁文件读起来是“请更新这些”,而不是“不要安装”。
分数累加为 0 到 100,越低越好:0 到 20 低风险,21 到 50 注意,51 到 80 高风险,81 及以上严重。为了透明,SkillSpector 的原始评分也一并保存。部分权重示例:
不计分的内容
扫描前会把快照裁剪到用户真正安装的部分:测试、CI 工作流、docs 目录、示例、构建产物和 vendored 依赖都会移除。仍留在文档或配置中的模式匹配会记录为带一行原因的备注,不计入评分。
对外请求同样不计分,因为封装 API 的 MCP 服务器必须调用那个 API。评分卡改为列出代码通信的主机,让你在授予任何权限之前看清数据去向。
如何阅读评分卡
评分框显示数字和标签。下方是计分发现数、漏洞依赖数、外部主机数和备注数。漏洞依赖列出包名、版本和公告编号。发现显示规则、模式、文件与行号,以及含义。公开评分卡显示排名靠前的发现;拥有者仪表板显示全部发现并附修复建议。
低分意味着扫描器在发布代码中没有发现类似凭据窃取、数据外泄或隐藏指令的内容。它不意味着可以放心授予 root 权限。请阅读通信对象一行和工具列表,并保持客户端的权限确认开启。
面向服务器拥有者
仪表板显示每个计分发现,包括匹配的代码片段和修复建议,以及被排除的备注。修复真实的问题后,下一次每周运行会自动采用新的提交。更新有漏洞的依赖通常是最快改善评分的方法。
对于无法更改的误报,比如触发有害内容规则的安全提示,可以在 README 中加一句说明,方便用户理解。如果评分卡显示“不可用”,说明列表上的仓库地址是私有的、已改名,或大到无法生成快照。请在列表编辑器中修正地址,下一次运行会重试。
局限
这是基于模式的静态分析。它能找到看起来像已知问题的东西,但不能证明没有未知问题,也不是渗透测试。看起来像凭据路径的字符串可能只是注释,子进程调用可能正是功能本身。所以每个发现都标出文件和行号,方便你自己核对。
扫描是对认证的补充。认证证明服务器能运行并响应,扫描告诉你代码在运行时会去触碰什么。两者都不能替代在授予服务器文件、密钥或 shell 访问之前阅读源码。