使用说明
Supabase MCP服务器
用于与Supabase数据库交互的模型上下文协议(MCP)服务器。此服务器实现 模型上下文协议 使用 FastMCP Python SDK 为大型语言模型(LLM)提供数据库操作工具。
特性
- 通过过滤、分页和排序从Supabase表中读取记录
- 在Supabase表中创建新记录(单个或批量)
- 根据筛选条件更新现有记录
- 根据筛选条件从表中删除记录
- 使用MCP的Stdio传输进行通信
先决条件
- Python 3.8或更高版本
- 已设置表的Supabase项目
- 基于服务角色密钥进行身份验证
安装
-
克隆此存储库:
git clone https://github.com/gevans3000/supabase-mcp.git cd supabase-mcp -
设置虚拟环境(推荐):
# Create a virtual environment python -m venv venv # Activate the virtual environment # On Windows: venv\Scripts\activate # On macOS/Linux: source venv/bin/activate -
安装依赖项:
pip install -r requirements.txt -
设置环境变量:
- 复制
.env.example文件到.env:cp .env.example .env # On Windows, use: # copy .env.example .env - 在中填写您的Supabase URL和服务角色密钥
.env文件:SUPABASE_URL=your_supabase_project_url SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
- 复制
用法
启动服务器
确保您的虚拟环境已激活,然后运行服务器:
python server.py
服务器使用Stdio传输,因此它将在标准输入上监听MCP请求,并在标准输出上做出响应。
与MCP客户端集成
此服务器实现了模型上下文协议,可以与任何兼容MCP的客户端集成。例如,您可以将其与支持MCP工具的LLM框架一起使用。
添加到Windsurf/Cursor MCP配置
要将此MCP服务器添加到您的Windsurf或Cursor配置中:
-
找到您的
mcp_config.json文件:- 窗户:
C:\Users\<username>\.codeium\windsurf\mcp_config.json - macOS:
~/.codeium/windsurf/mcp_config.json - Linux:
~/.codeium/windsurf/mcp_config.json
- 窗户:
-
将Supabase MCP服务器添加到
mcpServers章节:
{
"mcpServers": {
// ... other servers
"supabase": {
"command": "python",
"args": [
"/path/to/your/supabase-mcp/server.py"
],
"env": {
"SUPABASE_URL": "your_supabase_url",
"SUPABASE_SERVICE_ROLE_KEY": "your_supabase_key"
}
}
}
}
替换 /path/to/your/supabase-mcp/server.py 带有server.py文件的绝对路径。
备注:为了更好地隔离,您可以从虚拟环境中使用Python可执行文件:
{
"mcpServers": {
"supabase": {
"command": "/path/to/your/venv/bin/python", // or "venv\\Scripts\\python.exe" on Windows
"args": [
"/path/to/your/supabase-mcp/server.py"
]
}
}
}
-
重新启动Windsurf/Cursor应用程序以应用更改。
-
Supabase MCP工具现在将可供您的AI助手使用。
工具说明
服务器提供以下工具:
1.读取记录
使用灵活的查询选项从Supabase数据库表中读取记录。
参数:
table(string,必填):要读取的表的名称columns(字符串,可选,默认值:“*”):要选择的列(逗号分隔或*表示全部)filters(object,可选):筛选条件作为键值对limit(整数,可选):要返回的最大记录数offset(整数,可选):分页时要跳过的记录数order_by(对象,可选):按列排序选项:方向对
例子:
{
"table": "users",
"columns": "id,name,email",
"filters": {"is_active": true},
"limit": 10,
"offset": 0,
"order_by": {"created_at": "desc"}
}
2.创建记录
在Supabase数据库表中创建一条或多条记录。
参数:
table(string,必填):要在其中创建记录的表的名称records(对象或数组,必填):要创建的单个记录对象或记录对象数组
示例(单条记录):
{
"table": "users",
"records": {
"name": "John Doe",
"email": "john@example.com",
"role": "user"
}
}
示例(多条记录):
{
"table": "users",
"records": [
{
"name": "John Doe",
"email": "john@example.com",
"role": "user"
},
{
"name": "Jane Smith",
"email": "jane@example.com",
"role": "admin"
}
]
}
3.更新记录
根据筛选条件更新Supabase数据库表中的现有记录。
参数:
table(string,必填):要更新记录的表的名称updates(object,必填):要更新为键值对的字段filters(object,必填):筛选条件以识别要更新的记录
例子:
{
"table": "users",
"updates": {
"is_verified": true,
"last_login_at": "2025-04-04T15:30:00Z"
},
"filters": {
"id": 123
}
}
4.删除记录
根据筛选条件从Supabase数据库表中删除记录。
参数:
table(string,必填):要从中删除记录的表的名称filters(object,必填):筛选条件,以识别要删除的记录
例子:
{
"table": "expired_sessions",
"filters": {
"expires_at": {"lt": "2025-01-01T00:00:00Z"}
}
}
发展
项目结构
server.py:主MCP服务器实现supabase_client.py:Supabase客户端包装器requirements.txt:Python依赖关系.env.example:示例环境变量文件
添加新工具
要向服务器添加新工具,请执行以下操作:
- 在中为工具的请求参数定义Pydantic模型
server.py - 将处理程序方法添加到
SupabaseMCPServer类 - 在中注册该工具
_register_tools具有描述性名称和文档的方法
许可证
贡献
欢迎投稿!请随时提交拉取请求。
