Documentation Index
Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt
Use this file to discover all available pages before exploring further.
Version: 1.0.0
Date: 2026-01-15
Overview
This guide documents how to configure Supabase MCP (Model Context Protocol) to access multiple Supabase projects (e.g., staging and production) from within Cursor IDE.
Project Configuration
Current Projects
| Project | Project Reference | URL | Environment |
|---|
| Production | zkgxozahyczcnzpwhbbf | https://zkgxozahyczcnzpwhbbf.supabase.co | Production |
| Staging | rzfzikcargkoyhgqllap | https://rzfzikcargkoyhgqllap.supabase.co | Staging |
Configuration Options
Option 1: Multiple MCP Server Instances (Recommended)
Configure separate MCP server entries in your Cursor settings (~/.cursor/mcp_settings.json or VS Code settings.json):
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server-supabase@latest", "--project-ref", "rzfzikcargkoyhgqllap"],
"env": {
"SUPABASE_ACCESS_TOKEN": "${env:SUPABASE_ACCESS_TOKEN}"
}
},
"supabase_prod": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server-supabase@latest", "--project-ref", "zkgxozahyczcnzpwhbbf"],
"env": {
"SUPABASE_ACCESS_TOKEN": "${env:SUPABASE_ACCESS_TOKEN}"
}
}
}
}
Usage:
- Use
mcp_supabase_* tools for staging operations
- Use
mcp_supabase_prod_* tools for production operations
Option 2: Environment-Based Switching
Configure a single MCP server and switch projects using environment variables:
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server-supabase@latest", "--project-ref", "${env:SUPABASE_PROJECT_REF}"],
"env": {
"SUPABASE_ACCESS_TOKEN": "${env:SUPABASE_ACCESS_TOKEN}"
}
}
}
}
Usage:
# For staging
export SUPABASE_PROJECT_REF=rzfzikcargkoyhgqllap
# Restart Cursor
# For production
export SUPABASE_PROJECT_REF=zkgxozahyczcnzpwhbbf
# Restart Cursor
Option 3: OAuth Client Per Environment (Enterprise)
For enhanced security in production environments, register separate OAuth clients for each environment:
-
Create OAuth Clients in Supabase Dashboard:
- Go to Settings → API → OAuth Clients
- Create
mcp-staging client for staging project
- Create
mcp-production client for production project
-
Configure MCP with OAuth:
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": [
"-y", "@supabase/mcp-server-supabase@latest",
"--project-ref", "rzfzikcargkoyhgqllap",
"--oauth-client-id", "${env:MCP_STAGING_CLIENT_ID}",
"--oauth-client-secret", "${env:MCP_STAGING_CLIENT_SECRET}"
]
}
}
}
Security Considerations
Access Token Management
- Personal Access Token: Generated from Supabase Dashboard → Account → Access Tokens
- Store in environment variable:
SUPABASE_ACCESS_TOKEN
- Never commit access tokens to version control
- Rotate tokens regularly
Environment Isolation
| Environment | Recommended Access |
|---|
| Staging | Full MCP access (read/write) |
| Production | Read-only MCP access OR separate OAuth client |
Best Practices
- Use staging by default for AI-assisted operations
- Require explicit confirmation before production operations
- Log all MCP operations for audit purposes
- Rotate access tokens after team member departures
Staging Project (mcp_supabase_*)
| Tool | Purpose |
|---|
mcp_supabase_execute_sql | Execute SQL queries |
mcp_supabase_apply_migration | Apply database migrations |
mcp_supabase_list_tables | List database tables |
mcp_supabase_list_migrations | List applied migrations |
mcp_supabase_search_docs | Search Supabase documentation |
mcp_supabase_get_project_url | Get project URL |
mcp_supabase_generate_typescript_types | Generate TypeScript types |
mcp_supabase_list_edge_functions | List Edge Functions |
mcp_supabase_get_logs | Get service logs |
Production Project (mcp_supabase_prod_*)
Same tools as staging, prefixed with _prod:
mcp_supabase_prod_execute_sql
mcp_supabase_prod_list_tables
- etc.
Verification
Check Current Connection
-- Run via MCP to verify project
SELECT current_database(), current_user;
Verify Project Isolation
-- Check for seed data (should only exist in staging)
SELECT COUNT(*) FROM pf_organizations WHERE id::text LIKE '00000000-%';
-- Expected: 2 (staging), 0 (production)
Troubleshooting
MCP Connection Issues
- Verify access token is set correctly
- Check project reference matches intended environment
- Restart Cursor after configuration changes
- Check logs in Cursor Developer Tools
Wrong Project Connected
If operations are being applied to the wrong project:
- Stop immediately and assess damage
- Check
mcp_settings.json configuration
- Verify environment variables
- Revert any unintended changes
Change Log
| Version | Date | Changes |
|---|
| 1.0.0 | 2026-01-15 | Initial version with multi-project setup options |