Manage Supabase projects, tables, migrations, logs and Edge Functions.
- Needs your setup first
- ★ 3K GitHub stars
- Last commit 26 Oct 2026
At a glance
Supabase maintains this server. It covers the whole project, not just the database: list and create projects, run SQL, apply migrations, read logs, generate TypeScript types and deploy Edge Functions.
The easiest setup is the hosted server, which signs you in with your Supabase account in the browser. You can scope it to one project and to read-only from the URL.
- Made by
- Supabase
- GitHub stars
- 3K
- Last commit
- 26 Oct 2026
- Tools
- 29
- Runs on
- Hosted
Our check: It needs something our Linux test machine does not have (an account, a desktop app, a Mac or a running service), so on 26 Oct 2026 we listed its tools from its package instead of running this config. The npm package called "supabase-mcp" comes from a different repository (Cappahccino/SB-MCP). Supabase's own server is the hosted URL above; their local package is @supabase/mcp-server-supabase.
What's in the pod: its tools
We found 29 tools when we ran its package, before any sign-in or app was connected, on 26 Oct 2026. 18 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.
How we tested it: Listed by the npm build of the same server (v0.14.0) with its default feature groups and a placeholder token; search_docs was added from the source, as it needs the docs API to load. The hosted URL on this page needs a Supabase sign-in.
Runs commands1 tool · Can start programs or run code.
| Tool | What it is for |
|---|---|
execute_sql | Runs a SQL query against the project's Postgres database and returns the rows. |
Changes things10 tools · Can create, edit, send or delete.
| Tool | What it is for |
|---|---|
apply_migration | Runs a schema change as a named migration so it is tracked like any other. |
create_branch | Spins up a development branch of a project to try changes safely. |
create_project | Starts a new Supabase project in the organisation and region you choose. |
delete_branch | Removes a development branch you no longer need. |
deploy_edge_function | Uploads and deploys an Edge Function from code the agent wrote. |
merge_branch | Merges a branch's migrations and functions back into production. |
pause_project | Pauses a project so it stops running. |
rebase_branch | Brings a branch up to date with migrations added to production since it was made. |
reset_branch | Rolls a branch's migrations back to an earlier version. |
restore_project | Wakes a paused project up again. |
Only reads18 tools · Looks things up and changes nothing.
| Tool | What it is for |
|---|---|
confirm_cost | Asks you to accept the price before a new project or branch is created. |
generate_typescript_types | Builds TypeScript types from the current database schema. |
get_advisors | Lists security and performance warnings, such as tables missing row level security. |
get_cost | Tells you what a new project or branch would cost before you make it. |
get_edge_function | Fetches the source of one deployed Edge Function. |
get_organization | Shows one organisation's details and plan. |
get_project | Shows one project's details, region and status. |
get_project_url | Returns the API URL your app uses to reach the project. |
get_publishable_keys | Returns the public keys a front end needs to talk to the project. |
list_branches | Lists a project's development branches and their state. |
list_edge_functions | Lists the Edge Functions deployed in a project. |
list_extensions | Shows which Postgres extensions are installed. |
list_migrations | Lists the migrations already applied to the database. |
list_organizations | Lists the organisations your account belongs to. |
list_projects | Lists every project you can reach. |
list_tables | Lists tables in the chosen schemas, with their columns. |
query_logs | Pulls recent logs for the API, Postgres, auth, storage or functions to help debug. |
search_docs | Searches Supabase's documentation for an up-to-date answer. |
Grouped and described by us. The README on GitHub lists the inputs each tool takes.
Set it up
Pick your app for the exact snippet and where it goes.
Where it goes: Settings → Connectors → Add custom connector
https://mcp.supabase.com/mcpPaste the URL and sign in if asked. Custom connectors depend on your plan.
Where it goes: Your terminal, in the project folder
claude mcp add --transport http supabase https://mcp.supabase.com/mcpWhere it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"supabase": {
"url": "https://mcp.supabase.com/mcp"
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"supabase": {
"type": "http",
"url": "https://mcp.supabase.com/mcp"
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"supabase": {
"serverUrl": "https://mcp.supabase.com/mcp"
}
}
}Where it goes: Settings → Apps & Connectors → create a connector
https://mcp.supabase.com/mcpPaste the URL as the connector address and sign in if asked.
Add ?project_ref=your-project-ref&read_only=true to the URL to lock it to one project and to read-only queries.
New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.
Settings
Names are exactly as the project spells them. Required ones are marked.
| Setting | What it does |
|---|---|
https://mcp.supabase.com/mcpConfig · required | The hosted server address. Your client opens a Supabase sign-in the first time you connect. |
project_refConfig | Add to the URL to lock the agent to one project. Account-wide tools such as creating projects disappear.?project_ref=abcdefghijklmnop |
read_onlyConfig | Add read_only=true to the URL and every tool that changes data is left out.&read_only=true |
featuresConfig | Comma-separated tool groups to switch on: account, database, debugging, development, docs, functions, branching, storage.&features=database,docs |
http://localhost:54321/mcpConfig | Address of the smaller tool set served by a local stack started with the Supabase CLI. |
What it can touch
It can read
- Projects, organisations, schemas, logs and advisor reports for the account you sign in with
- Supabase's public docs
It can change
- Database rows and schema through SQL and migrations
- Projects and branches, which can add to your bill
- Deployed Edge Functions
Safer setup: Use a development project, not production, and add project_ref plus read_only=true to the URL. Supabase also advises keeping manual approval of each tool call switched on in your client.
Before you start
- A Supabase account
If it does not work
- The agent works on the wrong project
- Add ?project_ref=<your project ref> to the server URL so it can only see that one.
- Sign-in picks the wrong organisation
- Disconnect and reconnect, then choose the organisation that owns the project on the Supabase consent screen.
- Tools are missing on a local or self-hosted stack
- The CLI and self-hosted servers only offer a subset of tools. Account and branching tools need the hosted URL.
- An old client cannot connect
- The server only speaks the current MCP protocol. Update your client to a recent version.
Peas in a pod: similar servers
How Supabase lines up against other databases and data servers on the shelf.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| Supabase | 29 | Hosted | – | 3K |
| MCP Toolbox for Databases | 29 | Your computer | Apache-2.0 | 16.7K |
| Qdrant | 2 | Your computer | Apache-2.0 | 1.6K |
| Excel MCP Server | 46 | Your computer | MIT | 4.3K |
| Postgres MCP Pro | 9 | Your computer | MIT | 3.4K |
Questions
Is it safe to point at production?
Supabase itself advises against it. Data returned by queries could contain instructions that trick the model, so use a dev project or read-only mode.
Do I still need a personal access token?
Not for the hosted URL. Your client signs in with OAuth in the browser.
Does it cost money?
The server is free and Apache 2.0 licensed. Creating projects or branches can add charges, which is why it shows the cost and asks you to confirm first.
Can I use it with the Vercel AI SDK?
Yes. The npm package exports createToolSchemas so the AI SDK gets typed inputs and outputs for each tool.
Something wrong on this page? Tell us.