Supabase MCP Server
MCP server for managing Supabase projects including database operations, edge functions, branching, storage, and documentation search
Score Breakdown
Server Info
- Package
- @supabase/mcp-server-supabase
- Registry
- npm
- Repository
- supabase-community/supabase-mcp
- Maintainer
- SupabaseVendor
- Category
- Cloud & Infrastructure
- Tags
- databaseauthpostgres
- Last Scanned
- 7 Apr 2026
Findings
7 issuesAuthentication & Identity
HIGHNo per-request auth - requires instance-per-user
Stdio-only transport. Auth is via SUPABASE_ACCESS_TOKEN env var or --access-token CLI flag. The token is a Personal Access Token (PAT) for the Supabase Management API. Project-scoped mode removes account-level tools and injects project_id automatically. For multi-tenant deployment, the platform must spawn a separate server instance per user.
Add HTTP/SSE transport to accept per-request Authorization headers, or implement the MCP OAuth spec.
Tool Schema Quality
MEDIUMOnly 6 of 32 schemas have parameter constraints
Most schemas lack maxLength, enum, or pattern constraints on string parameters.
Add constraints to string parameters, especially on write operations.
CRITICALDangerous execution surface: execute_sql: raw SQL execution
Tool allows raw code/query execution which could be exploited via prompt injection.
Use parameterized queries or validated command sets.
CRITICALDangerous execution surface: apply_migration: raw SQL via migration
Tool allows raw code/query execution which could be exploited via prompt injection.
Use parameterized queries or validated command sets.
LLM Safety
HIGHTool descriptions contain instructional language
Descriptions include directives that could influence LLM behavior beyond tool selection.
Remove instructional language. Descriptions should be purely factual.
Data Exposure
MEDIUM7 list operations lack pagination
List operations (list_tables, list_projects, list_organizations, etc.) do not have pagination parameters - they return all results. list_tables has a verbose flag to control detail level. No field selection support. The logs tool is scoped to last 24 hours.
Add limit/offset or cursor-based pagination.
LOWNo field selection on responses
Responses return full records rather than projected fields.
Implement field selection to return only relevant fields.
Tools
32 total| Name | Description | Risk |
|---|---|---|
| list_organizations | Lists all organizations that the user is a member of. | read |
| get_organization | Gets details for an organization. Includes subscription plan. | read |
| list_projects | Lists all Supabase projects for the user. | read |
| get_project | Gets details for a Supabase project. | read |
| get_cost | Gets the cost of creating a new project or branch. | read |
| confirm_cost | Ask the user to confirm their understanding of the cost of creating a new project or branch. | read |
| create_project | Creates a new Supabase project. | admin |
| pause_project | Pauses a Supabase project. | admin |
| restore_project | Restores a Supabase project. | admin |
| list_tables | Lists all tables in one or more schemas. By default returns a compact summary. Set verbose to true to include column details. | read |
| list_extensions | Lists all extensions in the database. | read |
| list_migrations | Lists all migrations in the database. | read |
| apply_migration | Applies a migration to the database. Use this when executing DDL operations. | write |
| execute_sql | Executes raw SQL in the Postgres database. Use apply_migration instead for DDL operations. | write |
| get_logs | Gets logs for a Supabase project by service type. | read |
| get_advisors | Gets a list of advisory notices for the Supabase project. | read |
| get_project_url | Gets the API URL for a project. | read |
| get_publishable_keys | Gets all publishable API keys for a project, including legacy anon keys and modern publishable keys. | read |
| generate_typescript_types | Generates TypeScript types for a project. | read |
| search_docs | Search the Supabase documentation using GraphQL. | read |
| list_edge_functions | Lists all Edge Functions in a Supabase project. | read |
| get_edge_function | Retrieves file contents for an Edge Function in a Supabase project. | read |
| deploy_edge_function | Deploys an Edge Function to a Supabase project. If the function already exists, this will create a new version. | write |
| create_branch | Creates a development branch on a Supabase project. | write |
| list_branches | Lists all development branches of a Supabase project. | read |
| delete_branch | Deletes a development branch. | admin |
| merge_branch | Merges migrations and edge functions from a development branch to production. | write |
| reset_branch | Resets migrations of a development branch. Any untracked data or schema changes will be lost. | admin |
| rebase_branch | Rebases a development branch on top of the latest production migrations. | write |
| list_storage_buckets | Lists all storage buckets in a Supabase project. | read |
| get_storage_config | Get the storage config for a Supabase project. | read |
| update_storage_config | Update the storage config for a Supabase project. | write |
Deploy Supabase MCP Server securely
CompleteFlow adds per-user authentication, permission scoping, and audit logging to any MCP server out of the box.
Deploy on CompleteFlow