Supabase MCP服务器
一种模型上下文协议(MCP)服务器,允许Claude和其他LLM与Supabase交互,对Postgres表执行CRUD操作。
特性
- 数据库操作:
- 使用筛选器查询数据 - 插入数据 - 更新数据 - 删除数据 - 列出表格
先决条件
- Node.js(v16或更新版本)
- npm或纱线
- 具有API密钥的Subabase项目
安装
选项1:从npm安装(推荐)
该包已在npm上发布!您可以通过以下方式全局安装:
npm install -g supabase-mcp或者在您的项目中:
npm install supabase-mcp选项2:克隆存储库
git clone https://github.com/Cappahccino/SB-MCP.git
cd SB-MCP
npm install
npm run build配置
创建一个 .env 使用您的Supabase凭据文件:
# 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一起使用
Claude需要特定的传输模式以实现兼容性。此软件包为Claude集成提供了一个专用的二进制文件:
克劳德桌面MCP配置
"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"
}
}确保在配置中设置了所需的环境变量。克劳德将使用stdio传输进行通信。
使用Claude Binary进行手动测试
对于Claude之外的测试,您可以运行:
npm run start:claude或者,如果全局安装:
supabase-mcp-claude作为独立服务器使用
全局安装后:
supabase-mcp这将在以下位置启动MCP服务器http://localhost:3000(或.env文件中指定的端口)。
代码中的用法
您还可以在自己的Node.js项目中使用suabase mcp作为库:
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}`);
});故障排除
常见问题及解决方法
1.“端口XXXX已在使用中”
HTTP服务器尝试自动查找可用端口。您可以在您的 .env 通过更改文件 MCP_SERVER_PORT 价值。
2.“缺少必需的环境变量”
确保你有一个合适的 .env 文件中包含所有必需的值,或者您已经在系统中设置了环境变量。
3.“TypeError:没有'new'就无法调用类构造函数Server”
如果您看到此错误,则可能是您运行的是旧版本的软件包。更新到最新版本:
npm install -g supabase-mcp@latest4.Claude的JSON解析错误
确保您使用的是Claude特定的二进制文件(supabase-mcp-claude)而不是常规的HTTP服务器(supabase-mcp).
5.请求与Claude超时
这通常意味着克劳德发起了连接,但服务器无法及时响应。检查:
- 你的Supabase证书正确吗?
- 您的服务器设置是否正确且正在运行?
- 有什么东西阻塞了连接吗?
工具参考
数据库工具
- query数据库
- 参数: - table (string):要查询的表的名称 - select (字符串,可选):逗号分隔的列列表(默认值:“\*”) - query (对象,可选):过滤条件
- 插入数据
- 参数: - table (string):表的名称 - data (对象或对象数组):要插入的数据
- updateData
- 参数: - table (string):表的名称 - data (object):作为键值对更新的数据 - query (对象):更新的筛选条件
- 删除数据
- 参数: - table (string):表的名称 - query (object):删除的筛选条件
- list表格
- 参数:无
版本历史记录
- 1.0.0:初始版本
- 1.0.1:添加了自动端口选择
- 1.0.2:修复了协议兼容性问题
- 1.0.3:添加了JSON-RPC支持
- 1.1.0:使用官方MCP SDK完成重写
- 1.2.0:增加了单独的克劳德运输和固定端口冲突问题
- 1.3.0:更新以提高与TypeScript项目的兼容性
- 1.4.0:修复了基于Supabase社区最佳实践的Claude stdio传输集成
- 1.5.0:删除边缘功能支持,以提高稳定性并专注于数据库操作
许可证
麻省理工学院
