Supabase MCP Server
简介: Supabase 官方社区 MCP Server,提供 20+ 专业工具连接 Supabase 项目,支持数据库管理、边缘函数、存储、认证等全方位功能。采用 HTTP 托管服务模式,配置简单,并提供完善的安全控制选项。
功能特性
- 20+ 专业工具 - 覆盖账户、数据库、边缘函数、存储全领域
- HTTP 托管服务 - 无需本地安装,一行配置即可使用
- OAuth 认证 - 安全的 Supabase 账户身份验证机制
- 只读模式 - 可配置为只读,保护生产数据安全
- 项目作用域 - 支持限定特定项目访问范围
- 数据库分支 - 安全的开发测试环境,避免影响生产
- TypeScript 类型生成 - 自动从 schema 生成类型定义
- 多 IDE 支持 - Cursor、Claude Desktop、Windsurf、VS Code
- 完善的日志诊断 - 查看多种服务日志和性能建议
- 成本确认机制 - 操作前显示成本估算,避免意外费用
支持的工具
Supabase MCP Server 提供超过 20 个专业工具,涵盖账户管理、数据库操作、边缘函数、存储管理等全方位功能。
Account Management (账户管理)
完整的 Supabase 账户和项目管理能力:
list_projects- 列出所有 Supabase 项目get_project- 获取项目详细信息create_project- 创建新项目(包含区域、密码等配置)pause_project- 暂停项目运行restore_project- 恢复已暂停的项目list_organizations- 列出所有组织get_organization- 获取组织详情get_cost- 获取项目或分支的成本估算confirm_cost- 确认成本后执行操作
Database Operations (数据库操作)
强大的 PostgreSQL 数据库管理工具:
execute_sql- 执行 SQL 查询(支持只读模式限制)list_tables- 列出指定 schema 的所有表list_extensions- 列出数据库扩展list_migrations- 列出所有迁移记录apply_migration- 应用数据库迁移(自动版本管理)
Edge Functions (边缘函数)
Deno-based serverless 函数部署和管理:
deploy_edge_function- 部署 Edge Functionlist_edge_functions- 列出所有函数get_edge_function- 获取函数详情和代码
Storage Management (存储管理)
Supabase Storage 存储桶和文件管理:
list_storage_buckets- 列出所有存储桶get_storage_config- 获取存储配置update_storage_config- 更新存储配置(如文件大小限制)
Debugging & Development (调试与开发)
强大的调试和开发辅助工具:
get_logs- 获取项目日志(支持 postgres、edge-functions 等服务)get_advisors- 获取安全和性能建议get_project_url- 获取项目 URLget_anon_key- 获取匿名访问密钥generate_typescript_types- 从数据库 schema 生成 TypeScript 类型
Branching (数据库分支 - 实验性)
安全的数据库分支管理功能:
create_branch- 创建数据库分支merge_branch- 合并分支到主库reset_branch- 重置分支状态rebase_branch- 变基分支
Knowledge Base (知识库)
search_docs- 搜索 Supabase 官方文档
安装配置
基础配置
Supabase MCP Server 采用 HTTP 托管模式,无需本地安装。在 Claude Desktop 配置文件中添加:
1 | { |
Cursor IDE 配置
1 | { |
只读模式配置(推荐)
通过 URL 参数启用只读模式,防止意外的写入操作:
1 | { |
项目作用域配置
限定 MCP Server 只能访问特定项目:
1 | { |
高级配置
结合多个参数实现精细控制:
1 | { |
可用参数说明:
read_only=true- 启用只读模式project_ref=<ref>- 限定项目访问features=<list>- 启用特定功能组(逗号分隔)- 可选值:
account,database,storage,edge-functions,branching,debugging,development,knowledge-base
- 可选值:
使用示例
1. 数据库查询
使用自然语言请求 AI 执行 SQL 查询:
1 | 请查询 users 表中最近 7 天注册的用户数量 |
AI 会调用 execute_sql 工具执行类似查询:
1 | SELECT COUNT(*) FROM users |
2. 创建数据库表
1 | 帮我创建一个博客文章表,包含标题、内容、作者ID和创建时间 |
AI 会生成并执行迁移:
1 | CREATE TABLE posts ( |
3. 部署 Edge Function
1 | 创建一个 hello-world 边缘函数 |
AI 会调用 deploy_edge_function 部署:
1 | Deno.serve((req) => { |
4. 生成 TypeScript 类型
1 | 为 public schema 生成 TypeScript 类型定义 |
AI 会调用 generate_typescript_types 生成完整类型:
1 | export interface Database { |
5. 数据库分支工作流
创建安全的开发分支进行测试:
1 | 创建一个名为 feature-new-schema 的数据库分支 |
测试完成后合并:
1 | 将 feature-new-schema 分支合并到主库 |
6. 查看日志和诊断
1 | 查看最近 5 分钟的 postgres 日志 |
1 | 获取当前项目的性能和安全建议 |
适用场景
1. AI 辅助数据库设计
利用 AI 智能设计表结构、关系和索引:
- 自然语言描述需求,AI 生成最优 schema
- 自动创建外键关系和索引
- 生成数据库迁移脚本
2. 数据查询优化
通过自然语言生成优化的 SQL 查询:
- 复杂的 JOIN 查询
- 聚合统计分析
- 数据洞察和报表
3. 边缘函数开发
快速编写和部署 Deno Edge Functions:
- AI 生成函数代码
- 自动部署到 Supabase 边缘网络
- 实现 serverless API
4. 类型安全开发
自动从数据库 schema 生成 TypeScript 类型:
- 保证前端和后端类型一致
- 减少类型错误
- 提升开发效率
5. 数据库分支测试
创建安全的开发分支,测试变更:
- 隔离的测试环境
- 验证迁移脚本
- 安全合并到生产环境
6. 项目快速原型
AI 加速 Supabase 项目搭建:
- 快速创建和配置新项目
- 自动设置数据库 schema
- 部署必要的边缘函数
7. 存储管理
管理 Supabase Storage:
- 创建和配置存储桶
- 设置访问控制策略
- 管理文件大小限制
8. 调试诊断
快速定位和解决问题:
- 查看实时日志
- 获取性能优化建议
- 安全漏洞检测
安全最佳实践
1. 使用开发项目
强烈建议:仅在开发/测试项目中使用 MCP Server,不要连接生产环境。
原因:
- LLM 可能误解指令执行危险操作
- 提示注入攻击风险
- 数据泄露风险
2. 启用只读模式
对于数据查询场景,始终启用只读模式:
1 | { |
3. 限定项目作用域
避免暴露所有项目,限定到特定项目:
1 | { |
4. 使用数据库分支
进行 schema 变更时使用分支功能:
- 创建开发分支
- 在分支中测试变更
- 验证无误后合并
5. 限制功能组
只启用必需的功能组:
1 | { |
6. 不要分享给客户
MCP Server 是开发工具,不应:
- 暴露给最终用户
- 用于客户支持场景
- 嵌入到客户端应用
7. 手动审批危险操作
在支持的 IDE 中启用工具调用手动审批:
- 审查所有 SQL 执行
- 确认删除和修改操作
- 验证成本产生操作
技术架构
HTTP 托管服务
Supabase MCP Server 采用 HTTP 传输协议:
- 服务端点:
https://mcp.supabase.com/mcp - 本地开发:
http://localhost:54321/mcp - 传输协议: Streamable HTTP
- 认证方式: OAuth
OAuth 认证流程
- 客户端发起请求到 MCP Server
- Server 返回 OAuth 授权 URL
- 浏览器打开授权页面
- 用户登录 Supabase 账户
- 授权成功,返回访问令牌
- 客户端使用令牌访问 API
工具调用流程
1 | AI Assistant → MCP Client → HTTP Request → Supabase MCP Server |
成本确认机制
对于会产生费用的操作(如创建项目、创建分支),MCP Server 实现两步确认:
- 调用
get_cost获取成本估算 - 显示成本给用户
- 用户确认后调用
confirm_cost - 执行实际操作
与其他 MCP Server 对比
vs. 原生 Supabase CLI
| 特性 | Supabase MCP Server | Supabase CLI |
|---|---|---|
| AI 集成 | ✅ 原生支持 | ❌ 需要手动包装 |
| 自然语言 | ✅ 支持 | ❌ 命令行参数 |
| 配置复杂度 | 低(HTTP 托管) | 中(需要安装) |
| 功能覆盖 | 核心功能 | 完整功能 |
| 安全控制 | 细粒度 | 依赖权限 |
vs. PostgreSQL MCP Server
| 特性 | Supabase MCP Server | PostgreSQL MCP Server |
|---|---|---|
| 功能范围 | Supabase 全栈 | 仅数据库 |
| Edge Functions | ✅ 支持 | ❌ 不支持 |
| Storage | ✅ 支持 | ❌ 不支持 |
| 分支功能 | ✅ 支持 | ❌ 不支持 |
| 文档搜索 | ✅ 内置 | ❌ 需要外部 |
vs. MongoDB MCP Server
| 特性 | Supabase MCP Server | MongoDB MCP Server |
|---|---|---|
| 数据库类型 | PostgreSQL(关系型) | MongoDB(文档型) |
| SQL 支持 | ✅ 原生 | ❌ 不支持 |
| Edge Functions | ✅ Deno-based | ❌ 不支持 |
| 类型生成 | ✅ TypeScript | 部分支持 |
| 托管服务 | HTTP | stdio |
常见问题
Q: 可以在生产环境使用吗?
A: 不建议。MCP Server 设计用于开发和测试环境。在生产环境中使用存在以下风险:
- LLM 可能误解指令
- 提示注入攻击
- 意外的数据修改或删除
Q: 只读模式有什么限制?
A: 启用只读模式后,以下操作将被禁止:
- SQL 写入操作(INSERT、UPDATE、DELETE)
- 创建/修改表和索引
- 应用迁移
- 部署 Edge Functions
- 修改存储配置
Q: 如何获取项目引用 ID (project_ref)?
A: 项目引用 ID 可以从项目 URL 中获取:
1 | https://app.supabase.com/project/abcdefghijklm |
Q: 数据库分支功能稳定吗?
A: 数据库分支目前是实验性功能,建议:
- 仅在开发环境使用
- 合并前充分测试
- 保留主库备份
Q: 支持自托管 Supabase 吗?
A: 官方 MCP Server 目前仅支持 Supabase Cloud。对于自托管实例,可以使用:
Q: 如何限制工具使用范围?
A: 通过 features 参数限制功能组:
1 | { |
Q: 成本确认机制如何工作?
A: 对于会产生费用的操作,MCP Server 会:
- 先调用
get_cost显示预估成本 - 等待用户确认
- 用户同意后调用
confirm_cost - 执行实际操作
Q: 支持哪些 AI 客户端?
A: 支持所有兼容 MCP 协议的客户端:
- Cursor
- Claude Desktop
- Windsurf
- VS Code (需要 MCP 扩展)
- Cline
- 其他 MCP 兼容客户端
相关资源
- GitHub: https://github.com/supabase-community/supabase-mcp
- 官方文档: https://supabase.com/docs/guides/getting-started/mcp
- 官方博客: https://supabase.com/blog/mcp-server
- Stars: 1200+
- 语言: TypeScript
- 许可证: Apache-2.0
- 维护: Supabase Community
更新日志
最新版本
- 支持 20+ 专业工具
- HTTP 托管服务模式
- OAuth 认证集成
- 只读模式和项目作用域
- 数据库分支功能(实验性)
- TypeScript 类型生成
- 成本确认机制
- 完善的日志和诊断工具