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
协议整合
工作原理
- MCP 服务器提供数据库操作工具 (读取、创建、更新、删除)。
- AI 助手通过 stdio 运输连接到 MCP 服务器。
- AI 助手可以调用工具执行数据库操作。
- 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。
贡献者
- [你的名字] - 初始开发
微信扫一扫