Supabase自动化Skill supabase-automation

这个技能用于通过Rube MCP工具自动化Supabase云数据库的各种操作,包括数据库查询、表管理、项目组织管理、存储桶、边缘函数和SQL执行等,旨在提高开发效率和运维自动化水平。关键词:Supabase, 自动化, Rube MCP, 数据库管理, 云服务, DevOps。

DevOps 0 次安装 0 次浏览 更新于 3/8/2026

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密钥 — 只需添加端点即可工作。

  1. 通过确认RUBE_SEARCH_TOOLS响应来验证Rube MCP可用
  2. 使用工具包supabase调用RUBE_MANAGE_CONNECTIONS
  3. 如果连接不是ACTIVE,请按照返回的认证链接完成Supabase认证
  4. 在运行任何工作流之前,确认连接状态显示为ACTIVE

核心工作流

1. 查询和管理数据库表

何时使用: 用户希望从表中读取数据、检查模式或执行CRUD操作

工具序列:

  1. SUPABASE_LIST_ALL_PROJECTS - 列出项目以找到目标项目_ref [先决条件]
  2. SUPABASE_LIST_TABLES - 列出数据库中的所有表和视图 [先决条件]
  3. SUPABASE_GET_TABLE_SCHEMAS - 获取详细的列类型、约束和关系 [写入的先决条件]
  4. SUPABASE_SELECT_FROM_TABLE - 使用过滤、排序和分页查询行 [读取所需]
  5. SUPABASE_BETA_RUN_SQL_QUERY - 执行任意SQL进行复杂查询、插入、更新或删除 [写入所需]

SELECT_FROM_TABLE的关键参数:

  • project_ref: 20字符小写项目引用
  • table: 要查询的表或视图名称
  • select: 逗号分隔的列列表(支持嵌套选择和JSON路径,如profile->avatar_url
  • filters: 过滤器对象数组,包含columnoperatorvalue
  • order: 排序表达式,如created_at.desc
  • limit: 返回的最大行数(最小1)
  • offset: 用于分页的跳过行数

PostgREST过滤器操作符:

  • eqneq: 等于/不等于
  • gtgteltlte: 比较操作符
  • likeilike: 模式匹配(区分大小写/不区分)
  • is: IS检查(用于null、true、false)
  • in: 在值列表中
  • cscd: 包含/被包含(数组)
  • ftsplftsphftswfts: 全文搜索变体

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. 管理项目和组织

何时使用: 用户希望列出项目、检查配置或管理组织

工具序列:

  1. SUPABASE_LIST_ALL_ORGANIZATIONS - 列出所有组织(ID和名称)[必需]
  2. SUPABASE_GETS_INFORMATION_ABOUT_THE_ORGANIZATION - 通过slug获取详细组织信息 [可选]
  3. SUPABASE_LIST_MEMBERS_OF_AN_ORGANIZATION - 列出组织成员,包括角色和MFA状态 [可选]
  4. SUPABASE_LIST_ALL_PROJECTS - 列出所有项目及元数据 [必需]
  5. SUPABASE_GETS_PROJECT_S_POSTGRES_CONFIG - 获取数据库配置 [可选]
  6. SUPABASE_GETS_PROJECT_S_AUTH_CONFIG - 获取认证配置 [可选]
  7. SUPABASE_GET_PROJECT_API_KEYS - 获取API密钥(敏感 — 谨慎处理) [可选]
  8. SUPABASE_GETS_PROJECT_S_SERVICE_HEALTH_STATUS - 检查服务健康状态 [可选]

关键参数:

  • ref: 项目特定工具的项目引用
  • slug: 组织slug(URL友好标识符)用于组织工具
  • services: 健康检查的服务数组:authdbdb_postgres_userpg_bouncerpoolerrealtimereststorage

陷阱:

  • LIST_ALL_ORGANIZATIONS返回idslugLIST_MEMBERS_OF_AN_ORGANIZATION期望slug,而不是id
  • GET_PROJECT_API_KEYS返回实时密钥 — 切勿记录、显示或持久化完整键值
  • GETS_PROJECT_S_SERVICE_HEALTH_STATUS需要一个非空services数组;空数组会导致无效请求错误
  • 配置工具可能返回401/403,如果令牌缺少所需范围;优雅处理而不是整个工作流失败

3. 检查数据库模式

何时使用: 用户希望了解表结构、列、约束或生成类型

工具序列:

  1. SUPABASE_LIST_ALL_PROJECTS - 找到目标项目 [先决条件]
  2. SUPABASE_LIST_TABLES - 枚举所有表和视图及元数据 [必需]
  3. SUPABASE_GET_TABLE_SCHEMAS - 获取特定表的详细模式 [必需]
  4. 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.usersauth.users
  • include_relationships: 包括外键信息(默认true)
  • include_indexes: 包括索引信息(默认true)
  • exclude_null_values: 通过隐藏空字段获得更清晰的输出(默认true)

GENERATE_TYPE_SCRIPT_TYPES的关键参数:

  • ref: 项目引用
  • included_schemas: 逗号分隔的模式名称(默认"public"

陷阱:

  • 没有模式前缀的表名假设为public模式
  • 来自LIST_TABLES的row_countsize_bytes可能为null,对于视图或新创建的表;视为未知,不是零
  • GET_TABLE_SCHEMAS每请求最多20个表;如有需要,分批处理
  • TypeScript类型包括指定模式中的所有表;无法过滤单个表

4. 管理边缘函数

何时使用: 用户希望列出、检查或使用Supabase边缘函数

工具序列:

  1. SUPABASE_LIST_ALL_PROJECTS - 找到项目引用 [先决条件]
  2. SUPABASE_LIST_ALL_FUNCTIONS - 列出所有边缘函数及元数据 [必需]
  3. SUPABASE_RETRIEVE_A_FUNCTION - 获取特定函数的详细信息 [可选]

关键参数:

  • ref: 项目引用
  • 用于RETRIEVE_A_FUNCTION的函数slug

陷阱:

  • LIST_ALL_FUNCTIONS仅返回元数据,而不是函数代码或日志
  • created_atupdated_at可能是纪元毫秒;转换为人类可读时间戳
  • 这些工具无法创建或部署边缘函数;它们是只读检查工具
  • 权限错误可能在无组织/项目管理员权限时发生

5. 管理存储桶

何时使用: 用户希望列出存储桶或管理文件存储

工具序列:

  1. SUPABASE_LIST_ALL_PROJECTS - 找到项目引用 [先决条件]
  2. 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_SCHEMASSUPABASE_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_TABLESrow_countsize_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提供支持