Supabase MCP Server
Provides secure access to Supabase databases via the PostgREST API, enabling operations such as selecting, inserting, updating, deleting, and upserting table rows, as well as executing stored procedures.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Supabase MCP ServerList the 10 most recent orders from the orders table."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Supabase MCP Server
A Supabase MCP server built with the Dedalus MCP framework. Provides secure access to Supabase databases via the PostgREST API with credential encryption and JIT token exchange.
Features
Available Tools
Read Operations
Tool | Description |
| Select rows from a table with optional filters, ordering, and pagination |
| Get a single row by primary key |
Write Operations
Tool | Description |
| Insert one or more rows into a table |
| Update rows matching specified filters |
| Delete rows matching specified filters |
| Insert or update rows on conflict |
RPC
Tool | Description |
| Call a Supabase stored procedure/function |
Related MCP server: Supabase MCP Server
Prerequisites
Python 3.10+
uv package manager
Supabase project URL and API key
Dedalus API Key
Setup
Clone the repository
git clone https://github.com/dedalus-labs/supabase-mcp.git
cd supabase-mcpInstall dependencies
uv syncConfigure environment variables
Create a .env file based on .env.example.
Client Usage
import asyncio
import os
from dotenv import load_dotenv
from dedalus_labs import AsyncDedalus, DedalusRunner
from dedalus_mcp.auth import Connection, SecretKeys, SecretValues
load_dotenv()
SUPABASE_URL = os.getenv("SUPABASE_URL")
# Define the Supabase connection
supabase = Connection(
name="supabase-mcp",
secrets=SecretKeys(key="SUPABASE_SECRET_KEY"),
base_url=f"{SUPABASE_URL}/rest/v1",
auth_header_name="apikey",
auth_header_format="{api_key}",
)
# Bind credentials (encrypted client-side, decrypted at dispatch time)
supabase_secrets = SecretValues(supabase, key=os.getenv("SUPABASE_SECRET_KEY", ""))
async def main():
client = AsyncDedalus(
api_key=os.getenv("DEDALUS_API_KEY"),
base_url=os.getenv("DEDALUS_API_URL"),
as_base_url=os.getenv("DEDALUS_AS_URL"),
)
runner = DedalusRunner(client)
result = await runner.run(
input="Select all rows from the users table, limit to 5.",
model="openai/gpt-5",
mcp_servers=["issac/supabase-mcp"],
credentials=[supabase_secrets],
)
print(result.output)
if __name__ == "__main__":
asyncio.run(main())License
MIT License - see LICENSE for details.
This server cannot be deployed
Maintenance
Related MCP Connectors
- SupabaseOAuthcom.supabase
MCP server for interacting with the Supabase platform
Remote MCP for 1,500+ APIs. Vault-managed credentials; OAuth or API key. Search, load, and execute.
Manage Supabase projects end to end across database, auth, storage, realtime, and migrations. Moni…
Build multi-tenant apps over MCP. Schemas, CRUD, deploys — access control enforced server-side.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables developers to interact with self-hosted Supabase instances, providing database introspection, migration management, auth user operations, storage management, and TypeScript type generation directly from MCP-compatible development environments.-
- AlicenseNot gradedqualityCmaintenanceProvides secure access to Supabase databases via PostgREST API and management tools for projects, schemas, branches, logs, and code generation.MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Supabase databases, including listing tables, querying, inserting, updating, deleting records, and executing RPC functions.31 npmMIT
- AlicenseBqualityDmaintenanceMCP server for Supabase database and storage operations, enabling querying, inserting, updating, deleting rows, schema introspection, and file storage management.120MIT