name: supabase-automation description: 通过Rube MCP(Composio)自动化Supabase数据库查询、表管理、项目管理、存储、边缘函数和SQL执行。始终首先搜索工具以获取当前模式。 requires: mcp: [rube] category: development-code
通过Rube MCP的Supabase自动化
通过Composio的Supabase工具包自动化Supabase操作,包括数据库查询、表模式检查、SQL执行、项目和组织管理、存储桶、边缘函数和服务健康监控。
工具包文档: composio.dev/toolkits/supabase
先决条件
- Rube MCP必须已连接(RUBE_SEARCH_TOOLS可用)
- 通过
RUBE_MANAGE_CONNECTIONS与工具包supabase建立活动的Supabase连接 - 始终首先调用
RUBE_SEARCH_TOOLS以获取当前工具模式
设置
获取Rube MCP: 在客户端配置中添加https://rube.app/mcp作为MCP服务器。无需API密钥 — 只需添加端点即可工作。
- 通过确认
RUBE_SEARCH_TOOLS响应来验证Rube MCP可用 - 使用工具包
supabase调用RUBE_MANAGE_CONNECTIONS - 如果连接不是ACTIVE,请按照返回的认证链接完成Supabase认证
- 在运行任何工作流之前,确认连接状态显示为ACTIVE
核心工作流
1. 查询和管理数据库表
何时使用: 用户希望从表中读取数据、检查模式或执行CRUD操作
工具序列:
SUPABASE_LIST_ALL_PROJECTS- 列出项目以找到目标项目_ref [先决条件]SUPABASE_LIST_TABLES- 列出数据库中的所有表和视图 [先决条件]SUPABASE_GET_TABLE_SCHEMAS- 获取详细的列类型、约束和关系 [写入的先决条件]SUPABASE_SELECT_FROM_TABLE- 使用过滤、排序和分页查询行 [读取所需]SUPABASE_BETA_RUN_SQL_QUERY- 执行任意SQL进行复杂查询、插入、更新或删除 [写入所需]
SELECT_FROM_TABLE的关键参数:
project_ref: 20字符小写项目引用table: 要查询的表或视图名称select: 逗号分隔的列列表(支持嵌套选择和JSON路径,如profile->avatar_url)filters: 过滤器对象数组,包含column、operator、valueorder: 排序表达式,如created_at.desclimit: 返回的最大行数(最小1)offset: 用于分页的跳过行数
PostgREST过滤器操作符:
eq、neq: 等于/不等于gt、gte、lt、lte: 比较操作符like、ilike: 模式匹配(区分大小写/不区分)is: IS检查(用于null、true、false)in: 在值列表中cs、cd: 包含/被包含(数组)fts、plfts、phfts、wfts: 全文搜索变体
RUN_SQL_QUERY的关键参数:
ref: 项目引用(20小写字母,模式^[a-z]{20}$)query: 有效的PostgreSQL SQL语句read_only: 布尔值,强制只读事务(对SELECT更安全)
陷阱:
project_ref必须恰好是20个小写字母(仅a-z,无数字或连字符)SELECT_FROM_TABLE是只读的;对于INSERT、UPDATE、DELETE操作,使用RUN_SQL_QUERY- 对于PostgreSQL数组列(text[]、integer[]),使用
ARRAY['item1', 'item2']或'{"item1", "item2"}'语法,而不是JSON数组语法'["item1", "item2"]' - SQL标识符如果区分大小写,必须在查询中双引号
- 复杂的DDL操作可能超时(约60秒限制);分解为更小的查询
- ERROR 42P01 “关系不存在” 通常表示未引用的区分大小写标识符
- ERROR 42883 “函数不存在” 表示您正在调用非标准辅助函数;优先使用information_schema查询
2. 管理项目和组织
何时使用: 用户希望列出项目、检查配置或管理组织
工具序列:
SUPABASE_LIST_ALL_ORGANIZATIONS- 列出所有组织(ID和名称)[必需]SUPABASE_GETS_INFORMATION_ABOUT_THE_ORGANIZATION- 通过slug获取详细组织信息 [可选]SUPABASE_LIST_MEMBERS_OF_AN_ORGANIZATION- 列出组织成员,包括角色和MFA状态 [可选]SUPABASE_LIST_ALL_PROJECTS- 列出所有项目及元数据 [必需]SUPABASE_GETS_PROJECT_S_POSTGRES_CONFIG- 获取数据库配置 [可选]SUPABASE_GETS_PROJECT_S_AUTH_CONFIG- 获取认证配置 [可选]SUPABASE_GET_PROJECT_API_KEYS- 获取API密钥(敏感 — 谨慎处理) [可选]SUPABASE_GETS_PROJECT_S_SERVICE_HEALTH_STATUS- 检查服务健康状态 [可选]
关键参数:
ref: 项目特定工具的项目引用slug: 组织slug(URL友好标识符)用于组织工具services: 健康检查的服务数组:auth、db、db_postgres_user、pg_bouncer、pooler、realtime、rest、storage
陷阱:
LIST_ALL_ORGANIZATIONS返回id和slug;LIST_MEMBERS_OF_AN_ORGANIZATION期望slug,而不是idGET_PROJECT_API_KEYS返回实时密钥 — 切勿记录、显示或持久化完整键值GETS_PROJECT_S_SERVICE_HEALTH_STATUS需要一个非空services数组;空数组会导致无效请求错误- 配置工具可能返回401/403,如果令牌缺少所需范围;优雅处理而不是整个工作流失败
3. 检查数据库模式
何时使用: 用户希望了解表结构、列、约束或生成类型
工具序列:
SUPABASE_LIST_ALL_PROJECTS- 找到目标项目 [先决条件]SUPABASE_LIST_TABLES- 枚举所有表和视图及元数据 [必需]SUPABASE_GET_TABLE_SCHEMAS- 获取特定表的详细模式 [必需]SUPABASE_GENERATE_TYPE_SCRIPT_TYPES- 从模式生成TypeScript类型 [可选]
LIST_TABLES的关键参数:
project_ref: 项目引用schemas: 要搜索的模式名称数组(例如,["public"]);省略以获取所有非系统模式include_views: 包括视图以及表(默认true)include_metadata: 包括行数估计和大小(默认true)include_system_schemas: 包括pg_catalog、information_schema等(默认false)
GET_TABLE_SCHEMAS的关键参数:
project_ref: 项目引用table_names: 表名数组(每请求最多20个);支持模式前缀,如public.users、auth.usersinclude_relationships: 包括外键信息(默认true)include_indexes: 包括索引信息(默认true)exclude_null_values: 通过隐藏空字段获得更清晰的输出(默认true)
GENERATE_TYPE_SCRIPT_TYPES的关键参数:
ref: 项目引用included_schemas: 逗号分隔的模式名称(默认"public")
陷阱:
- 没有模式前缀的表名假设为
public模式 - 来自LIST_TABLES的
row_count和size_bytes可能为null,对于视图或新创建的表;视为未知,不是零 - GET_TABLE_SCHEMAS每请求最多20个表;如有需要,分批处理
- TypeScript类型包括指定模式中的所有表;无法过滤单个表
4. 管理边缘函数
何时使用: 用户希望列出、检查或使用Supabase边缘函数
工具序列:
SUPABASE_LIST_ALL_PROJECTS- 找到项目引用 [先决条件]SUPABASE_LIST_ALL_FUNCTIONS- 列出所有边缘函数及元数据 [必需]SUPABASE_RETRIEVE_A_FUNCTION- 获取特定函数的详细信息 [可选]
关键参数:
ref: 项目引用- 用于RETRIEVE_A_FUNCTION的函数slug
陷阱:
LIST_ALL_FUNCTIONS仅返回元数据,而不是函数代码或日志created_at和updated_at可能是纪元毫秒;转换为人类可读时间戳- 这些工具无法创建或部署边缘函数;它们是只读检查工具
- 权限错误可能在无组织/项目管理员权限时发生
5. 管理存储桶
何时使用: 用户希望列出存储桶或管理文件存储
工具序列:
SUPABASE_LIST_ALL_PROJECTS- 找到项目引用 [先决条件]SUPABASE_LISTS_ALL_BUCKETS- 列出所有存储桶 [必需]
关键参数:
ref: 项目引用
陷阱:
LISTS_ALL_BUCKETS仅返回存储桶列表,而不是桶内容或访问策略- 对于文件上传,
SUPABASE_RESUMABLE_UPLOAD_SIGN_OPTIONS_WITH_ID仅处理TUS可恢复上传的CORS预检 - 直接文件操作可能需要使用
proxy_execute与Supabase存储API
常见模式
ID解析
- 项目引用:
SUPABASE_LIST_ALL_PROJECTS— 提取ref字段(20个小写字母) - 组织slug:
SUPABASE_LIST_ALL_ORGANIZATIONS— 使用slug(不是id)进行下游组织工具 - 表名:
SUPABASE_LIST_TABLES— 在查询前枚举可用表 - 模式发现:
SUPABASE_GET_TABLE_SCHEMAS— 在写入前检查列和约束
分页
SUPABASE_SELECT_FROM_TABLE: 使用offset+limit分页。直到返回的行数少于limit为止,将offset增加limit。SUPABASE_LIST_ALL_PROJECTS: 对于大型账户可能分页;遵循光标/页面直到耗尽。SUPABASE_LIST_TABLES: 对于大型数据库可能分页。
SQL最佳实践
- 在编写SQL之前始终使用
SUPABASE_GET_TABLE_SCHEMAS或SUPABASE_LIST_TABLES - 使用
read_only: true进行SELECT查询,以防止意外突变 - 引用区分大小写的标识符:
SELECT * FROM "MyTable"而不是SELECT * FROM MyTable - 对数组列使用PostgreSQL数组语法:
ARRAY['a', 'b']而不是['a', 'b'] - 将复杂的DDL分解为更小的语句以避免超时
已知陷阱
ID格式
- 项目引用恰好是20个小写字母(a-z):模式
^[a-z]{20}$ - 组织标识符包括
id(UUID)和slug(URL友好字符串);工具接受的类型不同 LIST_MEMBERS_OF_AN_ORGANIZATION需要slug,而不是id
SQL执行
BETA_RUN_SQL_QUERY对复杂操作有约60秒超时- 需要PostgreSQL数组语法:
ARRAY['item']或'{"item"}',而不是JSON语法'["item"]' - 区分大小写的标识符必须在SQL中双引号
- ERROR 42P01: 关系不存在(检查引用和模式前缀)
- ERROR 42883: 函数不存在(使用information_schema而不是自定义辅助函数)
敏感数据
GET_PROJECT_API_KEYS返回服务角色密钥 — 切勿暴露完整值- 认证配置工具排除密钥但可能仍包含敏感配置
- 始终在输出中掩码或截断API密钥
模式元数据
- 来自
LIST_TABLES的row_count和size_bytes可能为null;不要视为零 - 系统模式默认排除;设置
include_system_schemas: true以查看它们 - 视图与表一起出现,除非
include_views: false
速率限制和权限
- 丰富工具(API密钥、配置)可能在没有适当范围时返回401/403;优雅跳过
- 大型表列表可能需要分页
GETS_PROJECT_S_SERVICE_HEALTH_STATUS失败时如果services数组为空 — 始终指定至少一个
快速参考
| 任务 | 工具Slug | 关键参数 |
|---|---|---|
| 列出组织 | SUPABASE_LIST_ALL_ORGANIZATIONS |
(无) |
| 获取组织信息 | SUPABASE_GETS_INFORMATION_ABOUT_THE_ORGANIZATION |
slug |
| 列出组织成员 | SUPABASE_LIST_MEMBERS_OF_AN_ORGANIZATION |
slug |
| 列出项目 | SUPABASE_LIST_ALL_PROJECTS |
(无) |
| 列出表 | SUPABASE_LIST_TABLES |
project_ref, schemas |
| 获取表模式 | SUPABASE_GET_TABLE_SCHEMAS |
project_ref, table_names |
| 查询表 | SUPABASE_SELECT_FROM_TABLE |
project_ref, table, select, filters |
| 运行SQL | SUPABASE_BETA_RUN_SQL_QUERY |
ref, query, read_only |
| 生成TS类型 | SUPABASE_GENERATE_TYPE_SCRIPT_TYPES |
ref, included_schemas |
| Postgres配置 | SUPABASE_GETS_PROJECT_S_POSTGRES_CONFIG |
ref |
| 认证配置 | SUPABASE_GETS_PROJECT_S_AUTH_CONFIG |
ref |
| 获取API密钥 | SUPABASE_GET_PROJECT_API_KEYS |
ref |
| 服务健康 | SUPABASE_GETS_PROJECT_S_SERVICE_HEALTH_STATUS |
ref, services |
| 列出边缘函数 | SUPABASE_LIST_ALL_FUNCTIONS |
ref |
| 获取边缘函数 | SUPABASE_RETRIEVE_A_FUNCTION |
ref, 函数slug |
| 列出存储桶 | SUPABASE_LISTS_ALL_BUCKETS |
ref |
| 列出数据库分支 | SUPABASE_LIST_ALL_DATABASE_BRANCHES |
ref |
由Composio提供支持