A Model Context Protocol (MCP) server that provides database and storage capabilities for Supabase.
- Execute SQL queries on Supabase databases
- Manage Supabase storage buckets and files
- Secure connection handling with SSL support
- Structured response format with row data, field information, and metadata
- Error handling and connection management
- Node.js and npm/pnpm
- A Supabase project with connection string
Create a .env.local
file in the project root:
SUPABASE_CONNECTION_STRING=your_supabase_connection_string_here
Choose one of the following installation methods:
# Install to all supported applications (Claude Desktop, Cursor, Claude Code)
npm run install-server
# Or install to specific applications
npm run install-desktop # Claude Desktop only
npm run install-cursor # Cursor IDE only
npm run install-code # Claude Code only
The installation script will:
- Build the TypeScript code
- Make the executable file executable
- Update the appropriate MCP configuration files
- Include environment variables from
.env.local
Once installed, you can use the various tools in your MCP-enabled application:
-
Tool name:
execute-sql
- Description: Execute SQL queries on Supabase database
-
Parameters:
-
query
(string): The SQL query to execute
-
SELECT * FROM users LIMIT 10;
INSERT INTO posts (title, content) VALUES ('Hello', 'World');
UPDATE users SET last_login = NOW() WHERE id = 1;
The tool returns a JSON response with:
-
rowCount
: Number of affected/returned rows -
rows
: Array of result rows -
fields
: Array of field metadata (name, dataTypeID) -
command
: SQL command type (SELECT, INSERT, etc.)
The server is configured in your MCP client's configuration file:
-
Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json
-
Cursor:
~/.cursor/mcp.json
-
Claude Code:
~/.claude.json
# Build the project
npm run build
# Start the server directly
npm start
- The server uses SSL connections with
rejectUnauthorized: false
for Supabase compatibility - Environment variables are loaded from
.env.local
and passed securely to the MCP configuration - Connection strings should never be committed to version control