Supabase Database Operations
STDIOHTTP-SSEMCP server allowing Claude and LLMs to perform CRUD operations on Postgres tables.
MCP server allowing Claude and LLMs to perform CRUD operations on Postgres tables.
A Model Context Protocol (MCP) server that allows Claude and other LLMs to interact with Supabase to perform CRUD operations on Postgres tables.
The package is published on npm! You can install it globally with:
npm install -g supabase-mcp
Or locally in your project:
npm install supabase-mcp
git clone https://github.com/Cappahccino/SB-MCP.git cd SB-MCP npm install npm run build
Create a .env
file with your Supabase credentials:
# Supabase credentials
SUPABASE_URL=your_supabase_project_url
SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
# MCP server configuration
MCP_SERVER_PORT=3000
MCP_SERVER_HOST=localhost
MCP_API_KEY=your_secret_api_key
Claude requires a specific transport mode for compatibility. This package provides a dedicated binary for Claude integration:
"supabase": { "command": "npx", "args": [ "-y", "supabase-mcp@latest", "supabase-mcp-claude" ], "env": { "SUPABASE_URL": "your_supabase_project_url", "SUPABASE_ANON_KEY": "your_supabase_anon_key", "SUPABASE_SERVICE_ROLE_KEY": "your_service_role_key", "MCP_API_KEY": "your_secret_api_key" } }
Make sure you set the required environment variables in the configuration. Claude will use the stdio transport for communication.
For testing outside of Claude, you can run:
npm run start:claude
Or if installed globally:
supabase-mcp-claude
After installing globally:
supabase-mcp
This will start the MCP server at http://localhost:3000 (or the port specified in your .env file).
You can also use supabase-mcp as a library in your own Node.js projects:
import { createServer, mcpConfig, validateConfig } from 'supabase-mcp'; // Validate configuration validateConfig(); // Create the server const app = createServer(); // Start the server app.listen(mcpConfig.port, mcpConfig.host, () => { console.log(`Supabase MCP server running at http://${mcpConfig.host}:${mcpConfig.port}`); });
The HTTP server attempts to find an available port automatically. You can manually specify a different port in your .env
file by changing the MCP_SERVER_PORT
value.
Make sure you have a proper .env
file with all the required values or that you've set the environment variables in your system.
If you see this error, you may be running an older version of the package. Update to the latest version:
npm install -g supabase-mcp@latest
Make sure you're using the Claude-specific binary (supabase-mcp-claude
) instead of the regular HTTP server (supabase-mcp
).
This usually means Claude initiated the connection but the server was unable to respond in time. Check:
queryDatabase
table
(string): Name of the table to queryselect
(string, optional): Comma-separated list of columns (default: "*")query
(object, optional): Filter conditionsinsertData
table
(string): Name of the tabledata
(object or array of objects): Data to insertupdateData
table
(string): Name of the tabledata
(object): Data to update as key-value pairsquery
(object): Filter conditions for the updatedeleteData
table
(string): Name of the tablequery
(object): Filter conditions for deletionlistTables
MIT