返回 MCP 目录
public公开dns本地运行

supabase-mcp-server-kd5

Supabase MCP服务器是一个基于模型上下文协议(MCP)的工具,为AI助手提供与Supabase数据库交互的标准接口,支持增删改查等数据库操作。

article

README

🚀 Supabase MCP 服务器

Supabase MCP 服务器是一个提供与 Supabase 数据库交互工具的模型上下文协议 (MCP) 服务器。它通过标准化接口,让 AI 助手能够轻松执行数据库操作,为开发者提供了便捷的数据库交互方式。

⚠️ 重要提示

这个 Supabase MCP 服务器是作者在 我的频道 的视频中演示其 AI IDE 编码工作流程的示例。它仍是一个正在进行中的项目,未来会继续扩展完善。

🚀 快速开始

Supabase MCP 服务器旨在为 AI 助手提供与 Supabase 数据库交互的能力。下面将为你介绍使用该服务器的基本步骤。

✨ 主要特性

  • 读取表行:可以带有可选筛选、分页和列选择从 Supabase 表查询数据。
  • 创建表记录:能够向 Supabase 表插入新记录。
  • 更新表记录:可根据筛选条件修改现有记录。
  • 删除表记录:能根据筛选条件删除记录。

📦 安装指南

先决条件

  • Docker 或 Docker Desktop
  • Supabase 账户和项目

克隆仓库

git clone https://github.com/coleam00/supabase-mcp.git
cd supabase-mcp

💻 使用示例

Docker 设置

构建 Docker 镜像

FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "server.py"]

运行 Docker 容器

docker build -t mcp/supabase .
docker run -e SUPABASE_URL=your-supabase-url -e SUPABASE_SERVICE_KEY=your-service-role-key -it mcp/supabase

可用工具

读取表行

def read_table_records(table_name: str, 
                      column_names: List[str] = ["*"], 
                      filter_conditions: Optional[List[Tuple[str, str, str]]] = None,
                      page: int = 1,
                      per_page: int = 10) -> Dict:
    """
    从指定表中读取记录。
    
    参数:
        table_name (str): 表名
        column_names (List[str]): 要返回的列名称,默认为 ["*"],表示所有列
        filter_conditions (Optional[List[Tuple[str, str, str]]]): 筛选条件列表,每个元组包含 (column, operator, value)
        page (int): 当前页码,默认为 1
        per_page (int): 每页显示的记录数,默认为 10
    
    返回:
        Dict: 包含查询结果、总记录数和分页信息的字典
    """

创建表记录

def create_table_record(table_name: str, 
                      record_data: Dict[str, Any]) -> bool:
    """
    向指定表中插入新记录。
    
    参数:
        table_name (str): 表名
        record_data (Dict[str, Any]): 新记录的数据字典
        
    返回:
        bool: 操作是否成功
    """

更新表记录

def update_table_record(table_name: str,
                      filter_conditions: List[Tuple[str, str, str]],
                      update_data: Dict[str, Any]) -> int:
    """
    根据筛选条件更新指定表中的记录。
    
    参数:
        table_name (str): 表名
        filter_conditions (List[Tuple[str, str, str]]): 筛选条件列表,每个元组包含 (column, operator, value)
        update_data (Dict[str, Any]): 要更新的数据字典
        
    返回:
        int: 更新的记录数
    """

删除表记录

def delete_table_records(table_name: str,
                      filter_conditions: List[Tuple[str, str, str]]) -> int:
    """
    根据筛选条件删除指定表中的记录。
    
    参数:
        table_name (str): 表名
        filter_conditions (List[Tuple[str, str, str]]): 筛选条件列表,每个元组包含 (column, operator, value)
        
    返回:
        int: 删除的记录数
    """

📚 详细文档

开发信息

项目结构

supabase-mcp/
├── server.py              # MCP 服务器入口
├── requirements.txt      # 依赖管理
└── docker/Dockerfile     # Docker 镜像配置

测试方法

运行测试用例

pytest tests/

覆盖率报告

coverage run -m pytest tests/ && coverage report

协议整合

工作原理

  1. MCP 服务器提供数据库操作工具 (读取、创建、更新、删除)。
  2. AI 助手通过 stdio 运输连接到 MCP 服务器。
  3. AI 助手可以调用工具执行数据库操作。
  4. MCP 服务器处理与 Supabase 的通信并返回结果。

配置示例

{
  "mcpServers": {
    "supabase": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "-e", "SUPABASE_URL", "-e", "SUPABASE_SERVICE_KEY", "mcp/supabase"],
      "env": {
        "SUPABASE_URL": "YOUR-SUPABASE-URL",
        "SUPABASE_SERVICE_KEY": "YOUR-SERVICE-ROLE-KEY"
      }
    }
  }
}

环境变量

| 属性 | 详情 | |------|------| | 变量名 | 描述 | | SUPABASE_URL | Supabase 实例的 URL | | SUPABASE_KEY | Service Role 的 API Key |

📄 许可证

本项目采用 MIT License

贡献者

  • [你的名字] - 初始开发
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端