🔍 Golf Scanner
Discover and audit MCP servers across your IDEs
📚 Documentation · 🚀 Quick Start · ⛳ Golf
______________________________________________________________________
免费的开源CLI,可在您的机器上发现MCP服务器配置,并运行安全检查以生成风险评分。单二进制。零遥测。不需要帐户。
快速开始
通过Homebrew安装:
brew install golf-mcp/tap/golf-scanner或者使用Go:
go install github.com/golf-mcp/golf-scanner/cmd/golf-scanner@latest了解您的MCP服务器:
golf-scanner scan运行安全审核:
golf-scanner audit它的作用
Golf Scanner是一个单一的静态二进制文件(纯Go,3个依赖项),它:
- 发现 跨7个IDE的MCP服务器配置——Claude Code、Cursor、VS Code、Windsurf、Gemini CLI、Kiro和Antigravity
- 进行20次安全检查 --9离线(无网络)+11在线(查询OSV、GitHub、npm、PyPI、OCI注册表、MCP注册表)
- 产生0-100的风险评分 每台服务器具有严重性加权评分和硬上限
不需要帐户。脱机运行。零遥测。
支持的IDE
克劳德代码·光标·VS代码·风帆·双子座CLI·基洛·反重力
用法
audit
发现服务器并运行带有风险评分的安全检查。
golf-scanner audit跳过网络检查(脱机模式):
golf-scanner audit --offline包含补救细节的详细输出:
golf-scanner audit --verboseCI/CD集成——如果发现高或关键问题,则失败:
golf-scanner audit --fail-on high --json| 标志 | 默认值 | 描述 |
|---|---|---|
--offline | false | 跳过网络检查(OSV、GitHub、npm、PyPI、MCP注册表、OCI注册表) |
--format | table | 输出格式: table 或 json |
--json | false | 速记为 --format json |
--fail-on | 如果发现严重程度或以上,则退出代码1: note, medium, high, critical | |
--verbose, -v | false | 显示完整的查找详细信息,包括补救措施 |
--quiet, -q | false | 仅显示汇总表 |
--verbose 和 --quiet 是相互排斥的。
安全检查
| 检查 | 检测内容 | 在线 |
|---|---|---|
| 服务器类型 | 将服务器分类为包管理器、容器、二进制文件、脚本或HTTP | |
| 命令安全 | 识别风险模式,包括特权升级和shell注入威胁 | |
| 凭据 | 在参数、URL和环境变量中查找明文凭据 | |
| 脚本位置 | 标记从不安全位置运行的脚本,如 /tmp 或主目录 | |
| 脚本权限 | 检测全球可写脚本文件 | |
| 二进制位置 | 评估跨系统路径和主目录的可执行文件位置 | |
| 二进制权限 | 检测全局可写或组可写二进制文件 | |
| 容器隔离 | 标志 --privileged 模式、危险功能、主机命名空间共享 | |
| 容器卷 | 标记危险卷挂载--根文件系统, /etc,Docker套接字 | |
| 注册表列表 | 确认MCP注册表包含状态 | 是 |
| 漏洞 | 向OSV.dev查询npm/PyPI包中的已知CVE和恶意软件 | 是 |
| 拼写错误 | 识别名称相似的软件包,暗示恶意模仿 | 是 |
| 分发 | 通过下载指标和软件包年龄评估采用率 | 是 |
| 源库 | 检查包是否链接到源库 | 是 |
| Unscoped Variant | 检查Unscoped npm对应物的安全问题 | 是 |
| GitHub Trust | 评估活动、许可和贡献者计数等存储库信号 | 是 |
| 容器映像 | 检查映像是否使用摘要固定(@sha256:) | 是 |
| 容器注册表 | 验证图像是否存在,并通过摘要不匹配标记潜在的篡改 | 是 |
| 容器签名 | 使用无密钥身份验证验证共同签名 | 是 |
| OAuth | 发现OAuth/OIDC配置。标记缺少身份验证 | 是 |
有关每次检查的完整详细信息,请参阅 安全检查参考.
评分
每台服务器接收一个 0-100风险评分:
- 每次检查都会得出结果;最严重的严重程度决定了每次检查的得分(0-10)
- 分数通过以下方式合并 严重性加权平均值 (临界10倍,高7.5倍,中5倍,注1倍)
- 原始平均值被缩放到0-100
- 硬帽 适用:任何关键发现的得分上限为30分,任何高发现的得分下限为59分
- 风险等级:低(≥60)、中(>30)、高(≤30)
有关完整的评分说明,请参阅 了解结果.
环境变量
| 变量 | 目的 |
|---|---|
GITHUB_TOKEN | 可选。将GitHub API的速率限制从60 req/hr提高到5000 req/hr |
GOLF_GITHUB_TOKEN | 可选。后退如果 GITHUB_TOKEN 未设置。 |
大多数扫描不需要令牌。扫描程序对每个唯一的repo(元数据、提交、贡献者)进行约3次GitHub API调用,并缓存结果,因此只有当您有20多个服务器指向不同的GitHub repo时,您才会达到未经验证的限制。
退出代码
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 无参数,未知命令, --fail-on 超过阈值或标志冲突 |
| 2 | JSON错误或无效 --fail-on 价值 |
许可证
Apache 2.0——请参阅 许可证.
Made with ❤️ by the Golf team
