Automate Supabase operations including database queries, table schema inspection, SQL execution, project and organization management, storage buckets, edge functions, and service health monitoring through Composio's Supabase toolkit.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Supabase connection via
RUBE_MANAGE_CONNECTIONSwith toolkitsupabase - Always call
RUBE_SEARCH_TOOLSfirst to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
RUBE_SEARCH_TOOLSresponds - Call
RUBE_MANAGE_CONNECTIONSwith toolkitsupabase - If connection is not ACTIVE, follow the returned auth link to complete Supabase authentication
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Query and Manage Database Tables
When to use: User wants to read data from tables, inspect schemas, or perform CRUD operations
Tool sequence:
SUPABASE_LIST_ALL_PROJECTS- List projects to find the target project_ref [Prerequisite]SUPABASE_LIST_TABLES- List all tables and views in the database [Prerequisite]SUPABASE_GET_TABLE_SCHEMAS- Get detailed column types, constraints, and relationships [Prerequisite for writes]SUPABASE_SELECT_FROM_TABLE- Query rows with filtering, sorting, and pagination [Required for reads]SUPABASE_BETA_RUN_SQL_QUERY- Execute arbitrary SQL for complex queries, inserts, updates, or deletes [Required for writes]
Key parameters for SELECT_FROM_TABLE:
project_ref: 20-character lowercase project referencetable: Table or view name to queryselect: Comma-separated column list (supports nested selections and JSON paths likeprofile->avatar_url)filters: Array of filter objects withcolumn,operator,valueorder: Sort expression likecreated_at.desclimit: Max rows to return (minimum 1)offset: Rows to skip for pagination
PostgREST filter operators:
eq,neq: Equal / not equalgt,gte,lt,lte: Comparison operatorslike,ilike: Pattern matching (case-sensitive / insensitive)is: IS check (for null, true, false)in: In a list of valuescs,cd: Contains / contained by (arrays)fts,plfts,phfts,wfts: Full-text search variants
Key parameters for RUN_SQL_QUERY:
ref: Project reference (20 lowercase letters, pattern^[a-z]{20}$)query: Valid PostgreSQL SQL statementread_only: Boolean to force read-only transaction (safer for SELECTs)
Pitfalls:
project_refmust be exactly 20 lowercase letters (a-z only, no numbers or hyphens)SELECT_FROM_TABLEis read-only; useRUN_SQL_QUERYfor INSERT, UPDATE, DELETE operations- For PostgreSQL array columns (text[], integer[]), use
ARRAY['item1', 'item2']or'{"item1", "item2"}'syntax, NOT JSON array syntax'["item1", "item2"]' - SQL identifiers that are case-sensitive must be double-quoted in queries
- Complex DDL operations may timeout (~60 second limit); break into smaller queries
- ERROR 42P01 "relation does not exist" usually means unquoted case-sensitive identifiers
- ERROR 42883 "function does not exist" means you are calling non-standard helpers; prefer information_schema queries
2. Manage Projects and Organizations
When to use: User wants to list projects, inspect configurations, or manage organizations
Tool sequence:
SUPABASE_LIST_ALL_ORGANIZATIONS- List all organizations (IDs and names) [Required]SUPABASE_GETS_INFORMATION_ABOUT_THE_ORGANIZATION- Get detailed org info by slug [Optional]SUPABASE_LIST_MEMBERS_OF_AN_ORGANIZATION- List org members with roles and MFA status [Optional]SUPABASE_LIST_ALL_PROJECTS- List all projects with metadata [Required]SUPABASE_GETS_PROJECT_S_POSTGRES_CONFIG- Get database configuration [Optional]SUPABASE_GETS_PROJECT_S_AUTH_CONFIG- Get authentication configuration [Optional]SUPABASE_GET_PROJECT_API_KEYS- Get API keys (sensitive -- handle carefully) [Optional]SUPABASE_GETS_PROJECT_S_SERVICE_HEALTH_STATUS- Check service health [Optional]
Key parameters:
ref: Project reference for project-specific toolsslug: Organization slug (URL-friendly identifier) for org toolsservices: Array of services for health check:auth,db,db_postgres_user,pg_bouncer,pooler,realtime,rest,storage
Pitfalls:
LIST_ALL_ORGANIZATIONSreturns bothidandslug;LIST_MEMBERS_OF_AN_ORGANIZATIONexpectsslug, notidGET_PROJECT_API_KEYSreturns live secrets -- NEVER log, display, or persist full key valuesGETS_PROJECT_S_SERVICE_HEALTH_STATUSrequires a non-emptyservicesarray; empty array causes invalid_request error- Config tools may return 401/403 if token lacks required scope; handle gracefully rather than failing the whole workflow
3. Inspect Database Schema
When to use: User wants to understand table structure, columns, constraints, or generate types
Tool sequence:
SUPABASE_LIST_ALL_PROJECTS- Find the target project [Prerequisite]SUPABASE_LIST_TABLES- Enumerate all tables and views with metadata [Required]SUPABASE_GET_TABLE_SCHEMAS- Get detailed schema for specific tables [Required]SUPABASE_GENERATE_TYPE_SCRIPT_TYPES- Generate TypeScript types from schema [Optional]
Key parameters for LIST_TABLES:
project_ref: Project referenceschemas: Array of schema names to search (e.g.,["public"]); omit for all non-system schemasinclude_views: Include views alongside tables (default true)include_metadata: Include row count estimates and sizes (default true)include_system_schemas: Include pg_catalog, information_schema, etc. (default false)
Key parameters for GET_TABLE_SCHEMAS:
project_ref: Project referencetable_names: Array of table names (max 20 per request); supports schema prefix likepublic.users,auth.usersinclude_relationships: Include foreign key info (default true)include_indexes: Include index info (default true)exclude_null_values: Cleaner output by hiding null fields (default true)
Key parameters for GENERATE_TYPE_SCRIPT_TYPES:
ref: Project referenceincluded_schemas: Comma-separated schema names (default"public")
Pitfalls:
- Table names without schema prefix assume
publicschema row_countandsize_bytesfrom LIST_TABLES may be null for views or recently created tables; treat as unknown, not zero- GET_TABLE_SCHEMAS has a max of 20 tables per request; batch if needed
- TypeScript types include all tables in specified schemas; cannot filter individual tables
4. Manage Edge Functions
When to use: User wants to list, inspect, or work with Supabase Edge Functions
Tool sequence:
SUPABASE_LIST_ALL_PROJECTS- Find the project reference [Prerequisite]SUPABASE_LIST_ALL_FUNCTIONS- List all edge functions with metadata [Required]SUPABASE_RETRIEVE_A_FUNCTION- Get detailed info for a specific function [Optional]
Key parameters:
ref: Project reference- Function slug for RETRIEVE_A_FUNCTION
Pitfalls:
LIST_ALL_FUNCTIONSreturns metadata only, not function code or logscreated_atandupdated_atmay be epoch milliseconds; convert to human-readable timestamps- These tools cannot create or deploy edge functions; they are read-only inspection tools
- Permission errors may occur without org/project admin rights
5. Manage Storage Buckets
When to use: User wants to list storage buckets or manage file storage
Tool sequence:
SUPABASE_LIST_ALL_PROJECTS- Find the project reference [Prerequisite]SUPABASE_LISTS_ALL_BUCKETS- List all storage buckets [Required]
Key parameters:
ref: Project reference
Pitfalls:
LISTS_ALL_BUCKETSreturns bucket list only, not bucket contents or access policies- For file uploads,
SUPABASE_RESUMABLE_UPLOAD_SIGN_OPTIONS_WITH_IDhandles CORS preflight for TUS resumable uploads only - Direct file operations may require using
proxy_executewith the Supabase storage API
Common Patterns
ID Resolution
- Project reference:
SUPABASE_LIST_ALL_PROJECTS-- extractreffield (20 lowercase letters) - Organization slug:
SUPABASE_LIST_ALL_ORGANIZATIONS-- useslug(notid) for downstream org tools - Table names:
SUPABASE_LIST_TABLES-- enumerate available tables before querying - Schema discovery:
SUPABASE_GET_TABLE_SCHEMAS-- inspect columns and constraints before writes
Pagination
SUPABASE_SELECT_FROM_TABLE: Usesoffset+limitpagination. Increment offset by limit until fewer rows than limit are returned.SUPABASE_LIST_ALL_PROJECTS: May paginate for large accounts; follow cursors/pages until exhausted.SUPABASE_LIST_TABLES: May paginate for large databases.
SQL Best Practices
- Always use
SUPABASE_GET_TABLE_SCHEMASorSUPABASE_LIST_TABLESbefore writing SQL - Use
read_only: truefor SELECT queries to prevent accidental mutations - Quote case-sensitive identifiers:
SELECT * FROM "MyTable"notSELECT * FROM MyTable - Use PostgreSQL array syntax for array columns:
ARRAY['a', 'b']not['a', 'b'] - Break complex DDL into smaller statements to avoid timeouts
Known Pitfalls
ID Formats
- Project references are exactly 20 lowercase letters (a-z): pattern
^[a-z]{20}$ - Organization identifiers come as both
id(UUID) andslug(URL-friendly string); tools vary in which they accept LIST_MEMBERS_OF_AN_ORGANIZATIONrequiresslug, notid
SQL Execution
BETA_RUN_SQL_QUERYhas ~60 second timeout for complex operations- PostgreSQL array syntax required:
ARRAY['item']or'{"item"}', NOT JSON syntax'["item"]' - Case-sensitive identifiers must be double-quoted in SQL
- ERROR 42P01: relation does not exist (check quoting and schema prefix)
- ERROR 42883: function does not exist (use information_schema instead of custom helpers)
Sensitive Data
GET_PROJECT_API_KEYSreturns service-role keys -- NEVER expose full values- Auth config tools exclude secrets but may still contain sensitive configuration
- Always mask or truncate API keys in output
Schema Metadata
row_countandsize_bytesfromLIST_TABLEScan be null; do not treat as zero- System schemas are excluded by default; set
include_system_schemas: trueto see them - Views appear alongside tables unless
include_views: false
Rate Limits and Permissions
- Enrichment tools (API keys, configs) may return 401/403 without proper scopes; skip gracefully
- Large table listings may require pagination
GETS_PROJECT_S_SERVICE_HEALTH_STATUSfails with emptyservicesarray -- always specify at least one
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List organizations | SUPABASE_LIST_ALL_ORGANIZATIONS |
(none) |
| Get org info | SUPABASE_GETS_INFORMATION_ABOUT_THE_ORGANIZATION |
slug |
| List org members | SUPABASE_LIST_MEMBERS_OF_AN_ORGANIZATION |
slug |
| List projects | SUPABASE_LIST_ALL_PROJECTS |
(none) |
| List tables | SUPABASE_LIST_TABLES |
project_ref, schemas |
| Get table schemas | SUPABASE_GET_TABLE_SCHEMAS |
project_ref, table_names |
| Query table | SUPABASE_SELECT_FROM_TABLE |
project_ref, table, select, filters |
| Run SQL | SUPABASE_BETA_RUN_SQL_QUERY |
ref, query, read_only |
| Generate TS types | SUPABASE_GENERATE_TYPE_SCRIPT_TYPES |
ref, included_schemas |
| Postgres config | SUPABASE_GETS_PROJECT_S_POSTGRES_CONFIG |
ref |
| Auth config | SUPABASE_GETS_PROJECT_S_AUTH_CONFIG |
ref |
| Get API keys | SUPABASE_GET_PROJECT_API_KEYS |
ref |
| Service health | SUPABASE_GETS_PROJECT_S_SERVICE_HEALTH_STATUS |
ref, services |
| List edge functions | SUPABASE_LIST_ALL_FUNCTIONS |
ref |
| Get edge function | SUPABASE_RETRIEVE_A_FUNCTION |
ref, function slug |
| List storage buckets | SUPABASE_LISTS_ALL_BUCKETS |
ref |
| List DB branches | SUPABASE_LIST_ALL_DATABASE_BRANCHES |
ref |