用途:处理任何涉及 Supabase 的任务,触发范围包括其 Database、Auth、Edge Functions、Realtime、Storage、Vectors、Cron、Queues 等产品,以及客户端相关操作。
主要能力与原则:Supabase 变更频繁,不应依赖训练数据,需先获取 changelog 与当前文档再实现;实现任何修复后应运行测试查询验证;同一方法失败 2 至 3 次后应停止重试,改查文档、检查错误与日志。新建表可能未自动暴露给 Data API,需显式给 anon/authenticated 角色授权,且这与 RLS 不同。
安全要点:在所有暴露 schema 的表上启用 RLS;授权公开访问时同时启用 RLS。授权决策不要用 user_metadata 声明,应使用 raw_app_meta_data/app_metadata;删除用户不会使现有令牌失效;不要在公共客户端暴露 service_role 或 secret key;Management API、CLI、MCP 应使用限定范围的个人访问令牌。视图默认绕过 RLS,Postgres 15+ 可用 CREATE VIEW ... WITH (security_invoker = true);UPDATE 需要 SELECT 策略;auth.role() 已弃用,改用 TO 子句;仅 TO authenticated 不等于授权,需配合所有权谓词;UPDATE 策略需同时有 USING 和 WITH CHECK;SECURITY DEFINER 会绕过 RLS,不应为修复权限错误而使用。Storage upsert 需要 INSERT、SELECT、UPDATE 三种权限;安装包时应固定版本并提交 lockfile。
使用方式:CLI 命令应通过 --help 发现,不要猜测。supabase db query 需 CLI v2.79.0+,supabase db advisors 需 v2.81.3+,否则可用 MCP 的 execute_sql、get_advisors。浏览器登录会创建全账户权限的 classic token,CI 中应设置 SUPABASE_ACCESS_TOKEN 为限定范围的令牌。命令式迁移项目先用 supabase migration new <name> 创建文件;声明式项目从 supabase/schemas/ 生成迁移。做 schema 变更时,可直接用 execute_sql 或 supabase db query 迭代,不要用 apply_migration 改本地 schema;完成后运行 supabase db advisors,再用 supabase db pull <name> --local --yes 生成迁移,并用 supabase migration list --local 验证。
文档与排错:优先使用 MCP search_docs,其次在文档 URL 后加 .md 获取 Markdown,最后才用网页搜索。遇到 REST、Postgres、PostgREST、Auth、Realtime、Edge Functions、Storage 等错误、空结果或意外被 RLS 拦截时,应先获取 Supabase 的监测与调试文档再诊断或提出修复。MCP 连接问题可按序检查服务器可达性、.mcp.json 配置、OAuth 2.1 认证及限定令牌权限。
限制:资料未提供具体定价、平台支持范围或效果数据。