One-Click Docker deployment of Supabase MCP Server with native HTTP Stream Transport support for n8n, AI Agents, and modern automation workflows.
For production deployment on Coolify, follow these detailed steps:
- Navigate to your Coolify dashboard
- Go to Projects β Select your project (e.g., "My first project")
- Click "Add Resource" β "Docker Compose"
- Choose "From GIT Repository" or "Raw Docker Compose"
Option A: From GIT Repository
- Repository:
https://github.com/BIFROTEK-com/supabase-mcp-http-stream-n8n.git
- Branch:
main
- Docker Compose Location:
docker/docker-compose.coolify.yaml
Option B: Raw Docker Compose
Copy the content from docker/docker-compose.coolify.yaml
Configure these required environment variables in Coolify:
# π Required: Supabase Configuration
SUPABASE_ACCESS_TOKEN=sbp_your_access_token_here
SUPABASE_PROJECT_REF=your_project_ref_here
# π Security: API Keys (highly recommended)
MCP_API_KEYS=your-secure-api-key-here
# π Domain Configuration
DOMAIN=your.domain.com
# βοΈ Optional: Feature Configuration
MCP_FEATURES=database,docs,development,functions
MCP_READ_ONLY=false
MCP_PORT=3333
NODE_ENV=production
# π‘οΈ Optional: Security Settings
MCP_RATE_LIMIT_REQUESTS=100
MCP_RATE_LIMIT_GENERAL=60
MCP_ALLOWED_ORIGINS=*
NODE_LOG_LEVEL=warn
- Resource Name:
supabase-mcp
(or your preferred name) - Domain Configuration:
https://your.domain.com:3333
- β
Format:
https://your-domain.com:3333
- β
Port: Must be
3333
(the container port) - β
Protocol: Use
https
for SSL termination via Traefik
- β
Format:
- Save Configuration
- Click "Deploy"
- Monitor Logs for successful startup:
β MCP HTTP Server running on port 3333 π Streamable HTTP: POST /mcp π SSE: GET/POST /sse β€οΈ Health: GET /health π Landing: GET / π Ready for connections!
Test your deployed instance using the API Examples below.
- Clone the repository:
git clone https://github.com/BIFROTEK-com/supabase-mcp-http-stream-n8n.git
cd supabase-mcp-http-stream-n8n
- Create
.env
file:
cp env.example .env
# Edit .env with your Supabase credentials
- Start the server:
cd docker && docker-compose up -d
- Test the connection: See API Examples below
The modern MCP transport using HTTP streaming for real-time communication:
Endpoint | Method | Description |
---|---|---|
POST /mcp |
POST | Main MCP API - HTTP Stream Transport |
GET /health |
GET | Health Check - Server status |
GET / |
GET | API Dashboard - Landing page (requires API key) |
DELETE /mcp |
DELETE | Session Termination - Terminate MCP session |
Example Usage:
curl -X POST https://your-domain.com:3333/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-API-Key: your-api-key" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
Server-Sent Events transport for legacy n8n MCP Client Tool Node compatibility:
Endpoint | Method | Description |
---|---|---|
GET /sse |
GET | SSE Connection - Establish Server-Sent Events stream |
POST /messages |
POST | SSE Messages - Send JSON-RPC messages via SSE |
SSE Features:
- β Auto Session Management - Secure crypto-based session IDs
- β Keep-Alive Pings - 15-second intervals for connection stability
- β n8n Compatibility - Works with n8n MCP Client Tool Node
- β Automatic Cleanup - Sessions auto-terminate on disconnect
SSE Connection Flow:
- Connect:
GET /sse
establishes SSE stream - Receive: Server sends
endpoint
event with sessionId - Send Messages:
POST /messages?sessionId=<session>
- Keep-Alive: Server pings every 15 seconds
- Disconnect: Automatic cleanup on connection close
Example Usage:
# 1. Establish SSE connection
curl -N -H "Accept: text/event-stream" https://your-domain.com:3333/sse
# Server responds:
# event: endpoint
# data: /messages?sessionId=abc123...
# data: {"type":"ready","status":"connected","session":"abc123..."}
# 2. Send messages via returned sessionId
curl -X POST https://your-domain.com:3333/messages?sessionId=abc123... \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
- β API Key Authentication: Secure access control
- β Rate Limiting: DoS protection (configurable)
- β CORS Protection: Configurable origin restrictions
- β Security Headers: Helmet.js with CSP
- β Input Validation: JSON-RPC 2.0 validation
- β SSL/TLS: HTTPS support via Traefik
Tool | Description |
---|---|
list_tables |
Lists all database tables |
list_extensions |
Lists database extensions |
execute_sql |
Execute raw SQL queries |
apply_migration |
Apply database migrations |
search_docs |
Search Supabase documentation |
list_edge_functions |
List Edge Functions |
deploy_edge_function |
Deploy Edge Functions |
get_project_url |
Get project API URL |
get_anon_key |
Get anonymous API key |
generate_typescript_types |
Generate TypeScript types |
list_migrations |
List database migrations |
Variable | Required | Default | Description |
---|---|---|---|
SUPABASE_ACCESS_TOKEN |
β | - | Supabase Management API token |
SUPABASE_PROJECT_REF |
β | - | Your Supabase project reference |
MCP_API_KEYS |
- | Comma-separated API keys | |
MCP_PORT |
β | 3333 |
HTTP server port |
MCP_FEATURES |
β | database,docs,development,functions |
Enabled features |
MCP_READ_ONLY |
β | false |
Read-only mode |
MCP_RATE_LIMIT_REQUESTS |
β | 100 |
Requests per 15 minutes |
MCP_RATE_LIMIT_GENERAL |
β | 60 |
Requests per minute |
MCP_ALLOWED_ORIGINS |
β | * |
CORS allowed origins |
Enable specific features by setting MCP_FEATURES
:
database
- Database operations (tables, SQL, migrations)docs
- Supabase documentation searchdevelopment
- Development tools and utilitiesfunctions
- Edge Functions managementaccount
- Account management (requires no project scoping)branching
- Database branching operationsstorage
- Storage managementdebug
- Debugging tools
The built-in n8n MCP Client node has known issues with SSE Stream Transport (Deprecated) and may not work reliably with this server. For the best experience, we strongly recommend using the community-developed MCP Client node instead.
Use the community node: @nerding-io/n8n-nodes-mcp
This community node provides:
- β Full HTTP Stream Transport support (recommended)
- β Reliable SSE Transport for legacy compatibility
- β Better error handling and connection stability
- β Active maintenance and community support
- β AI Agent integration as a tool
-
Install the community node in your n8n instance:
# Via n8n UI: Settings β Community Nodes β Install # Package name: @nerding-io/n8n-nodes-mcp # Or via Docker environment: N8N_COMMUNITY_PACKAGES_ENABLED=true
-
Enable community nodes as tools (for AI Agents):
# Required for using MCP Client as AI Agent tool N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
Recommended Setup:
-
Create HTTP Streamable Credentials:
- Base URL:
https://your.domain.com:3333/mcp
- API Key: Your configured API key
- Transport:
HTTP Streamable
- Base URL:
-
Add MCP Client Node:
- Connection Type:
HTTP Streamable
- Operation:
List Tools
/Execute Tool
- Select your credentials
- Connection Type:
-
Example Tool Execution:
{ "tool": "list_tables", "parameters": {} }
Only if HTTP Stream doesn't work:
-
Create SSE Credentials:
- SSE URL:
https://your.domain.com:3333/sse
- Connection Type:
Server-Sent Events (SSE)
- Headers:
X-API-Key: your-api-key
- SSE URL:
-
Configure Node:
- Connection Type:
Server-Sent Events (SSE)
- Select your SSE credentials
- Connection Type:
Note: SSE is deprecated but maintained for compatibility. Always try HTTP Stream first.
The community MCP node works perfectly as an AI Agent tool:
// Example AI Agent prompt
I need you to help me analyze my Supabase database.
First, list all available tables using the list_tables tool.
Then, execute some SQL queries to get insights about the data.
Docker Configuration for AI Agents:
version: '3'
services:
n8n:
image: n8nio/n8n
environment:
- N8N_COMMUNITY_PACKAGES_ENABLED=true
- N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
- MCP_API_KEY=your-supabase-mcp-api-key
# ... rest of configuration
- Database Management: Query and manage Supabase databases
- AI Agents: Provide database access to AI assistants
- Automation: Integrate with n8n workflows
- Documentation: Search Supabase docs programmatically
- Edge Functions: Deploy and manage serverless functions
- Data Analysis: Execute complex SQL queries
- Schema Management: Handle database migrations
- MCP Framework - Model Context Protocol
- Supabase - Open source Firebase alternative
- n8n - Workflow automation platform
- Coolify - Self-hosted Heroku alternative
MIT License - see LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
- GitHub Issues: Report bugs or request features
- Documentation: MCP Framework Docs
- Supabase: Official Documentation
Made with β€οΈ by BIFROTEK