Supabase MCP Server
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Enables CRUD operations on Postgres tables, including querying data with filters, inserting data, updating data, deleting data, and listing tables in a Supabase project.
Supabase MCP Server
A Model Context Protocol (MCP) server that allows Claude and other LLMs to interact with Supabase to perform CRUD operations on Postgres tables.
Features
- Database operations:
- Query data with filters
- Insert data
- Update data
- Delete data
- List tables
Prerequisites
- Node.js (v16 or newer)
- npm or yarn
- Supabase project with API keys
Installation
Option 1: Install from npm (recommended)
The package is published on npm! You can install it globally with:
Or locally in your project:
Option 2: Clone the repository
Configuration
Create a .env
file with your Supabase credentials:
Usage with Claude
Claude requires a specific transport mode for compatibility. This package provides a dedicated binary for Claude integration:
In Claude Desktop MCP Config
Make sure you set the required environment variables in the configuration. Claude will use the stdio transport for communication.
Manual Testing with Claude Binary
For testing outside of Claude, you can run:
Or if installed globally:
Usage as a Standalone Server
After installing globally:
This will start the MCP server at http://localhost:3000 (or the port specified in your .env file).
Usage in Your Code
You can also use supabase-mcp as a library in your own Node.js projects:
Troubleshooting
Common Issues and Solutions
1. "Port XXXX is already in use"
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.
2. "Missing required environment variables"
Make sure you have a proper .env
file with all the required values or that you've set the environment variables in your system.
3. "TypeError: Class constructor Server cannot be invoked without 'new'"
If you see this error, you may be running an older version of the package. Update to the latest version:
4. JSON parsing errors with Claude
Make sure you're using the Claude-specific binary (supabase-mcp-claude
) instead of the regular HTTP server (supabase-mcp
).
5. Request timed out with Claude
This usually means Claude initiated the connection but the server was unable to respond in time. Check:
- Are your Supabase credentials correct?
- Is your server setup properly and running?
- Is there anything blocking the connection?
Tools Reference
Database Tools
- queryDatabase
- Parameters:
table
(string): Name of the table to queryselect
(string, optional): Comma-separated list of columns (default: "*")query
(object, optional): Filter conditions
- Parameters:
- insertData
- Parameters:
table
(string): Name of the tabledata
(object or array of objects): Data to insert
- Parameters:
- updateData
- Parameters:
table
(string): Name of the tabledata
(object): Data to update as key-value pairsquery
(object): Filter conditions for the update
- Parameters:
- deleteData
- Parameters:
table
(string): Name of the tablequery
(object): Filter conditions for deletion
- Parameters:
- listTables
- Parameters: None
Version History
- 1.0.0: Initial release
- 1.0.1: Added automatic port selection
- 1.0.2: Fixed protocol compatibility issues
- 1.0.3: Added JSON-RPC support
- 1.1.0: Complete rewrite using official MCP SDK
- 1.2.0: Added separate Claude transport and fixed port conflict issues
- 1.3.0: Updated for improved compatibility with TypeScript projects
- 1.4.0: Fixed Claude stdio transport integration based on Supabase community best practices
- 1.5.0: Removed Edge Function support to improve stability and focus on database operations
License
MIT
This server cannot be installed
A Model Context Protocol server that enables Claude and other LLMs to perform database operations and invoke Edge Functions within Supabase through natural language.