Back to MCP directory
publicPublicdnsLocal runtime

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

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client