将Supabase连接到AI助手

将Supabase连接到AI助手

技术背景

Supabase MCP Server 可将 Supabase 项目连接到 Cursor、Claude、Windsurf 等 AI 助手。Model Context Protocol (MCP) 对大语言模型(LLMs)与 Supabase 等外部服务的交互进行了标准化,使 AI 助手能直接与 Supabase 项目连接,并执行管理表、获取配置和查询数据等任务。

实现步骤

前提条件

需在机器上安装 Node.js,可通过运行 node -v 检查。若未安装,可从 nodejs.org 下载。

安装设置

  1. 个人访问令牌(PAT)
    首先,进入 Supabase 设置并创建一个个人访问令牌,为其命名以描述其用途,如 “Cursor MCP Server”。此令牌用于对 MCP 服务器与 Supabase 账户进行身份验证。确保复制该令牌,因为之后将无法再次查看。
  2. 配置 MCP 客户端
    接下来,配置 MCP 客户端(如 Cursor)以使用此服务器。大多数 MCP 客户端以 JSON 格式存储配置,如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": [
"-y",
"@supabase/mcp-server-supabase@latest",
"--access-token",
"<personal-access-token>"
]
}
}
}

<personal-access-token> 替换为步骤 1 中创建的令牌。或者,可省略 --access-token,而是将 SUPABASE_ACCESS_TOKEN 环境变量设置为个人访问令牌(设置后需重启 MCP 客户端),这样若将此配置提交到存储库,可避免令牌出现在版本控制中。

附加选项

  • --project-ref:用于将服务器限定到特定项目。
  • --read-only:用于将服务器限制为只读查询。

Windows 系统注意事项

在 Windows 上,需在命令前添加前缀:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"mcpServers": {
"supabase": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@supabase/mcp-server-supabase@latest",
"--access-token",
"<personal-access-token>"
]
}
}
}

或者,若在 WSL 中运行 Node.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"mcpServers": {
"supabase": {
"command": "wsl",
"args": [
"npx",
"-y",
"@supabase/mcp-server-supabase@latest",
"--access-token",
"<personal-access-token>"
]
}
}
}

确保 Node.js 位于系统的 PATH 环境变量中。若在 Windows 上本地运行 Node.js,可在终端中运行以下命令设置:

1
2
3
4
# 获取 npm 路径
npm config get prefix
# 将目录添加到 PATH
setx PATH "%PATH%;<path-to-dir>"

重启 MCP 客户端。

项目限定模式

默认情况下,MCP 服务器可访问 Supabase 账户中的所有组织和项目。若要将服务器限制到特定项目,可在 CLI 命令中设置 --project-ref 标志:

1
npx -y @supabase/mcp-server-supabase@latest --access-token=<personal-access-token> --project-ref=<project-ref>

<project-ref> 替换为项目的 ID,可在 Supabase 项目设置的 “Project ID” 下找到。将服务器限定到项目后,list_projectslist_organizations 等账户级工具将不再可用,服务器仅能访问指定项目及其资源。

只读模式

若要将 Supabase MCP 服务器限制为只读查询,可在 CLI 命令中设置 --read-only 标志:

1
npx -y @supabase/mcp-server-supabase@latest --access-token=<personal-access-token> --read-only

这可防止通过以只读 Postgres 用户身份执行 SQL 对任何数据库进行写操作。注意,此标志仅适用于数据库工具(execute_sqlapply_migration),不适用于 create_projectcreate_branch 等其他工具。

可用工具

此服务器版本低于 1.0,因此版本之间可能会有重大更改。由于 LLMs 会自动适应可用工具,这通常不会影响大多数用户。LLM 可使用以下 Supabase 工具:

  • 项目管理:若服务器限定到项目,这些工具将不可用。
    • list_projects:列出用户的所有 Supabase 项目。
    • get_project:获取项目的详细信息。
    • create_project:创建新的 Supabase 项目。
    • pause_project:暂停项目。
    • restore_project:恢复项目。
    • list_organizations:列出用户所属的所有组织。
    • get_organization:获取组织的详细信息。
  • 数据库操作
    • list_tables:列出指定架构中的所有表。
    • list_extensions:列出数据库中的所有扩展。
    • list_migrations:列出数据库中的所有迁移。
    • apply_migration:将 SQL 迁移应用到数据库。传递给此工具的 SQL 将在数据库中跟踪,因此 LLMs 应将其用于 DDL 操作(架构更改)。
    • execute_sql:在数据库中执行原始 SQL。LLMs 应将其用于不更改架构的常规查询。
    • get_logs:按服务类型(api、postgres、edge functions、auth、storage、realtime)获取 Supabase 项目的日志。LLMs 可使用此工具进行调试和监控服务性能。
  • 边缘函数管理
    • list_edge_functions:列出 Supabase 项目中的所有边缘函数。
    • deploy_edge_function:将新的边缘函数部署到 Supabase 项目。LLMs 可使用此工具部署新函数或更新现有函数。
  • 项目配置
    • get_project_url:获取项目的 API URL。
    • get_anon_key:获取项目的匿名 API 密钥。
  • 分支管理(实验性,需要付费计划)
    • create_branch:从生产分支创建带有迁移的开发分支。
    • list_branches:列出所有开发分支。
    • delete_branch:删除开发分支。
    • merge_branch:将开发分支的迁移和边缘函数合并到生产分支。
    • reset_branch:将开发分支的迁移重置到先前版本。
    • rebase_branch:将开发分支基于生产分支进行变基以处理迁移漂移。
  • 开发工具
    • generate_typescript_types:根据数据库架构生成 TypeScript 类型。LLMs 可将其保存到文件并在代码中使用。
  • 成本确认
    • get_cost:获取组织的新项目或分支的成本。
    • confirm_cost:确认用户对新项目或分支成本的理解。创建新项目或分支需要此步骤。

其他 MCP 服务器

@supabase/mcp-server-postgrest:PostgREST MCP 服务器允许通过 REST API 将自己的用户连接到应用程序。更多详细信息请参阅其项目 README。

资源

  • Model Context Protocol:了解更多关于 MCP 及其功能的信息。
  • 从开发到生产:了解如何安全地将更改推广到生产环境。

许可证

本项目采用 Apache 2.0 许可证。详情请参阅 LICENSE 文件。