安全#安全扫描

vet MCP:智能体装依赖前先查是不是恶意包

SafeDep 开源的依赖检查工具 vet 自带 MCP:AI 推荐 npm 或 PyPI 包时先查恶意包报告、已知漏洞、许可证和最新版本,防范包名幻觉抢注。

项目与安装文档

查看项目

https://github.com/safedep/vet

编程智能体建议“装一下某某包”的时候,这个包可能根本不存在,也可能是有人照着模型常见的幻觉包名抢注的恶意包,这类攻击叫 slopsquatting。vet 是 SafeDep 开源的依赖安全工具,它内置的 MCP 服务器让智能体在安装前先查一遍:这个包有没有恶意报告、当前版本有哪些漏洞、许可证是什么、最新版本是多少。vet 截至 2026-10-06 约 1100 star。

能做什么

  • 恶意包查询:get_package_version_malware_report 对照 SafeDep 持续更新的恶意包情报库,查询免费、不需要 API key。
  • 漏洞与许可证:get_package_version_vulnerabilities 列出已知漏洞,get_package_version_license_info 返回许可证信息。
  • 识别幻觉包名:get_package_latest_version 和 get_package_available_versions 查版本,找不到最新版本往往说明包名有问题。
  • 流行度:get_package_version_popularity 帮助判断一个包是否被广泛使用。
  • SQL 查询扫描结果:vet_query_execute_sql_query 对 vet 的扫描结果做 SQL 查询。

适合谁

  • 让 Claude Code、Cursor 自动安装依赖、担心被带进恶意包的开发者。
  • 想在 AI 编码流程里加一道供应链检查的安全团队。

接入方式

用官方 Docker 镜像,在 Claude Code 项目的 .mcp.json 里添加:

{
  "mcpServers": {
    "vet-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/safedep/vet:latest",
        "server",
        "mcp"
      ]
    }
  }
}

也可以 brew install vet 后直接用二进制运行:vet -l /tmp/vet-mcp.log server mcp --server-type stdio。日志不要输出到 stdout,否则会干扰 MCP 通信。

编辑点评

依赖安全这一块,vet 的切入点很准:它解决的是 AI 编码特有的风险,智能体推荐的包名可能是编出来的。文档还给了一份 Cursor 规则示例,要求智能体安装任何包之前先调用 vet 检查,这种“规则加工具”的组合比单靠工具可靠。局限也要说清楚:MCP 目前只支持 npm 和 PyPI 两个生态;恶意包检测依赖 SafeDep 云端情报库,查询会把包名发给 SafeDep;用 Docker 运行需要定期更新镜像。SafeDep 另有托管版 MCP,延迟更低。许可证为 Apache-2.0。