MCP Supabase Server
by cloud9-labs
README.md
# MCP Supabase Server
Model Context Protocol (MCP) server for Supabase database and storage operations.
## Features
- Database Operations: Query, insert, update, delete rows
- Schema Introspection: List tables, get column definitions
- Storage Operations: Upload, list, delete files and buckets
- RPC Support: Call stored functions
- Raw SQL: Execute custom SQL queries (requires setup)
## Installation
```bash
npm install @cloud9-labs/mcp-supabase
```
## Configuration
Set the following environment variables:
```bash
export SUPABASE_URL="https://your-project.supabase.co"
export SUPABASE_SERVICE_KEY="your-service-role-key"
```
### Claude Desktop Configuration
Add to your claude_desktop_config.json:
```json
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": ["-y", "@cloud9-labs/mcp-supabase"],
"env": {
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_SERVICE_KEY": "your-service-role-key"
}
}
}
}
```
## Available Tools
### Database Operations
- `supabase_query`: Execute SELECT with filters, ordering, pagination
- `supabase_insert`: Insert rows into a table
- `supabase_update`: Update rows matching filter conditions
- `supabase_delete`: Delete rows matching filter conditions
- `supabase_rpc`: Call stored functions/RPC endpoints
### Schema Introspection
- `supabase_list_tables`: List all tables in public schema
- `supabase_get_table_schema`: Get column definitions for a table
### Storage Operations
- `supabase_upload_file`: Upload a file to storage bucket
- `supabase_list_files`: List files in a bucket
- `supabase_delete_file`: Delete a file from storage
- `supabase_list_buckets`: List all storage buckets
### Advanced Operations
- `supabase_execute_sql`: Execute raw SQL (requires RPC function setup)
## Usage Examples
### Query a table
```json
{
"table": "users",
"select": "id,name,email",
"filter": { "status": "active" },
"order": "created_at.desc",
"limit": 10
}
```
### Insert data
```json
{
"table": "posts",
"data": {
"title": "Hello World",
"content": "My first post",
"author_id": 123
}
}
```
### Upload a file
```json
{
"bucket": "avatars",
"path": "user123/profile.jpg",
"data": "<base64-encoded-data>",
"contentType": "image/jpeg"
}
```
## Raw SQL Setup
To use `supabase_execute_sql`, create this function in your Supabase SQL Editor:
```sql
CREATE OR REPLACE FUNCTION execute_sql(query text)
RETURNS json AS $$
DECLARE
result json;
BEGIN
EXECUTE query INTO result;
RETURN result;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
```
## Development
```bash
# Install dependencies
npm install
# Build
npm run build
# Run locally
node dist/index.js
```
## License
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues