Supabase MCP 服务器

一个模型上下文协议(MCP)服务器,允许Claude和其他LLM与Supabase交互,对Postgres表执行CRUD操作。

  • by Cappahccino
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 Cappahccino/SB-MCP

使用说明

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@latest

4.Claude的JSON解析错误

确保您使用的是Claude特定的二进制文件(supabase-mcp-claude)而不是常规的HTTP服务器(supabase-mcp).

5.请求与Claude超时

这通常意味着克劳德发起了连接,但服务器无法及时响应。检查:

  • 你的Supabase证书正确吗?
  • 您的服务器设置是否正确且正在运行?
  • 有什么东西阻塞了连接吗?

工具参考

数据库工具

  1. query数据库

    • 参数:
      • table (string):要查询的表的名称
      • select (字符串,可选):逗号分隔的列列表(默认值:“*”)
      • query (对象,可选):过滤条件
  2. 插入数据

    • 参数:
      • table (string):表的名称
      • data (对象或对象数组):要插入的数据
  3. updateData

    • 参数:
      • table (string):表的名称
      • data (object):作为键值对更新的数据
      • query (对象):更新的筛选条件
  4. 删除数据

    • 参数:
      • table (string):表的名称
      • query (object):删除的筛选条件
  5. 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:删除边缘功能支持,以提高稳定性并专注于数据库操作

许可证

麻省理工学院