关于 package-guard-mcp
package-guard-mcp 是帮助 AI 编码 Agent 在安装前审查软件包的 MCP 服务。它检查注册表收录情况、OSV 公告、软件包元数据和相似名称,但不会获取软件包内容。
主要功能
- 01验证 npm 和 PyPI 中的软件包
- 02检查 OSV 漏洞与恶意软件公告
- 03查看软件包年龄、下载量和元数据
- 04审计清单文件中的依赖项
- 05查找已注册的 ASCII 相似名称
适用场景
- 01安装建议的软件包前进行审查
- 02检查 package.json 或 requirements.txt 中的依赖
- 03查询软件包版本是否有已知公告
MCP 相关
向 MCP 客户端提供 `verify_package`、`check_vulns`、`package_info`、`audit_deps` 和 `typosquat_scan`。它查询注册表和 OSV,不会获取软件包内容。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 软件包名称(例如 "express"、"@scope/pkg"、"requests")。 |
| version | string | 否 | 要检查漏洞的特定版本(默认:latest)。 |
| ecosystem | enum | 否 | 包生态系统:npm 或 pypi(默认 npm)。此处其他生态系统没有注册表客户端。请对这些生态系统使用 check_vulns。npm | pypi |
详细介绍
package-guard-mcp
一个 MCP 服务,可在 Agent 安装软件包前对其进行检查。它会确认软件包名称已注册、OSV 中没有针对它的安全公告,并检查软件包的发布时间和下载量。结果确定性高,不使用大模型,且免费。
大模型经常会建议不存在的软件包名称,攻击者会注册这些幻觉名称,将恶意软件混入由 Agent 执行的安装中。这种做法被称为 slopsquatting。检查方法是查询注册表:如果 npm 或 PyPI 中没有该名称的软件包,verify_package 会返回 likely_hallucination: true。这只表示“在此注册表中不存在”,仅此而已——它无法区分虚构名称、拼写错误或重命名;仅存在于私人注册表中的软件包也会被判定为缺失。
它绝不会获取或读取软件包内容。没有安装脚本、代码或 tarball。没有 OSV 安全公告且下载量健康的恶意软件包,会被判定为 safe。
安装
{ "mcpServers": { "package-guard": { "command": "npx", "args": ["-y", "package-guard-mcp"] } } }
工具
verify_package:主要防护工具。根据注册表中是否存在该名称(若不存在,会返回likely_hallucination,并在 npm 上附带“你是不是想找”列表)、OSV 中已知的漏洞和恶意软件信息、发布时间和每周下载量、名称与 npm 搜索结果的编辑距离是否在 2 以内、弃用情况和许可证,返回safe、caution或danger。check_vulns:通过 OSV 查询名称和版本对应的已知漏洞及恶意软件安全公告。package_info:注册表元数据,包括最新版本、弃用情况、许可证、代码仓库、每周下载量和发布时间。audit_deps:检查一组名称、package.json 中的dependencies和devDependencies,或 requirements.txt。typosquat_scan:生成 ASCII 外观相似的名称,并报告其中哪些已注册。
范围和限制
check_vulns 直接查询 OSV.dev,支持全部七个生态系统:npm、PyPI、Go、crates.io、RubyGems、Maven、NuGet。其他所有检查都需要软件包注册表,目前支持两个客户端:npm 和 PyPI。因此,verify_package、package_info、audit_deps 和 typosquat_scan 仅接受 npm 或 pypi。建议和易混淆名称信号使用 npm 搜索 API,因此仅支持 npm。
audit_deps 读取清单文件,不读取锁文件,也不会解析依赖树。它只检查你提供的条目及其依赖,不会检查这些条目的依赖项,最多检查 40 个名称。版本范围会简化为其中的数字,因此 ^4.17.20 会按 4.17.20 检查。
vulnerabilities.checked: false 且 count: null 表示 OSV 请求失败,软件包未经过检查;verify_package 会将判定下调为 caution,而不是判定为安全。count: 0 表示 OSV 已响应,且没有发现问题。audit_deps 目前没有此类防护:如果其批量 OSV 请求失败,每个软件包都会报告 0 个漏洞。
规则更新
此服务大约每天会向规则源询问是否有更新的规则集,并在有更新时应用。请求包含两项内容:发起请求的界面(此处为 facade),以及当前已安装的规则版本。不包含机器 ID、用户 ID、文件名,也不包含任何扫描内容。
规则包使用 Ed25519 签名,并通过编译进此软件包的公钥进行验证,因此由哪个镜像提供规则包并不重要。如果规则包未通过签名、架构或 ReDoS 检查,就会被丢弃,现有规则保持不变。使用 --offline 可关闭更新;设置 AGENT_GUARDS_NO_FEED=1 或在 ~/.agent-guards/config.json 中配置 {"feed": false} 也可关闭更新。规则包格式及自行验证方法:https://github.com/mlawsonking/MCP/blob/main/rules/README.md
它会调用 https://package-guard.vercel.app(设置 PACKAGE_GUARD_API 可覆盖)。这是此仓库中的六个 Agent 防护工具之一。MIT 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。