内容
# supabase-security-mcp
> 唯一一款能**完善您AI代理中Supabase安全漏洞**的工具。
> 审核、预览修复并应用 - 无需离开Claude / Cursor / Cline。
```
你:审核我的Supabase项目 rkmrsefraqssuyuniyco
Claude: 发现17个关键漏洞。需要我应用所有SQL修复吗?
是否要先运行preview_fix?
你:预览所有修复,然后如果安全就应用。
Claude: [预览每个修复]
所有17个修复都预览干净。正在应用...
完成。重新审核:0个关键发现剩余。
```
其他Supabase扫描器(SupaExplorer、AuditYourApp、Vibe App Scanner)**报告**。但它们都不提供修复。而这款工具可以。
## 工具列表
| 工具 | 功能 |
|---|---|
| `audit_project` | 扫描项目。返回JSON格式的发现结果。为后续工具缓存。 |
| `list_findings` | 列出缓存的发现结果,可选按严重程度过滤。 |
| `preview_fix` | 将修复SQL包裹在 `BEGIN; ... ROLLBACK;` 中,验证是否可以运行。安全。 |
| `apply_fix` | 实际应用某个发现的修复。需要 `confirm: true`。重新审核以验证。 |
| `apply_all_fixes` | 批量应用某个严重程度或以上的修复。单个事务 - 要么全部成功,要么全部失败。 |
## 安装
### Claude Desktop / Claude Code
添加到您的MCP配置(`~/.claude.json` 或 `claude_desktop_config.json`):
```json
{
"mcpServers": {
"supabase-security": {
"command": "npx",
"args": ["-y", "@perufitlife/supabase-security-mcp@latest"],
"env": {
"SUPABASE_ACCESS_TOKEN": "sbp_您的个人访问令牌"
}
}
}
}
```
在 https://supabase.com/dashboard/account/tokens 获取令牌(对您的项目具有读+写权限)。
### Cursor
`设置 → MCP → 添加新的MCP服务器` → 粘贴上述相同的JSON对象。
### Cline / Continue / 等
任何支持MCP_stdio服务器的工具都可以使用 - 将其指向 `npx -y @perufitlife/supabase-security-mcp@latest` 并设置环境变量。
## 安全模型
- **绝不自动应用。** 每个 `apply_fix` 和 `apply_all_fixes` 调用都需要 `confirm: true`。
- **应用前预览。** `preview_fix` 在 `BEGIN; ... ROLLBACK;` 中运行SQL,这样您就可以看到是否会出错。
- **批量应用时全有全无。** `apply_all_fixes` 在单个事务中运行所有修复。如果任何语句失败,整个更改都会回滚。
- **应用后重新审核。** 每个 `apply_fix` 都会重新运行审核并报告该发现是否真正消失 - 防止修复无效。
- **`audit_project` 默认只读。** 如果您只需要扫描而不需要修复,可以使用只读PAT。
## 扫描内容
继承自 [supabase-security-skill](https://github.com/Perufitlife/supabase-security-skill):
- 禁用RLS的表和直接授予匿名用户权限
- `SECURITY DEFINER` 函数可被匿名用户执行
- 公共存储桶
- 默认权限仍授予匿名用户CRUD权限
- 启用自动确认的身份验证注册
- 防御深度:RLS锁定表但仍有过时的匿名用户权限
## 为什么使用MCP而非CLI
CLI很棒。但它们不在您的AI代理的上下文中。当您在IDE中与Claude交流,询问“我的Supabase安全吗?”时,应该得到实际扫描结果,而不是“您应该在笔记本电脑上运行此命令”。
该流程使能:
1. *"添加一个 `subscriptions` 表到我的模式中。"* → 代理执行
2. *"现在扫描安全问题。"* → 代理调用 `audit_project`
3. *代理注意到新表没有RLS。*
4. *"要修复吗?"* → `preview_fix`,然后在您确认后 `apply_fix`。
这个往返过程是实际产品。审核只是步骤2。
## 路线图
- [ ] 计划任务审核(`pg_cron`)
- [ ] Edge函数密钥扫描
- [ ] 存储对象级RLS扫描
- [ ] HTML报告生成为工具(返回base64 + 文件名)
- [ ] CORS配置检查
## 许可证
MIT。