Self-Hosted Supabase MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DATABASE_URL | No | The direct PostgreSQL connection string for your Supabase database (e.g., postgresql://postgres:password@localhost:5432/postgres) | |
| SUPABASE_URL | Yes | The main HTTP URL of your Supabase project (e.g., http://localhost:8000) | |
| SUPABASE_ANON_KEY | Yes | Your Supabase project's anonymous key | |
| SUPABASE_AUTH_JWT_SECRET | No | Your Supabase project's JWT secret. Needed for tools like verify_jwt_secret | |
| SUPABASE_SERVICE_ROLE_KEY | No | Your Supabase project's service role key. Needed for operations requiring elevated privileges |
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
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_tablesB | Lists all accessible tables in the connected database, grouped by schema. |
| list_extensionsA | Lists all installed PostgreSQL extensions in the database. |
| list_migrationsA | Lists applied database migrations recorded in supabase_migrations.schema_migrations table. |
| apply_migrationA | Applies a SQL migration script and records it in the supabase_migrations.schema_migrations table within a transaction. |
| execute_sqlB | Executes an arbitrary SQL query against the database, using direct database connection when available or RPC function as fallback. |
| get_database_connectionsA | Retrieves information about active database connections from pg_stat_activity. |
| get_database_statsA | Retrieves statistics about database activity and the background writer from pg_stat_database and pg_stat_bgwriter. |
| get_project_urlA | Returns the configured Supabase project URL for this server. |
| get_anon_keyA | Returns the configured Supabase anon key for this server. |
| get_service_keyA | Returns the configured Supabase service role key for this server, if available. |
| generate_typescript_typesA | Generates TypeScript types from the database schema using the Supabase CLI ( |
| rebuild_hooksB | Attempts to restart the pg_net worker. Requires the pg_net extension to be installed and available. |
| verify_jwt_secretA | Checks if the Supabase JWT secret is configured for this server and returns a preview. |
| list_auth_usersC | Lists users from the auth.users table. |
| get_auth_userB | Retrieves details for a specific user from auth.users by their ID. |
| delete_auth_userA | Deletes a user from auth.users by their ID. Requires service_role key and direct DB connection. |
| create_auth_userA | Creates a new user directly in auth.users. WARNING: Requires plain password, insecure. Use with extreme caution. |
| update_auth_userA | Updates fields for a user in auth.users. WARNING: Password handling is insecure. Requires service_role key and direct DB connection. |
| list_storage_bucketsB | Lists all storage buckets in the project. |
| list_storage_objectsA | Lists objects within a specific storage bucket, optionally filtering by prefix. |
| list_realtime_publicationsA | Lists PostgreSQL publications, often used by Supabase Realtime. |
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 21 tools
Most tools have distinct purposes targeting specific Supabase domains like auth, database, storage, and migrations. However, some overlap exists between list_tables and list_extensions/list_migrations as they all list database entities, though their descriptions clarify the specific resources. The auth tools (create/update/delete/get/list_auth_user) are clearly differentiated by action.
Tool names follow a highly consistent verb_noun pattern throughout, using snake_case uniformly. Examples include apply_migration, create_auth_user, execute_sql, list_tables, and update_auth_user. This predictability makes it easy for agents to understand and select tools.
With 21 tools, the count is on the higher side but reasonable for a self-hosted Supabase server covering multiple domains like auth, database, storage, and migrations. It might feel slightly heavy, but each tool appears to serve a specific function without obvious redundancy.
The toolset provides comprehensive coverage for core Supabase operations, including CRUD for auth users, database queries, migrations, storage, and monitoring. Minor gaps exist, such as no direct tools for managing storage objects (only listing) or handling realtime subscriptions beyond listing publications, but agents can work around these using execute_sql or other tools.