Supabase MCP 服务器
我们即将推出官方的Supabase MCP 服务器。您可以使用此服务器将您喜爱的 AI 工具(例如Cursor或Claude)直接连接到 Supabase。
什么是MCP服务器?
MCP 代表模型上下文协议 (Model Context Protocol )。它规范了大型语言模型 (LLM) 与 Supabase 等平台之间的通信方式。
我们的 MCP 服务器将您的 AI 工具连接到 Supabase,以便它们可以代表您执行启动数据库、管理表、获取配置和查询数据等任务。
工具
MCP 服务器使用工具,这些工具有点像“功能”。Supabase MCP 服务器中有超过 20 种工具可用。
你可以:
- 设计表格并使用迁移来跟踪它们。
- 使用 SQL 查询获取数据并运行报告
- 创建用于开发(实验性)的数据库分支
- 获取项目配置
- 启动新的 Supabase 项目
- 暂停和恢复项目
- 获取日志以调试问题
- 根据数据库架构生成 TypeScript 类型
有关所有功能的完整列表,请参阅项目 README 中的“工具”部分。
设置
您可以使用以下 JSON 在大多数 AI 客户端上设置Supabase MCP:
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": [
"-y",
"@supabase/mcp-server-supabase@latest",
"--access-token",
"<personal-access-token>"
]
}
}
}
您需要为该字段创建一个个人访问令牌 (PAT)<personal-access-token>。此令牌用于使用您的 Supabase 帐户对 MCP 服务器进行身份验证。
部分客户端需要略微修改的 JSON 格式,Windows 用户需要在该命令前加上前缀
cmd /c。有关各客户端和操作系统的详细分步说明,请参阅我们的MCP 文档。
MCP是如何运作的?
如果您是 MCP 的新手,那么值得深入了解该协议,以了解它的由来和提供的功能。
如今大多数大型语言模型 (LLM) 都支持“工具调用”,即模型可以get_weather根据对话上下文(例如“休斯顿天气如何?”)选择调用开发者提供的工具(例如)。这为类智能体体验打开了大门,LLM 可以代表用户调用与外部世界交互的工具。
作为开发者,你需要通过提供一个包含你的工具及其接受的参数的 JSON 模式来告诉 LLM 哪些工具可用:
{
"name": "get_weather",
"description": "Get the current weather for a specific location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state/country, e.g. 'San Francisco, CA' or 'Paris, France'"
}
},
"required": ["location"]
}
}
这种 JSON 模式格式在大多数 LLM 中都是标准的。但重要的是,每个工具的具体实现方式并不相同。作为开发者,你需要负责将get_weather工具调用与某个天气 API 连接起来,以满足请求需求。
因此,开发者经常需要在不同的项目和应用中重复实现相同的工具。而且,在任何一个应用中,最终用户也只能使用开发者精心挑选的工具。用户无法构建类似插件的工具生态系统,也就无法引入自己的工具。
MCP标准
MCP 通过标准化工具生态系统来解决这个问题。也就是说,它创建了一种客户端(例如 Cursor)和工具提供商(例如 Supabase)都能理解的协议,同时将二者解耦。Cursor 只需实现 MCP 规范的客户端部分,其 LLM 即可立即与任何也实现了 MCP 的服务器协同工作。Cursor(以及任何其他 AI 应用)允许用户自带工具,只要这些工具实现了 MCP 即可。
资源和提示
除了工具调用之外,MCP 还包含一些其他(可选)原语:资源和提示。资源允许服务器公开任何客户端可以读取并用作 LLM 上下文的任意数据和内容。这可能包括:
- 文件内容
- 数据库记录
- API响应
- 实时系统数据
- 屏幕截图和图片
- 日志文件
- 还有更多
提示功能允许服务器定义可重用的提示模板,客户端可以将其展示给用户和 LLM。这使得服务器有机会为 LLM 定义自定义指令和最佳实践,以便在 LLM 与其服务交互时使用。
目前,大多数客户端仅支持工具的基本功能。我们非常期待看到应用程序如何利用资源和提示,以便我们能够在这些环境中进一步提升 Supabase MCP 的使用体验。
有关模型上下文协议的更多信息,请参阅官方 MCP 文档。
接下来是什么?
我们相信MCP在AI构建领域拥有巨大的潜力,我们将继续加大投入。以下是我们路线图上的一些功能:
创建和部署边缘功能
Supabase Edge Functions 允许您从距离用户最近的边缘网络运行自定义的服务器端代码。我们刚刚宣布了可以直接从 Supabase 控制面板创建和部署 Edge Functions 的功能。因此,直接从您常用的 AI 助手创建和部署 Edge Functions 也顺理成章。
本地授权
最新版的 MCP 规范(截至撰写本文时为 2025 年 3 月 26 日)现已包含官方授权支持。这意味着,与目前需要您手动为服务器创建个人访问令牌不同,未来的版本将允许您使用标准的 OAuth 2 登录流程对 Supabase 进行身份验证。该流程大致如下:
- 将 Supabase MCP 与您的 AI 应用/IDE 连接
- 您的AI应用会打开一个浏览器窗口,您可以在其中直接登录Supabase。
- 登录成功后,您将返回到您的AI应用程序,身份验证已完全完成。
这与我们目前在应用程序中看到的任何其他“使用 X 登录”的 OAuth 流程并无不同。我们认为这将简化 MCP 设置流程,并提供对您的 Supabase 帐户更精细、更细致的访问权限。
更好的模式发现
在使用人工智能设计数据库时,最好让 LLM 访问现有数据库模式,这样它在进行修改时(例如alter table)就能准确地知道要执行哪些 SQL 语句。目前,我们提供了一个list_tablesLLM 可以用来获取表的工具。虽然这很有用,但还有许多其他数据库对象(例如视图、触发器、函数和策略)也应该随时可用。
如今,如果 LLM 需要访问这些其他对象,它可以运行通用execute_sql工具从数据库中获取它们information_schema。例如,要获取数据库中的所有触发器,LLM 可以运行以下命令:
select
event_object_schema as schema,
event_object_table as table,
trigger_name,
event_manipulation as event,
action_statement as definition
from
information_schema.triggers
order by
event_object_schema, event_object_table;
这种方法通常有效,但它要求LLM了解information_schema表的确切结构,由于冗长的SQL查询会消耗大量令牌,并且在解析结果时容易出错。我们认为,更结构化、更简洁的查询方法可以提高数据发现率并减少令牌的过度使用。敬请期待!
更多保护措施
我们当中有些人对人工智能在数据库管理方面的依赖过高。Supabase 支持数据库分支,允许您在设计新功能时创建独立的开发数据库,并在准备就绪后将其合并。这意味着,如果出现严重错误,您可以轻松地将分支重置到早期版本,并从中断的地方继续开发。
我们的 MCP 服务器目前已经支持分支,但我们认为还可以添加更多保护措施,例如自动检测破坏性操作并在执行前要求确认。
开始使用 Supabase MCP
我们构建了 Supabase MCP 服务器,旨在弥合 AI 工具和数据库之间的差距,让您专注于构建,而不是在工具之间进行上下文切换。
MCP 协议正在不断发展,例如新增的Streamable HTTP 传输方案,该方案支持完全无状态的服务器,无需建立长时间连接。我们正在密切关注这些进展,并评估它们将如何提升 Supabase MCP 的使用体验。
如果您遇到问题或有任何关于新增工具的想法,请在 GitHub 代码库中提交 issue。我们尤其希望了解您在使用模式发现、数据库分支和其他安全功能方面的体验,以便我们不断完善其保护机制。
查看我们的文档,了解最新更新和使用 Supabase MCP 可以构建的示例。
发布周 14
主舞台
第一天 - Supabase UI 库;
第二天 - Supabase Edge 函数:从控制面板部署 + Deno 2.1;
第三天 - 实时:从数据库广播;
第四天 - 用于简化数据库管理的声明式模式;
第五天 - Supabase MCP 服务器
构建阶段
- 01 - Postgres 语言服务器
- 02 -Supabase 授权:自带收银员-
- 03 -Postgres中的自动嵌入-
- 04 - 最新动态:Supabase Studio 的新增功能
- 05 - 专职泳池维护人员
- 06 - 数据 API 路由到最近的只读副本