Supabase MCP

官方

用于管理Supabase项目、数据库、认证、存储、边缘函数和SQL工作流的官方Supabase MCP服务器,支持AI代理操作。

你可以用 Supabase MCP 做什么?

  • 管理数据库表 — 让AI使用list_tablescreate_table等工具在您的Supabase项目中列出、创建、更新或删除表。
  • 获取项目配置 — 通过get_project_url及相关配置工具检索项目设置、环境变量和API凭据。
  • 查询与检查数据 — 让AI通过MCP服务器直接运行只读SQL查询或探索您的数据库模式。
  • 集成AI SDK — 使用createToolSchemas()获取Vercel AI SDK的MCP客户端的类型化输入/输出模式。

文档

Supabase MCP 服务器

MCP Registry Version

将您的 Supabase 项目连接到 Cursor、Claude、Windsurf 及其他 AI 助手。

supabase-mcp-demo

模型上下文协议 (MCP) 标准化了大型语言模型 (LLM) 与 Supabase 等外部服务的通信方式。它将 AI 助手直接与您的 Supabase 项目连接,使其能够执行管理数据表、获取配置和查询数据等任务。请参阅完整工具列表

设置

1. 遵循我们的安全最佳实践

在设置 MCP 服务器之前,我们建议您阅读我们的安全最佳实践,以了解将 LLM 连接到 Supabase 项目的风险以及如何降低这些风险。

2. 配置您的 MCP 客户端

要在您的客户端上配置 Supabase MCP 服务器,请访问我们的设置文档。您也可以通过访问 Supabase 仪表板中的 MCP 连接选项卡为您的项目生成自定义 MCP URL。

您的 MCP 客户端将在设置过程中自动提示您登录 Supabase。请务必选择包含您要使用的项目的组织。

大多数 MCP 客户端需要以下信息:

{
  "mcpServers": {
    "supabase": {
      "type": "http",
      "url": "https://mcp.supabase.com/mcp"
    }
  }
}

如果您在我们的文档中没有找到您的 MCP 客户端,请查阅您客户端的 MCP 文档,并将上述 MCP 信息复制到其预期的格式(json、yaml 等)中。

CLI

如果您使用 Supabase CLI 在本地运行 Supabase,可以通过 http://localhost:54321/mcp 访问 MCP 服务器。目前,CLI 环境中的 MCP 服务器提供有限的工具子集,且不支持 OAuth 2.1。

自托管

对于自托管 Supabase,请查看启用 MCP 服务器页面。目前,自托管环境中的 MCP 服务器提供有限的工具子集,且不支持 OAuth 2.1。

配置选项和工具

请参阅 Supabase MCP 服务器文档,获取可用工具配置选项的完整列表。

文档还提供了一个交互式 URL 构建器,可为您填充配置选项。

安全风险

[!TIP] 在使用 MCP 服务器之前,请查看 Supabase 文档中的安全风险和建议的缓解措施。

与 AI SDK 的 MCP 客户端一起使用

@supabase/mcp-server-supabase 包导出 createToolSchemas(),用于为 Vercel AI SDK 的 MCP 客户端填充输入和输出模式。这使得 Supabase MCP 工具可以被视为静态工具,具有客户端验证和推断出的 TypeScript 输入输出类型。

import { createToolSchemas } from '@supabase/mcp-server-supabase';
import { createMCPClient } from '@ai-sdk/mcp';
import { streamText } from 'ai';

const mcpClient = await createMCPClient({
  transport: {
    type: 'http',
    url: 'https://mcp.supabase.com/mcp',
  },
});

const tools = await mcpClient.tools({
  schemas: createToolSchemas(),
});

const result = streamText({ model, tools, prompt: '...' });

for (const step of await result.steps) {
  for (const toolResult of step.staticToolResults) {
    if (toolResult.toolName === 'get_project_url') {
      toolResult.input;  // { project_id: string }
      toolResult.output; // { url: string }
    }
  }
}

createToolSchemas() 接受与 MCP 服务器的 URL 参数类似的过滤选项:

  • features:限制到特定的功能组(例如 ['database', 'docs'])。默认为所有默认功能组。
  • projectScoped:当设置为 true 时,从工具输入模式中省略 project_id 并排除账户级工具——在连接到配置了 project_ref 的服务器时使用。默认为 false
  • readOnly:当设置为 true 时,排除变更类工具——在连接到配置了 read_only=true 的服务器时使用。默认为 false
const mcpClient = await createMCPClient({
  transport: {
    type: 'http',
    url: 'https://mcp.supabase.com/mcp?project_ref=<project-ref>&read_only=true&features=database,docs',
  },
});

const tools = await mcpClient.tools({
  schemas: createToolSchemas({
    features: ['database', 'docs'],
    projectScoped: true,
    readOnly: true,
  }),
});

[!NOTE] 此服务器不会在 MCP 工具结果中发送 structuredContent。AI SDK 会回退到从 content 文本中解析 JSON。

更多信息,请参阅 AI SDK 文档中的模式定义类型化工具输出

其他 MCP 服务器

@supabase/mcp-server-postgrest

PostgREST MCP 服务器允许您通过 REST API 将自己的用户连接到您的应用。更多详情请参阅其项目 README

资源

面向开发者

有关如何为此项目做出贡献的详细信息,请参阅贡献指南

许可证

本项目基于 Apache 2.0 许可。详情请参阅 LICENSE 文件。