Supabase MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SUPABASE_URL | Yes | Your Supabase instance URL | |
| MCP_SERVER_NAME | No | Custom server name (default: supabase-mcp-server) | supabase-mcp-server |
| SUPABASE_ANON_KEY | Yes | Anonymous/public key | |
| MCP_SERVER_VERSION | No | Custom version (default: 1.0.0) | 1.0.0 |
| SUPABASE_SERVICE_ROLE_KEY | Yes | Service role key (for admin operations) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| connection_testB | Test connection to Supabase database and get basic info |
| auth_loginC | Login user with email and password |
| auth_signupB | Register a new user with email and password |
| auth_get_userA | Get current authenticated user information |
| auth_logoutA | Logout current user |
| schema_get_tablesB | Get list of all tables in the database schema |
| schema_get_columnsB | Get columns information for a specific table |
| schema_get_relationsA | Get foreign key relationships for a table |
| db_selectA | Select data from a table with optional filters and sorting |
| db_insertB | Insert new row(s) into a table |
| db_updateB | Update existing rows in a table |
| db_deleteB | Delete rows from a table |
| db_upsertB | Insert or update rows (upsert) in a table |
| db_countA | Count rows in a table with optional filters |
| realtime_subscribeC | Subscribe to real-time changes on a table |
| realtime_channel_createC | Create a real-time channel for broadcasting |
| realtime_broadcastB | Broadcast a message to a channel |
| storage_list_bucketsA | List all storage buckets |
| storage_create_bucketB | Create a new storage bucket |
| storage_delete_bucketB | Delete a storage bucket |
| storage_list_filesC | List files in a storage bucket |
| storage_upload_fileB | Upload a file to storage (base64 encoded) |
| storage_download_fileB | Download a file from storage |
| storage_delete_fileB | Delete a file from storage |
| storage_get_public_urlB | Get public URL for a file |
| sql_executeC | Execute raw SQL query (use with caution) |
| sql_call_rpcC | Call a stored procedure/function |
| sql_aggregateC | Execute SQL aggregate functions (COUNT, SUM, AVG, MIN, MAX) |
| sql_aggregate_enhancedB | Execute aggregate functions using raw SQL (bypasses Supabase client limitations) |
| sql_execute_rawC | Execute raw SQL with enhanced error handling and result formatting |
| sql_analyze_tableC | Get detailed table analysis including statistics |
| edge_invoke_functionC | Invoke a Supabase Edge Function |
| edge_list_functionsA | List available Edge Functions |
| edge_deploy_functionC | Deploy an Edge Function to Supabase |
| edge_remove_functionA | Remove an Edge Function from local serverless handler |
| security_enable_rlsB | Enable Row Level Security (RLS) on a table |
| security_disable_rlsB | Disable Row Level Security (RLS) on a table |
| security_create_policyB | Create a Row Level Security policy |
| security_drop_policyB | Drop a Row Level Security policy |
| security_list_policiesB | List all policies for a table |
| security_check_rls_statusC | Check RLS status for tables |
| security_test_policyB | Test a policy by simulating different user contexts |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 42 tools
Several SQL tools have overlapping purposes: sql_execute, sql_execute_raw, and sql_aggregate_enhanced all essentially execute raw SQL with minor differences, making it unclear when to choose one over the other. The descriptions attempt to differentiate them but the boundaries are still fuzzy.
Most tools follow a domain_prefix_verb_noun pattern (e.g., db_select, storage_upload_file, edge_invoke_function), which is consistent. Minor deviations exist such as sql_aggregate_enhanced and sql_execute_raw, where suffixes break the standard verb_noun order, but the overall naming is clear.
With 42 tools, the server feels bloated, particularly due to redundant SQL tools (sql_execute, sql_execute_raw, sql_aggregate, sql_aggregate_enhanced) that inflate the count. While Supabase has a broad feature set, this could be consolidated to around 25-30 tools without losing functionality.
The tool set covers major Supabase areas: database CRUD, auth basics, realtime, storage, edge functions, and security. However, notable gaps exist in auth user management (e.g., listing users, updating user metadata) and schema modification (no create/alter table tools, rely on raw SQL). These are workable via sql_execute, so the impact is moderate.