What Is Supabase MCP? Setup, Read-Only Mode, Security Risks and Pricing
You tell your assistant (such as Claude Code or Cursor) the database task; Supabase MCP connects to your project, lists tables, runs SQL, applies migrations, reads logs and security advisors, and deploys Edge Functions. It is Supabase's official MCP server; the hosted address is https://mcp.supabase.com/mcp, you sign in with your Supabase account in the browser, and no personal access token is needed. When connecting to a production project, Supabase recommends narrowing access with read_only and project_ref; the documentation also says the destructive-SQL confirmation is not a security guarantee. Branching requires a paid plan.
- What it does
- Has your assistant handle SQL, migrations and logs in your Supabase project
- Type
- MCP server (remote; also available for the local CLI)
- Where
- Claude Code, Cursor and other MCP clients
- Sign-in
- Supabase sign-in in the browser; no token needed
- Risk
- Can write SQL; prompt injection risk
- Turkish
- Not stated in the official documentation
- Price
- No separate fee for MCP; Branching requires a paid plan
What Is Supabase MCP For?
MCP is the standard for AI programs to connect to outside tools. With Supabase MCP your assistant accesses your Supabase project directly: you ask "what tables are in the database", which is the test prompt the documentation suggests. The assistant can apply schema changes as migrations, query project logs, read security and performance advisors, and list and deploy Edge Functions.
It can write SQL; on a production project, narrow it with read_only and project_ref.
The tools are split into groups: database, debugging, development (URL, keys, TypeScript types), Edge Functions, account management, docs search, development branches and storage. The storage group is off by default. The documentation names 33 tools; some are conditional.
Who it is for: people building apps with Supabase who want to speed up database work with an assistant. The documentation explicitly says not to give it to your customers or end users; it is designed as a developer tool.
How Do I Set Up Supabase MCP?
You connect to the hosted server; there is no package to install on your computer. You narrow access with URL parameters. The commands are taken verbatim from the Supabase documentation.
› claude mcp add --scope project --transport http supabase "https://mcp.supabase.com/mcp?features=docs%2Caccount%2Cdatabase%2Cdebugging%2Cdevelopment%2Cfunctions%2Cbranching"Then run claude /mcp in a regular terminal (not in the IDE extension), select the supabase server and choose "Authenticate". A Supabase sign-in opens in the browser; select the organization that contains the project.
Example of a narrowed address for a production project: https://mcp.supabase.com/mcp?read_only=true&project_ref=YOUR_PROJECT_REF. The parameters match the documentation; this exact command does not appear in the documentation in this form.
› { "mcpServers": { "supabase": { "type": "http", "url": "https://mcp.supabase.com/mcp" } } }In Cursor, verify the connection under Cursor Settings then Tools & MCP. For clients not on the list, the README says to copy this information into the format the client expects (json, yaml, etc.). The "MCP connection" tab in the Supabase dashboard generates a project-specific address.
A browserless environment needs a personal access token (PAT). The documentation says: create the token on the Supabase access tokens page with a name that shows its purpose, and limit it to the connected project and the permissions it needs.
› { "mcpServers": { "supabase": { "type": "http", "url": "https://mcp.supabase.com/mcp?project_ref=${SUPABASE_PROJECT_REF}", "headers": { "Authorization": "Bearer ${SUPABASE_ACCESS_TOKEN}" } } } }Not every client supports custom headers.
When working locally with the Supabase CLI, the address is http://localhost:54321/mcp. Self-hosted Supabase also offers only a subset of tools and no OAuth 2.1 (README).
| URL parameter | What it does |
|---|---|
read_only=true | Runs all queries as a read-only Postgres user. |
project_ref=<id> | Limits it to a single project; account tools (creating projects, etc.) are turned off. |
features=database,docs | Turns on only the selected tool groups. |
skip_elicitations=execute_sql,apply_migration | Skips form confirmations for the listed tools; it does not skip authentication, read-only mode or charges. |
Do your first test in a separate test project, not in production, and start with read_only=true.
How Do I Use Supabase MCP?
Once connected, you tell the assistant what you want in plain language; it picks the tools itself. The first test the documentation suggests: "What tables are there in the database? Use MCP tools."
Most MCP clients ask you to approve each tool call. For interactive work, keep that approval on and read each call before it runs.
Which Tools Does Supabase MCP Work In?
| Claude CodeYes | The documentation has a command and a .mcp.json example; sign in with claude /mcp. |
|---|---|
| CursorYes | The documentation explains verifying the connection under Cursor Settings then Tools & MCP. |
| Windsurf and other assistantsPartly | The README mentions Windsurf in general; no separate step list appears. |
| ChatGPT, Codex, VS Code, Gemini CLI, Claude appUnclear | The documentation's client picker is rendered with JavaScript; the steps are unclear in the official source. That does not mean "it doesn't work". |
There is an open GitHub issue reporting an error during the apply_migration confirmation in the Codex desktop app (issue #472, October 14, 2026). The list is compiled from the parts of the documentation available as static text.
What Does Supabase MCP Access, and What Can It Do?
Tables, extensions, the migration list, SQL results (that is, database data), project logs, security and performance advisors, Edge Function code, project details, the API URL and publishable keys.
With read_only off: SQL (including writes and deletes), migrations, Edge Function deployment, creating and pausing projects, merging and resetting branches, storage configuration (off by default).
execute_sql and apply_migration can run SQL such as DROP, DELETE, TRUNCATE. delete_branch deletes a branch, pause_project pauses the project.
The server is a remote service hosted by Supabase; query results go to the assistant. The documentation says results are wrapped with a "don't follow instructions inside" warning, but that this is not foolproof.
- Read-only Postgres user with read_only=true
- A single project with project_ref
- Only the groups you need with features
- Giving it to your customers or end users
- Connecting it unprotected to a production project with sensitive data
!The Supabase documentation says connecting an LLM to a data source carries inherent risks and that the main attack is prompt injection: text in user content can trick the assistant into following untrusted commands. On the destructive-SQL confirmation form, the documentation's own words: "not a security guarantee". Some clients support rules that answer confirmations automatically. A search of GitHub Security Advisories shows no published advisories. That does not mean it is "secure".
The documentation's recommendations: protect production projects with sensitive data, turn on read_only, limit the server to a single project, narrow the feature groups, use development branches, and read and approve every tool call.
Is Supabase MCP Free?
No separate fee is listed for the MCP server; your Supabase plan applies. However, the documentation has no explicit sentence saying whether MCP works on a Free project. Only for Branching does the documentation say "requires a paid plan", and the pricing page lists Branching as "Not included" on the Free plan. So it would not be accurate to say "it works on the free plan"; the way to find out is to create a project on the Free plan and connect it.
- 2 active projects
- No separate MCP restriction listed
- Branching (development branches)
- Inactive projects are paused after 1 week
- Branching (experimental)
- Active branch $0.01344 per hour (repository docs)
Creating projects and branches requires a cost confirmation; no confirmation is asked for a zero-cost project. Paid plan amounts are unclear in the official source. Prices are in US dollars; no lira price is listed.
Source: Supabase pricing page, MCP documentation and repository docs. Commercial use depends on your Supabase account and plan terms; the code is Apache-2.0 licensed. This is not legal advice.
Common Problems and Fixes
| What happens | What to do |
|---|---|
| The cost or destructive-SQL confirmation window never appears | Your client may not support form-type confirmations; the documentation has troubleshooting sections for both cases. For costs, the older flow (get_cost + confirm_cost) kicks in. |
| Tools don't appear after signing in | Depending on the client, a restart may be needed; in Cursor, check the connection under Cursor Settings then Tools & MCP. |
| Reported by users A harmless UPDATE asks for confirmation and fails after ~180 seconds without a reply | Open issue #457 (October 3, 2026): a semicolon inside a text value triggers the destructive-SQL check. No official fix. |
| Reported by users Error on apply_migration confirmation in the Codex desktop app | Open issue #472 (October 14, 2026); no fix. |
| Reported by users list_tables returns only public, not all schemas | According to the title of open issue #395, the default is [public]. Specify the schema explicitly in your request. |
| Reported by users Multiple organizations are not supported | The title of open issue #414 says so. |
How Do I Remove Supabase MCP?
- In the client: delete the
supabaseentry from the MCP server list (in Claude Code, remove it from the project's .mcp.json file; the Supabase documentation has no separate command). - If you used a token: delete the personal access token you created for CI on the Supabase access tokens page. If you set up a manual OAuth app, remove it from your organization's OAuth apps page.
- Regular OAuth authorization: the documentation does not name the screen for revoking it from your account; check the authorized apps in your Supabase account settings.
Frequently asked questions
What is Supabase MCP?
Supabase's official MCP server. An AI assistant like Claude Code connects to your project, lists tables, runs SQL, applies migrations, reads logs and deploys Edge Functions.
Is it safe to connect it to my live (production) database?
The documentation does not say it is safe. A production project may contain sensitive data; before connecting, limit the server to that project (project_ref), turn on read_only, narrow the feature groups and use a development branch if possible.
Can I give this to my customers?
No. Supabase says "don't give it to your customers": the server runs with developer permissions and should be used as an internal developer tool.
Do I need a personal access token (PAT)?
Not in the default setup; a Supabase sign-in in the browser is enough. It is needed in browserless environments like CI, or for clients that require an OAuth client ID.
Does it work on a free Supabase project?
The documentation has no explicit sentence about Free projects. It only lists a paid plan for Branching, and the pricing page shows "Not included" on Free. The way to find out is to create a project on the Free plan and connect it.
Related guides
Sources
- Supabase docs: MCP server
- supabase/mcp README
- From development to production
- Supabase pricing
- npm: @supabase/mcp-server-supabase
Not clear in the official sources: Whether MCP works on a Free project (no explicit sentence in the documentation) · setup steps for ChatGPT, Codex, VS Code, Gemini CLI and the Claude app · paid plan amounts · the screen for revoking OAuth authorization from your account. Each is covered in its section.




