Supabase数据库操作工具

一个基于Model Context Protocol(MCP)的服务器,用于与Supabase数据库进行交互,提供增删改查等数据库操作功能,适用于大型语言模型(LLMs)的集成。

  • by gevans3000
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 gevans3000/supabase-mcp

使用说明

Supabase MCP服务器

用于与Supabase数据库交互的模型上下文协议(MCP)服务器。此服务器实现 模型上下文协议 使用 FastMCP Python SDK 为大型语言模型(LLM)提供数据库操作工具。

特性

  • 通过过滤、分页和排序从Supabase表中读取记录
  • 在Supabase表中创建新记录(单个或批量)
  • 根据筛选条件更新现有记录
  • 根据筛选条件从表中删除记录
  • 使用MCP的Stdio传输进行通信

先决条件

  • Python 3.8或更高版本
  • 已设置表的Supabase项目
  • 基于服务角色密钥进行身份验证

安装

  1. 克隆此存储库:

    git clone https://github.com/gevans3000/supabase-mcp.git
    cd supabase-mcp
    
  2. 设置虚拟环境(推荐):

    # Create a virtual environment
    python -m venv venv
    
    # Activate the virtual environment
    # On Windows:
    venv\Scripts\activate
    # On macOS/Linux:
    source venv/bin/activate
    
  3. 安装依赖项:

    pip install -r requirements.txt
    
  4. 设置环境变量:

    • 复制 .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配置中:

  1. 找到您的 mcp_config.json 文件:

    • 窗户: C:\Users\<username>\.codeium\windsurf\mcp_config.json
    • macOS: ~/.codeium/windsurf/mcp_config.json
    • Linux: ~/.codeium/windsurf/mcp_config.json
  2. 将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"
      ]
    }
  }
}
  1. 重新启动Windsurf/Cursor应用程序以应用更改。

  2. 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:示例环境变量文件

添加新工具

要向服务器添加新工具,请执行以下操作:

  1. 在中为工具的请求参数定义Pydantic模型 server.py
  2. 将处理程序方法添加到 SupabaseMCPServer 类
  3. 在中注册该工具 _register_tools 具有描述性名称和文档的方法

许可证

MIT许可证

贡献

欢迎投稿!请随时提交拉取请求。