Supabase MCP Server

Manage Supabase projects, run SQL, deploy Edge Functions and read logs from an MCP client

Official · Supabase TypeScript Remote (hosted) · Streamable HTTP DatabasesCloud platformsDeveloper tools

93 popularity score ★ 3.0k ↓ 235k/wk

Connect your client

Remote (hosted)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add --transport http supabase https://mcp.supabase.com/mcp
Claude (desktop and web)Settings → Connectors → Add custom connector
https://mcp.supabase.com/mcp
ChatGPTSettings → Apps → Advanced → Developer mode, then Create app
https://mcp.supabase.com/mcp
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "supabase": {
      "url": "https://mcp.supabase.com/mcp"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "supabase": {
      "type": "http",
      "url": "https://mcp.supabase.com/mcp"
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.supabase]
url = "https://mcp.supabase.com/mcp"
Gemini CLITerminal
gemini mcp add --scope user --transport http supabase https://mcp.supabase.com/mcp

What it does

Supabase's own MCP server connects an AI assistant to the Supabase projects in your account. Through it the assistant can list tables and extensions, run SQL, apply migrations, read project logs, fetch security and performance advisors, generate TypeScript types from the schema, deploy Edge Functions, and create, pause or restore whole projects. It can also search the Supabase documentation.

The main way to use it is the hosted endpoint at mcp.supabase.com. You add the URL to your client and sign in with your Supabase account in a browser; no token has to be created by hand. URL parameters narrow what it may do: project_ref limits it to one project and removes the account tools, read_only=true runs every query as a read-only Postgres user, and features picks which tool groups are switched on. A personal access token sent as a Bearer header replaces the browser sign-in for CI.

The Supabase CLI serves a reduced version locally at http://localhost:54321/mcp, and self-hosted Supabase can enable one too; both have fewer tools and no OAuth. The npm package @supabase/mcp-server-supabase also exports functions for serving the same tools from your own HTTP endpoint and for giving Vercel AI SDK clients typed tool schemas.

Where the client supports MCP forms, the server asks before creating something that costs money (create_project, create_branch) and before running SQL it judges destructive. Supabase calls both a guardrail, not a guarantee.

What it needs

A Supabase account and an organization holding the project to work on. An MCP client that speaks streamable HTTP and can complete a browser OAuth sign-in, or one that can send custom headers with a personal access token. Branching tools need a paid plan. Local use needs the Supabase CLI running a local stack.

Limits

Branching is marked experimental and needs a paid plan. Storage tools are off by default. Account tools disappear when the server is scoped to one project. CLI and self-hosted setups get only a subset of tools and no OAuth. A manually created OAuth app must be granted write access to every scope, as finer scopes are not yet offered. The self-hosting handler only speaks the current protocol revision and answers older clients with HTTP 400. Tool results carry no structuredContent. Cost and destructive-SQL confirmations depend on client support and may not catch every case.

Who it suits

Developers building on Supabase who want an assistant to inspect schemas, write migrations, debug with logs and advisors, or ship Edge Functions, all from one maker-supported endpoint. Supabase says it acts with your developer permissions and should not be handed to customers or end users. For production data, scope it to one project with read_only=true and a narrow feature list. For a plain Postgres database outside Supabase, a generic Postgres server fits better, since this one works through the Supabase Management API and account.

Tools 33

list_tables
Lists the tables in the project's database
list_extensions
Lists available and installed Postgres extensions
list_migrations
Lists the migrations applied to the database
apply_migration
Applies a schema migration to the database
execute_sql
Runs a SQL statement against the database
query_logs
Runs a read-only SQL query over project logs
get_advisors
Returns security and performance advisor findings
get_project_url
Gives the API URL of a project
get_publishable_keys
Gives a project's publishable and legacy anon keys
generate_typescript_types
Builds TypeScript types from the database schema
list_edge_functions
Lists a project's Edge Functions
get_edge_function
Fetches one Edge Function
deploy_edge_function
Deploys new or changed Edge Function code
create_edge_function_secret
Sends you to the Dashboard to enter an Edge Function secret
list_projects
Lists the projects in your account
get_project
Shows details of one project
create_project
Creates a new project, which may cost money
pause_project
Pauses a project
restore_project
Restores a paused project
list_organizations
Lists your organizations
get_organization
Shows details of one organization
get_cost
Quotes the cost of creating a project or branch
confirm_cost
Records your acceptance of a quoted cost
search_docs
Searches the Supabase documentation
create_branch
Creates a development branch (paid plan)
list_branches
Lists a project's branches
delete_branch
Deletes a branch
merge_branch
Merges a branch's changes into production
reset_branch
Resets a branch's migrations
rebase_branch
Rebases a branch onto production
list_storage_buckets
Lists storage buckets (off by default)
get_storage_config
Reads the project's storage settings
update_storage_config
Changes the project's storage settings

Similar servers