Supabase MCP Server
An MCP server providing administrative control over a Supabase PostgreSQL database, compatible with Cursor's Composer and Codeium's Cascade.
Supabase MCP Server š
š„ A powerful Model Context Protocol (MCP) server that provides full administrative control over your Supabase PostgreSQL database through both Cursor's Composer and Codeium's Cascade. This tool enables seamless database management with comprehensive features for table operations, record management, schema modifications, and more.
š Table of Contents
- Prerequisites
- Quick Start
- Integrations
- Features
- Usage
- Security Notes
- Troubleshooting
- Contributing
- License
š§ Prerequisites
- Node.js >= 16.x
- npm >= 8.x
- A Supabase project with:
- Project ID
- Database password
- PostgreSQL connection string
- Cursor IDE or Codeium's Cascade (for paying users)
š Quick Start
š„ Installation
# Clone the repository
git clone https://github.com/Quegenx/supabase-mcp-server.git
cd supabase-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
āļø Configuration
-
Install dependencies and build the project:
npm install npm run build -
In Cursor's MCP settings, add the server with this command:
/opt/homebrew/bin/node /path/to/dist/index.js postgresql://postgres.[PROJECT-ID]:[PASSWORD]@aws-0-eu-central-1.pooler.supabase.com:5432/postgresReplace:
/path/to/dist/index.jswith your actual path[PROJECT-ID]with your Supabase project ID[PASSWORD]with your database password
Note: Keep your database credentials secure and never commit them to version control.
šÆ Integrations
Cursor MCP Integration
The Model Context Protocol (MCP) allows you to provide custom tools to agentic LLMs in Cursor. This server can be integrated with Cursor's Composer feature, providing direct access to all database management tools through natural language commands.
Setting up in Cursor
-
Open Cursor Settings > Features > MCP
-
Click the "+ Add New MCP Server" button
-
Fill in the modal form:
- Name: "Supabase MCP" (or any nickname you prefer)
- Type:
command(stdio transport) - Command: Your full command string with connection details
-
Build the project first:
npm install npm run build -
Get your Node.js path:
# On Mac/Linux which node # On Windows where node -
Add the server command:
/path/to/node /path/to/dist/index.js postgresql://postgres.[PROJECT-ID]:[PASSWORD]@aws-0-eu-central-1.pooler.supabase.com:5432/postgresReplace:
/path/to/nodewith your actual Node.js path (from step 5)/path/to/dist/index.jswith your actual path to the built JavaScript file[PROJECT-ID]with your Supabase project ID[PASSWORD]with your database password
-
Click "Add Server" and then click the refresh button in the top right corner
Using the Tools in Cursor
The Composer Agent will automatically detect and use relevant tools when you describe your database tasks. For example:
- "List all tables in my database"
- "Create a new users table"
- "Add an index to the email column"
When the agent uses a tool, you'll see:
- A prompt to approve/deny the tool call
- The tool call arguments (expandable)
- The response after approval
Note: For stdio servers like this one, the command should be a valid shell command. If you need environment variables, consider using a wrapper script.
Windsurf/Cascade Integration
This MCP server also supports Codeium's Cascade (Windsurf) integration. Note that this feature is currently only available for paying individual users (not available for Teams or Enterprise users).
Setting up with Cascade
-
Create or edit
~/.codeium/windsurf/mcp_config.json:{ "mcpServers": { "supabase-mcp": { "command": "/path/to/node", "args": [ "/path/to/dist/index.js", "postgresql://postgres.[PROJECT-ID]:[PASSWORD]@aws-0-eu-central-1.pooler.supabase.com:5432/postgres" ] } } } -
Quick access to config:
- Find the toolbar above the Cascade input
- Click the hammer icon
- Click "Configure" to open mcp_config.json
-
Replace in the configuration:
/path/to/nodewith your actual Node.js path/path/to/dist/index.jswith your actual path[PROJECT-ID]with your Supabase project ID[PASSWORD]with your database password
-
In Cascade:
- Click the hammer icon in the toolbar
- Click "Configure" to verify your setup
- Click "Refresh" to load the MCP server
- Click the server name to see available tools
Important Notes for Cascade Users
- Only tools functionality is supported (no prompts or resources)
- MCP tool calls will consume credits regardless of success or failure
- Image output is not supported
- Only stdio transport type is supported
- Tool calls can invoke code written by arbitrary server implementers
- Cascade does not assume liability for MCP tool call failures
⨠Features
šÆ Available Database Tools
Table Management
- Tables:
list_tables,create_table,drop_table,rename_table - Columns:
add_column,drop_column,alter_column - Records:
fetch_records,create_record,update_record,delete_record
Indexes & Constraints
- Indexes:
list_indexes,create_index,delete_index,update_index - Constraints:
list_constraints,add_constraint,remove_constraint,update_constraint
Database Functions & Triggers
- Functions:
list_functions,create_function,update_function,delete_function - Triggers:
list_triggers,create_trigger,update_trigger,delete_trigger
Security & Access Control
- Policies:
list_policies,create_policy,update_policy,delete_policy - Roles:
list_roles,create_role,update_role,delete_role
Storage Management
- Buckets:
list_buckets,create_bucket,delete_bucket - Files:
delete_file,bulk_delete_files - Folders:
list_folders
Data Types & Publications
- Enumerated Types:
list_enumerated_types,create_enumerated_type,update_enumerated_type,delete_enumerated_type - Publications:
list_publications,create_publication,update_publication,delete_publication
Realtime Features
- Policies:
list_realtime_policies,create_realtime_policy,update_realtime_policy,delete_realtime_policy - Channels:
list_realtime_channels,manage_realtime_channels,send_realtime_message,get_realtime_messages - Management:
manage_realtime_status,manage_realtime_views
User Management
- Auth:
list_users,create_user,update_user,delete_user
Direct SQL Access
- Query:
query- Execute custom SQL queries
š Key Benefits
- Natural Language Control: Manage your Supabase database through simple conversational commands
- Comprehensive Coverage: Full suite of tools covering tables, records, indexes, functions, security, and more
- Seamless Integration: Works directly within Cursor's Composer and Codeium's Cascade
- Developer Friendly: Reduces context switching between IDE and database management tools
- Secure Access: Maintains your database security with proper authentication
š Project Structure
supabase-mcp-server/
āāā dist/ # Compiled JavaScript files
ā āāā index.d.ts # TypeScript declarations
ā āāā index.js # Main JavaScript file
āāā src/ # Source code
ā āāā index.ts # Main TypeScript file
āāā package.json # Project configuration
āāā package-lock.json # Dependency lock file
āāā tsconfig.json # TypeScript configuration
š” Usage
Once configured, the MCP server provides all database management tools through Cursor's Composer. Simply describe what you want to do with your database, and the AI will use the appropriate commands.
Examples:
- š "Show me all tables in my database"
- ā "Create a new users table with id, name, and email columns"
- š "Add an index on the email column of the users table"
š Security Notes
- š Keep your database connection string secure
- ā ļø Never commit sensitive credentials to version control
- š® Use appropriate access controls and permissions
- š”ļø Validate and sanitize all inputs to prevent SQL injection
š ļø Troubleshooting
Common Connection Issues
-
Node.js Path Issues
- Ensure you're using the correct Node.js path
- On Mac/Linux: Use
which nodeto find the correct path - On Windows: Use
where nodeto find the correct path - Replace
/usr/local/bin/nodewith your actual Node.js path
-
File Path Issues
- Use absolute paths instead of relative paths
- On Mac/Linux: Use
pwdin the project directory to get the full path - On Windows: Use
cdto get the full path - Example:
/Users/username/projects/supabase-mcp-server/dist/index.js
-
MCP Not Detecting Tools
- Click the refresh button in Cursor's MCP settings
- Ensure the server is running (no error messages)
- Check if your connection string is correct
- Verify your Supabase credentials are valid
-
Permission Issues
- Make sure the
distdirectory exists (runnpm run build) - Check file permissions (
chmod +xon Unix systems) - Run
npm installwith appropriate permissions
- Make sure the
Debug Mode
Add DEBUG=true before your command to see detailed logs:
DEBUG=true /usr/local/bin/node /path/to/dist/index.js [connection-string]
Platform-Specific Notes
Windows Users
# Use this format for the command
"C:\\Program Files\\nodejs\\node.exe" "C:\\path\\to\\dist\\index.js" "postgresql://..."
Linux Users
# Find Node.js path
which node
# Make script executable
chmod +x /path/to/dist/index.js
If you're still experiencing issues, please open an issue with:
- Your operating system
- Node.js version (
node --version) - Full error message
- Steps to reproduce
š¤ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
š License
Related Servers
Memory Custom : PouchDB
Extends the Memory server with PouchDB for robust document-based storage, custom memory file paths, and interaction timestamping.
MCP Trino Server
Integrates with Trino and Iceberg for advanced data exploration, querying, and table maintenance.
MongoDB
Interact with MongoDB databases and MongoDB Atlas.
CData WooCommerce
A read-only MCP server for querying live WooCommerce data using the CData JDBC Driver.
ChromaDB MCP
An MCP server for vector storage and retrieval using ChromaDB.
YantrikDB
Cognitive memory for AI agents - persistent semantic memory with knowledge graph and adaptive recall
CData MySQL MCP Server
A read-only MCP server for MySQL, enabling LLMs to query live data using the CData JDBC Driver.
microCMS MCP Server
Interact with the microCMS headless CMS API, enabling AI assistants to manage content.
Mallory MCP Server
Access real-time cyber and threat intelligence, including details on vulnerabilities, threat actors, and malware.
Engram
Persistent memory layer for AI agents with semantic search, consolidation, and cross-session intelligence via MCP.