
Supabase MCP: let your AI assistant work with your database
Lets your AI assistant look at and change your Supabase projects: tables, SQL, migrations, logs and Edge Functions.
This is Supabase's own server. It lets Claude, Cursor, ChatGPT and other assistants list your tables, run SQL, apply migrations, read logs and deploy Edge Functions. It works with your developer permissions, so it can change or delete data. Use it on a development project, and turn on read-only mode for anything that matters. Supabase says hidden text in your data can still trick the assistant, even in read-only mode.
Good for
- Developers building an app on Supabase who want their editor assistant to handle schema and query work
- Teams who want to test schema changes on a development branch before they reach production
- Anyone debugging a failing request by reading API, database or function logs
- Developers who want security and performance checks, such as tables missing access rules
Works in
4 supported · 5 with issues · 5 should work
Tap an app to see how to set it up and any known problems.
Documented by Supabase: add the server address to your Cursor MCP file, then sign in. supabase.com
Documented by Supabase. Needs a recent Gemini CLI. supabase.com
Documented by Supabase: add the server address and sign in. supabase.com
Listed in Supabase's setup docs for the hosted server. supabase.com
Documented by Supabase. Sign-in problems and repeated sign-in prompts are open.
Known problems
- Open
Sign-in page shows 'Unrecognized client_id' and retrying never recovers
Workaround: Run claude mcp logout for the Supabase server, then connect again (maintainer's suggestion).
Since Aug 2026 · GitHub
- Open
Supabase plugin overwrites a manually added read-only setting when it auto-updates
Workaround: Configure the MCP server and skills yourself instead of using the plugin (maintainer's suggestion).
Since Aug 2026 · GitHub
- Open
Asks you to sign in again every 6 to 12 hours
Since May 2026 · GitHub
- Open
Local CLI endpoint can never finish sign-in because the OAuth discovery routes are missing
Since Apr 2026 · GitHub
- Open
Says sign-in succeeded but the server still shows 'authentication needed'
Workaround: Update Claude Code; a maintainer could not reproduce it on a newer release.
Since Jan 2026 · GitHub
Supabase documents the Claude.ai connector, not a Desktop config file. One report says it stops responding.
Known problems
- Open
Works for a couple of requests, then stops responding
Since Aug 2025 · GitHub
Documented by Supabase. One open report says sign-in fails and the server hangs.
Known problems
- Open
Sign-in fails with 'Failed to create authentication token' and the server hangs on startup
Since Oct 2025 · GitHub
Documented by Supabase. Branch and migration confirmations have failed, and sign-in repeats.
Known problems
- Open
Creating a branch fails with 'Invalid or expired requestState' and no cost prompt appears
Since Oct 2026 · GitHub
- Closed
Migrations fail at the SQL confirmation step with 'Invalid or expired requestState'
Reported Oct 2026 · GitHub
- Open
Asks you to sign in again every day
Since Jun 2026 · GitHub
- Open
The app connector can only be authorized for one Supabase organization at a time
Since Jun 2026 · GitHub
- Open
Unclear how to connect several projects; users hit repeated sign-in loops
Since Mar 2026 · GitHub
Install it from the ChatGPT app directory. Confirmations have failed and only one organization works at a time.
Known problems
- Open
Creating a branch fails with 'Invalid or expired requestState' and no cost prompt appears
Since Oct 2026 · GitHub
- Closed
SQL and migration confirmations fail with 'Invalid or expired requestState'
Reported Oct 2026 · GitHub
- Open
Only one Supabase organization can be authorized per connection
Since Jun 2026 · GitHub
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports hosted MCP servers.
Install Supabase MCP
Claude Code
- 1
Copy this prompt.
Add the Supabase MCP server to Claude Code. Run this command: claude mcp add --transport http supabase https://mcp.supabase.com/mcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Read-only mode: Want it to only read? Add ?read_only=true to the end of the server address: https://mcp.supabase.com/mcp?read_only=true
Pick the organization that holds your project when you sign in. Give it one project only by adding project_ref=<project-ref> to the server address. The local npx method needs a personal access token in SUPABASE_ACCESS_TOKEN.
Built from the package data we hold. Not yet tested by us.
Tools
Lists the Supabase projects in your account.
Shows the Supabase projects in your account. This is an account-level tool.
Try: “Which of my Supabase projects exist, and what are they called?”
Read ·
list_projectsShows the details and status of one Supabase project.
Returns the details and current status of a single project.
Try: “Is my blog project on Supabase up right now?”
Read ·
get_projectLists your database tables, with columns and keys on request.
Lists the tables in one or more schemas. The short view shows names only. The detailed view adds columns, keys and foreign keys.
Try: “Show me every table in my app's database and the columns in each one.”
Read ·
list_tablesRuns any SQL you give it against your database, and can change data.
Runs raw SQL on the Postgres database. Results can include text from your data, so treat them as untrusted. It changes data unless the server is set to read-only mode.
Try: “Count how many users signed up in the last 7 days.”
Write ·
execute_sqlSearches the Supabase documentation for answers.
Searches Supabase's own documentation so the assistant can answer from it.
Try: “How do I turn on row level security for a table in Supabase?”
Read ·
search_docsLists the database migrations on record.
Lists the migrations recorded for the database, so you can see which schema changes have been made.
Try: “What schema changes have already been applied to my database?”
Read ·
list_migrationsApplies a schema change to your database. Risky statements may ask first.
Runs a migration, which is a database schema change such as adding a table or column. Destructive statements may ask you to confirm first. It changes data.
Try: “Add a created_at column to the orders table with a default of now.”
Write ·
apply_migrationLists the Postgres extensions your database can use and has installed.
Shows the Postgres extensions that are available and the ones already installed.
Try: “Is the pgvector extension installed on my database?”
Read ·
list_extensionsLists the Edge Functions in a Supabase project.
Shows the Edge Functions that exist in a project.
Try: “Which Edge Functions are deployed in my project?”
Read ·
list_edge_functionsShows the files that make up one Edge Function.
Returns the files of a single Edge Function, so you can read its code.
Try: “Show me the code of my send-welcome-email function.”
Read ·
get_edge_functionDeploys an Edge Function. It replaces the one with the same name and goes live at once.
Publishes an Edge Function. An existing function with the same name is replaced, and the new version starts serving right away. It changes data.
Try: “Deploy my updated send-welcome-email function.”
Write ·
deploy_edge_functionAsks you to enter an Edge Function secret in the Supabase dashboard.
Points you to the Supabase dashboard to type in an Edge Function secret. It needs a connection that is not read-only.
Try: “Add the Stripe key as a secret for my Edge Function.”
Write ·
create_edge_function_secretShows recent logs for one service, such as the API, Postgres or Edge Functions.
Gets the logs for one service over a window of up to 24 hours. In some setups this tool is hidden in favor of the log query tool.
Try: “Show me the API errors from my project in the last hour.”
Read ·
get_logsSearches project logs with SQL to filter or count entries.
Runs a read-only SQL query against project logs, to filter log fields or count them.
Try: “Count the 500 errors in my API logs from the last day.”
Read ·
query_logsLists security, performance and health warnings for your project.
Returns advisor notices for the project, such as tables that are missing row level security policies.
Try: “Check my Supabase project for security warnings.”
Read ·
get_advisorsWrites TypeScript types that match your database schema.
Generates TypeScript types from the database schema, so app code can match the tables.
Try: “Generate TypeScript types for my current database schema.”
Read ·
generate_typescript_typesReturns the API URL for a project.
Returns the API URL of a project.
Try: “What is the API URL for my Supabase project?”
Read ·
get_project_urlReturns a project's public API keys, including the older anon key.
Returns the publishable API keys of a project and the legacy anon key.
Try: “Give me the publishable key for my staging project.”
Read ·
get_publishable_keysLists the development branches of a project.
Shows the development branches that exist for a project.
Try: “Which development branches does my project have?”
Read ·
list_branchesCreates a development branch with migrations applied and no production data.
Creates a development branch with all migrations applied and no production data. A branch can add hourly charges.
Try: “Make a test branch of my project so I can try a schema change.”
Write ·
create_branchMoves a branch's migrations and Edge Functions into production.
Merges migrations and Edge Functions from a development branch into production. This is destructive.
Try: “Merge my finished feature branch into production.”
Write ·
merge_branchBrings a branch up to date with production so it gets newer migrations.
Rebases a development branch on production to apply newer migrations. This is destructive.
Try: “Update my test branch so it has the newest production migrations.”
Write ·
rebase_branchResets a branch's migrations. Untracked changes on it are lost.
Resets a development branch's migrations. Untracked data or schema changes on the branch are lost.
Try: “Reset my test branch back to its starting migrations.”
Delete ·
reset_branchDeletes a development branch. This is destructive.
Try: “Delete the old test branch I made last week.”
Delete ·
delete_branchCreates a new project. A paid cost must be agreed to first.
Creates a new Supabase project, which can add to your bill. A cost above zero must be agreed before the project is made.
Try: “Create a new Supabase project called staging-api.”
Write ·
create_projectPauses a project.
Pauses the project you name. This changes its state.
Try: “Pause my side-project database while I am away.”
Write ·
pause_projectBrings a paused project back.
Restores a project that was paused. This changes its state.
Try: “Bring my paused side-project back online.”
Write ·
restore_projectShows one organization's details, including its subscription plan.
Returns the details of one organization, including its subscription plan. This is an account-level tool.
Try: “Which plan is my Acme organization on?”
Read ·
get_organizationLists the organizations your Supabase login belongs to.
Shows every organization your login is a member of. Off in project-scoped mode.
Try: “Which Supabase organizations am I part of?”
Read ·
list_organizationsQuotes the cost of a new project or branch before you create it.
Returns the cost of a new project or branch, so you can decide before anything is created. This is an account-level tool.
Try: “How much would a new Supabase project cost before I create it?”
Read ·
get_costLists the file storage buckets in a project.
Shows the storage buckets in a project. The storage group is off by default.
Try: “Which storage buckets does my project have?”
Read ·
list_storage_bucketsShows a project's file storage settings.
Returns the storage configuration of a project. The storage tools are off by default.
Try: “What are the current file storage settings for my project?”
Read ·
get_storage_configChanges a project's file storage settings.
Updates the storage configuration of a project. It changes data. The storage tools are off by default.
Try: “Raise the upload size limit for my storage buckets.”
Write ·
update_storage_configUsed by the assistant behind the scenes
Gets a confirmation ID for a quoted cost, used when creating a project or branch.
Returns a confirmation ID for a quoted project or branch cost. The ID is passed to the create step. This is the legacy cost flow.
Try: “Confirm the quoted cost so the new branch can be created.”
confirm_costSends feedback about these tools to the Supabase team.
Sends a note about the Supabase tools to the Supabase team. It is off in read-only mode.
Try: “Tell Supabase that the log query tool returned an unclear error.”
Network ·
submit_feedbackDeletes feedback you sent earlier to the Supabase team.
Removes feedback you sent earlier, using the token that the send step returned. It is off in read-only mode.
Try: “Withdraw the feedback I sent about that log error.”
Delete ·
delete_feedback
From the official docs
Pros and cons
Good
- Made and maintained by Supabase.
- You sign in with your Supabase account, with no token to copy for most clients.
- A read-only option runs all queries as a read-only database user.
- You can lock it to one project with a single address option.
- Works with Claude Code, Cursor, VS Code, Codex, ChatGPT, Gemini CLI and more.
- Test schema changes on a development branch before merging.
Watch out
- Hidden instructions in your data can still trick it, even in read-only mode.
- It acts with your developer rights, so Supabase says not to give it to customers.
- Sign-in prompts come back often in Claude Code and Codex.
- The Claude.ai connector and Claude Code plugin have no read-only switch.
- Branches and new projects can cost money, and branching needs a paid plan.
- The local and self-hosted versions have fewer tools and no sign-in flow.
Permissions
high risk · 6 things to watch
High risk
A tricked or careless assistant can read, change or delete data in your database, and hidden text inside your data can steer it. Turn on read-only mode, limit it to one project, and use a development project instead of production.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
Prompt injection can expose private tables
Text stored in your data, such as a support ticket, can instruct the model to run SQL that reveals other tables. Supabase says read-only mode does not remove this risk. supabase.com
Runs SQL with your developer permissions
execute_sql and apply_migration can change or drop data and schema. The server acts with your account's rights, so Supabase says not to give it to customers or end users. supabase.com
Paid-resource confirmation can be skipped by an agent
An open report says confirm_cost involves no human and its token can be computed, so an agent could create billable projects or branches. Form confirmations depend on client support. github.com
OAuth asks for full account access
An open request asks Supabase to request only the scopes the enabled tools need; today sign-in grants broad account access unless you scope a PAT yourself. github.com
No read-only switch on Claude.ai connector or plugin
Read-only is set with a URL parameter, which the hosted connectors and the auto-updating Claude Code plugin do not expose. github.com
Does not bypass Row Level Security
Supabase says RLS stays enforced, but the server may run at a higher privilege than your app's users. supabase.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | Add ?read_only=true to the server URL (e.g. https://mcp.supabase.com/mcp?project_ref=<id>&read_only=true). Queries then run as a read-only Postgres user and mutating tools are dropped. The Claude.ai connector and the Claude Code plugin offer no toggle for it. |
|---|---|
| Talks to | mcp.supabase.com |
| Sign-in and keys | Sign in with your Supabase account in the browser; a personal access token is only needed for CI or the local npx method. |
Alternatives
Use this server if your database is on Supabase. Pick Neon's server only if you are choosing a different hosted Postgres.
| Server | Runs | Sign-in | Can change things | GitHub stars |
|---|---|---|---|---|
| For Supabase | ||||
| SupabaseThis page | HostedLocal | Account | Yes | 3K |
| Other tools for the same job | ||||
| NeonFor PostgreSQL | HostedLocal | – | – | 659 |
What people say
People like how fast it makes development work and dislike the prompt-injection risk and the repeated sign-in prompts.
What people like
- Read-only and one-project options let you limit what the assistant can touch.
- Developers say they use it all the time in development, in read-only mode, and it saves time.
- Signing in with your Supabase account replaced access tokens for most clients, so setup is one address.
Common complaints
- Hidden instructions in your data can trick the assistant into leaking other tables.
- Claude Code and Codex users report signing in again every day or so.
- The Claude.ai connector and Claude Code plugin have no read-only switch.
- Confirmation prompts for migrations and branches have failed in ChatGPT and Codex.
- It is hard to use with several projects or organizations from one setup.
- Critics say an AI should never get more database access than the person using it.
In their words
“But even in read-only mode, prompt injection remains the number one concern.”BlogJul 2025
“The Supabase MCP, like the GitHub MCP before it, can provide all three from a single MCP.”Simon WillisonHacker NewsJul 2025
“I use the heck out of Supabase MCP during development, in read only mode. It's great and saves so much time! What I would never do is connect it to a production DB, where I was not the only person running it.”consumer451Hacker NewsJul 2025
“No, there is only one design flaw, the overprivileged database access. An LLM shouldn't be given more access than the user who is interacting with the LLM has.”hanneshdc
4 more quotesFewer quotes
“It's the only mcp server that keeps asking for reauthentication every day.”mtrajanoGitHub issueJan 2026
“I've been trying to get supabase MCP to work for months, each time when I revisit there is some new authentication related error, I wish this would finally get resolved.”GGGSPBDocs
“Keep manual approval enabled for interactive work, and review each tool call before you run it.”Docs
“Connect to a production project only when the task requires production evidence.”
Questions
What is the Supabase MCP server URL?
The hosted address is https://mcp.supabase.com/mcp. Add ?read_only=true or ?project_ref=<project-id> to limit it. The dashboard's MCP tab builds a custom address for you.
Is the Supabase MCP server free?
Yes. The server is open source under Apache-2.0 and costs nothing to use. You pay only for what your Supabase plan covers, and branching needs a paid plan.
Do I need a Supabase access token?
No for most clients. Your client opens a browser sign-in and you pick the organization. A personal access token is only needed for CI or the local npx method.
How do I make it read-only?
Add ?read_only=true to the end of the server address. Queries then run as a read-only database user and write tools are removed. The Claude.ai connector and Claude Code plugin do not offer this switch.
Can I limit it to one project?
Yes. Add ?project_ref=<project-id> to the address. That scopes it to that project and turns off account-level tools such as creating projects.
Can it change or delete my data?
Yes, unless you use read-only mode. It can run any SQL your developer account allows, and it can merge or reset branches.
Is it safe to connect to a production database?
Supabase advises against it unless the task needs production data. If you must, use read-only and one-project mode, approve each tool call by hand, and test changes on a development branch first. Hidden text in your data can still trick the assistant.
Does it bypass Row Level Security?
Supabase says no, Row Level Security stays enforced. The server can still run with higher rights than your app's users.
Why does it keep asking me to sign in again?
Users in Claude Code and Codex report signing in again every 6 to 24 hours. It is an open issue and Supabase says it is investigating.
Does it work with local or self-hosted Supabase?
Yes, with limits. The Supabase CLI serves it on your machine and self-hosted setups can turn it on. Both have fewer tools and no sign-in flow.
Examples
List your tables and design a schema change, then apply it as a migration.
List my tables, then add a notes column to orders and apply it as a migration.
Generate TypeScript types from your database for your app code.
Generate TypeScript types for my database schema.
Check security and performance advisors after a migration, such as tables missing access rules.
Run the security advisors and tell me which tables have no RLS policy.
Debug a failing request by reading API, Postgres or Edge Function logs for a time window.
Show the API and Postgres logs from the last 30 minutes and find why signup fails.
Deploy or update an Edge Function from your editor.
Update the send-email Edge Function to retry twice, then deploy it.
Try schema changes on a development branch, then merge them to production.
Create a dev branch, apply this migration there, and show me the result before merging.
Information
updated Nov 2, 2026
- Publisher
- Supabase (official)
- Package
@supabase/mcp-server-supabase- Registry
- npm
- Endpoint
https://mcp.supabase.com/mcp- Transport
- stdio, Streamable HTTP
- Auth
- OAuth
- Version
- 0.14.0
- License
- Apache-2.0
- Last commit
- Oct 31, 2026
- Open issues
- 64
- Listed in
- Official MCP registry
WebsiteDocsGitHubnpmOfficial MCP RegistryInstall guideChangelogIssues
Other Supabase MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 30Hide
- github.com · github.com
- supabase.com · supabase.com
- supabase.com · supabase.com
- supabase.com · supabase.com
- Supabase MCP server: database operation tools · github.com
- github.com · github.com
- Supabase MCP server: development tools · github.com
- Supabase MCP server: Edge Function tools · github.com
- Supabase MCP server: account tools · github.com
- Supabase MCP server: branching tools · github.com
- Supabase MCP server: storage tools · github.com
- Supabase MCP server: feedback tools · github.com
- Supabase MCP server: docs tools · github.com
- Supabase MCP server: secret tools · github.com
- simonwillison.net · simonwillison.net
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- supabase.com · supabase.com
- requestState error · github.com
- VS Code sign-in · github.com
- news.ycombinator.com · news.ycombinator.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- news.ycombinator.com · news.ycombinator.com
- reddit.com · reddit.com
- Supabase PostgREST MCP server · github.com
- selfhosted-supabase-mcp · github.com