PolarDB Supabase助力AI原生IDE完成VibeCoding

更新时间:
复制 MD 格式

PolarDB Supabase通过模型上下文协议(Model Context Protocol, MCP)为Qoder、CursorBolt.diyAI原生IDE提供实时的数据库元信息上下文、标准的数据操作接口以及开箱即用的鉴权能力,从而使AI能够生成与后端数据结构相匹配的精准代码,显著提升全栈应用的开发效率。

业务场景

VibeCoding(氛围编程)是一种由AI驱动的编程范式,开发者通过自然语言描述需求,AI则自动完成代码的开发、调试及部署运行。VibeCoding显著降低了编程门槛,使非专业开发人员也能够通过自然语言交互实现网站和应用程序的开发。尽管AI能够生成完美的前端乃至后端代码,但由于其无法感知应用的实际后端环境(如数据库表结构、字段名和关联关系等),往往导致AI生成的代码出现事实性错误,需开发者手动检查和修正,从而降低了AI辅助编程的有效性。

PolarDB Supabase作为一个通用的后端即服务(BaaS),通过提供MCP Server有效地弥合了前后端之间的断层,为AI提供了完整且实时的后端上下文。由此形成了更高效的全栈加速范式,显著提升了AI在前后端一体化全栈应用开发中的性能表现。

方案架构

本方案的核心是利用模型上下文协议(MCP)作为桥梁,连接作为后端即服务(BaaS)的PolarDB SupabaseAI原生IDE(以Qoder为例)

image

核心组件

  • PolarDB Supabase:提供企业级后端服务,包括PostgreSQL数据库、认证、存储和自动生成的API。作为所有业务数据的存储和管理中心。

  • MCP Server: 中间件服务,该服务连接到PolarDB Supabase数据库,用于安全地提取和暴露数据库的元数据(如表、列、类型、约束),不暴露任何业务数据。

  • AI原生IDE(以Qoder为例):开发者的工作界面。其集成的AI客户端连接到MCP Server,获取实时的数据库Schema上下文,并将其提供给大语言模型以指导代码生成。

工作流程

  1. 开发者在AI原生IDE(以Qoder为例)中使用自然语言下达开发指令(例如:“创建一个展示任务列表的页面”)。

  2. AI原生IDE(以Qoder为例)客户端向MCP Server发起请求,查询数据库的Schema信息。

  3. MCP ServerPolarDB Supabase的系统目录(information_schema)中查询相关的表结构和元数据。若在项目初始化时无数据表,仍然不会影响其效果。

  4. MCP Server将结构化的Schema信息返回给AI原生IDE(以Qoder为例)

  5. AI原生IDE(以Qoder为例)将开发者的指令和获取到的Schema上下文一同提交给大语言模型。

  6. 大语言模型基于精确的上下文,生成与数据库结构相对应的DDL语句,并通过Supabase将其变更至数据库。同时,它还生成与表结构匹配的前端和后端交互代码(例如,使用正确的表名todos以及字段名taskis_done)。

  7. 生成的代码呈现在IDE中,供开发者使用或微调。

操作步骤

以下步骤将引导完成一个AI原生开发环境的配置,并演示如何通过自然语言构建一个测试应用。

步骤一:创建PolarDB Supabase

  1. 登录PolarDB控制台,在PolarDB集群中创建一个Supabase应用并登录其控制台。详细步骤,请参考快速体验PolarDB Supabase

  2. 将您的业务环境IP地址添加至应用白名单中。

  3. 应用创建成功后,单击应用ID进入应用管理页面,记录以下关键信息:

    • 公网地址:在拓扑图页签内获取,首次创建的应用需要先进行申请,格式为http://<公网IP>:8000

    • 密钥信息:在配置页签内获取。需要记录密钥secret.jwt.anonKeysecret.jwt.serviceKeysecret.dashboard.usernamesecret.dashboard.password

步骤二:下载并安装AI原生IDE

此处以Qoder为例根据操作系统下载并安装对应的客户端。

步骤三:获取并构建MCP服务

  1. 下载PolarDB Supabase MCP Server代码,您可以在业务环境中执行以下命令,进行克隆并构建项目。

    说明

    请确保您的业务环境符合PolarDB Supabase MCP Server代码的环境要求。

    # 1. 克隆项目仓库
    git clone https://github.com/ApsaraDB/PolarDB-Supabase-MCP-Server.git
    
    # 2. 进入项目目录
    cd PolarDB-Supabase-MCP-Server
    
    # 3. 包管理器 推荐使用 pnpm
    npm install -g pnpm
    
    # 4. 安装依赖
    pnpm install
    
    # 5. 构建项目
    pnpm build
  2. 记录stdio.js文件的绝对地址:

    # 执行后应显示stdio.js文件。记录其绝对路径,用于后续配置。
    ls packages/mcp-server-supabase/dist/transports/

步骤四:在AI原生IDE中配置MCP服务

此处以macOS环境下的Qoder为例在顶部导航栏中选择Qoder > 首选项 > Qoder 设置 > MCP 服务,单击添加按钮,添加一个新的MCP服务配置。参考以下示例填写配置,将<...>占位符替换为实际信息。

{
    "mcpServers": {
        "polardb-supabase": {
          "command": "node",
          "args": [
            "<步骤三中构建出的stdio.js文件的绝对路径>",
            "--api-url",
            "<您的Supabase公网地址>",
            "--service-role-key",
            "<您的Supabase的secret.jwt.serviceKey配置>",
            "--anon-key",
            "<您的Supabase的secret.jwt.anonKey配置>",
            "--dashboard-username",
            "<您的Supabase的secret.dashboard.username配置>",
            "--dashboard-password",
            "<您的Supabase的secret.dashboard.password配置>",
            "--project-ref",
            "default"
          ]
        }
    }
}

示例

{
    "mcpServers": {
        "polardb-supabase": {
          "command": "node",
          "args": [
            "/your/path/to/PolarDB-Supabase-MCP-Server/packages/mcp-server-supabase/dist/transports/stdio.js",
            "--api-url",
            "http://8.xxx.xxx.xxx:8080",
            "--service-role-key",
            "eyJ0eXAiOiJKV1QiLCJxxx",
            "--anon-key",
            "eyJ0eXAiOiJKV1QiLCJxxx",
            "--dashboard-username",
            "supabasexxx",
            "--dashboard-password",
            "rMa1rc9rxxx",
            "--project-ref",
            "default"
          ]
        }
    }
}

步骤五:开始全栈开发

完成上述配置后,开始通过自然语言与AI原生IDE交互开发应用,此处以Qoder为例。

  1. Qoder中新开一个对话窗口。

  2. 输入第一个提示词(Prompt),描述要创建的应用。AI会基于MCP服务提供的上下文,生成包含前后端逻辑的完整代码并初始化表结构。

    示例:帮我实现一个待办列表应用,基于react+Supabase实现,不需要登录和权限控制。

  3. 根据生成的结果,可进行多轮提示词交互,直至所有功能和需求均符合要求。

示例效果展示

  1. 输入提示词:“帮我实现一个待办列表应用,基于react+Supabase实现,不需要登录和权限控制”。

    AI 生成的应用核心代码(节选)如下:

    import { useState, useEffect } from 'react'
    import { supabase } from './supabaseClient'
    import './App.css'
    
    function App() {
      const [todos, setTodos] = useState([])
      const [newTask, setNewTask] = useState('')
      const [loading, setLoading] = useState(true)
    
      // 获取所有待办事项
      const fetchTodos = async () => {
        setLoading(true)
        const { data, error } = await supabase
          .from('todos')
          .select('*')
          .order('created_at', { ascending: true })
    
        if (error) {
          console.error('Error fetching todos:', error)
          setTodos([])
        } else {
          setTodos(data || [])
        }
        setLoading(false)
      }
    
      // 添加新待办事项
      const addTodo = async () => {
        if (newTask.trim() === '') return
    
        const { data, error } = await supabase
          .from('todos')
          .insert([{ task: newTask, completed: false }])
          .select()
    
        if (error) {
          console.error('Error adding todo:', error)
        } else {
          setTodos([...todos, data[0]])
          setNewTask('')
        }
      }
    
      // 切换待办事项完成状态
      const toggleTodo = async (id, completed) => {
        const { data, error } = await supabase
          .from('todos')
          .update({ completed: !completed })
          .eq('id', id)
          .select()
    
        if (error) {
          console.error('Error updating todo:', error)
        } else {
  2. 等待自动生成代码与表结构。完成后,单击预览查看效果。

    执行该提示词后,AI 助手自动完成以下操作:

    1. 创建 todos 表,包含 id、task、completed 和 created_at 字段。

    2. 验证查询功能。

    3. 更新应用代码。

    4. 重启应用。

    应用在内嵌浏览器中成功运行,访问地址为 http://localhost:5174。页面标题为待办列表,包含任务输入框(占位符为“添加新任务...”)和添加按钮,下方展示已添加的待办事项(如“测试任务”),每条事项带有复选框和删除按钮。

  3. 登录Supabase应用验证PolarDB集群内的表与数据。

    自动生成的 Supabase 数据库中包含 todos 表,表结构如下:

    • id(int4,主键)

    • task(text,任务内容)

    • completed(bool,完成状态)

    • created_at(timestamptz,创建时间)

    在 Supabase Table Editor 中可看到表内已有 3 条测试任务数据,completed 状态均为 FALSE。

结论

本方案通过集成PolarDB SupabaseMCP协议,构建了一个AI上下文感知的开发工作流。它为AI编程工具提供了精确的后端数据库结构,使其能够自动生成准确、可运行的应用代码,减少了对AI生成代码的手动修正工作。

尽管本指南以QoderReact为例,但该架构基于标准的MCP协议,可扩展至其他兼容的IDE和开发框架。

常见问题

为什么在使用过程中AI原生IDE(Qoder)没有自动创建表结构?

请确认是否已将您的业务环境的IP地址添加至应用白名单中。

PolarDB Supabase 应用是否支持开启 HTTPS?

当前 PolarDB Supabase 应用不支持在控制台或配置中直接开启 HTTPS。如需通过 HTTPS 实现加密访问,需在反向代理层(如 Nginx)自行配置 SSL 证书。

PolarDB Supabase 应用是否支持通过 Data API 访问非 public schema 的表?

当前 PolarDB Supabase 应用不支持配置 Data API,因此无法为非 public schema 生成 RESTful 接口,调用 RESTful API 仅能访问默认的 public 表(public schema 下的表)。若访问非 public schema 的表报错 406 Not Acceptable,即为此限制导致。

PolarDB Supabase 应用发生 OOM(内存溢出)挂起后如何恢复?

PolarDB Supabase 应用具备自动恢复机制,无需人工干预。恢复时长取决于内存释放情况,若实例规格较小(如 2C),可能因资源紧张导致恢复缓慢或失败。处理方法:

  1. 停止压测或高负载操作,加速内存释放。

  2. 等待 Supabase 应用自动恢复。

  3. 建议升级至更大规格实例,从根本上避免 OOM 问题。