使用说明

项目简介

Query MCP (原 Supabase MCP Server) 是一款开源工具,旨在弥合大型语言模型 (LLM) 客户端(如 Cursor、Windsurf 等 IDE)与 Supabase 后端服务之间的鸿沟。它充当一个 MCP 服务器,允许你在 IDE 中通过自然语言安全地与 Supabase 数据库、管理 API 和用户认证系统进行交互。

主要功能点

  • 安全 SQL 查询执行: 支持在 IDE 中以自然语言执行 SQL 查询,并提供安全分级控制,防止误操作。
  • 数据库管理: 无需离开 IDE,即可完成数据库 Schema 查看、表结构查看等管理任务。
  • Supabase 管理 API 集成: 通过自然语言调用 Supabase Management API,管理你的 Supabase 项目。
  • 用户认证管理: 集成 Supabase Auth Admin SDK,方便地进行用户管理,例如创建测试用户。
  • 兼容多种 MCP 客户端: 兼容 Cursor, Windsurf, Cline, Claude Desktop 等主流 MCP 客户端。
  • 操作安全性控制: 提供安全、写入和破坏性三种安全级别,确保数据库操作的安全性。
  • 自动迁移版本控制: 自动记录数据库结构变更,方便数据库版本管理。

安装步骤

  1. 环境准备: 确保你的系统已安装 Python 3.12 或更高版本。

  2. 安装 Query MCP 服务器: 使用 Python 包管理器 (pipx 或 uv) 安装 'supabase-mcp-server'。推荐使用 'pipx' 安装以创建隔离的运行环境。

    # 如果已安装 pipx (推荐)
    pipx install supabase-mcp-server
    
    # 如果已安装 uv
    uv pip install supabase-mcp-server
  3. 配置环境变量: Query MCP 服务器需要配置 Supabase 项目的相关信息,包括项目引用 ID、数据库密码和区域等。你可以通过以下方式配置:

    • 方法一:客户端配置(推荐): 在你的 MCP 客户端配置中直接设置环境变量(具体方法请参考客户端的使用说明)。

    • 方法二:全局配置文件: 创建全局 '.env' 配置文件,该文件将用于所有 Query MCP 服务器实例。

      • macOS/Linux: '~/.config/supabase-mcp/.env'

      • Windows: '%APPDATA%\supabase-mcp.env'

      • 在 '.env' 文件中添加以下配置项,并替换为你的 Supabase 项目信息:

        SUPABASE_PROJECT_REF=你的项目引用ID
        SUPABASE_DB_PASSWORD=你的数据库密码
        SUPABASE_REGION=你的项目区域 (例如: us-east-1)
        SUPABASE_ACCESS_TOKEN=你的管理API访问令牌 (可选)
        SUPABASE_SERVICE_ROLE_KEY=你的服务角色密钥 (可选)
    • 方法三:项目专属配置(源码安装): 如果你从源码安装,可以在项目根目录下创建 '.env' 文件进行配置。

    查找 Supabase 项目信息:

    • 项目引用 ID (Project Reference): 在 Supabase 控制台的项目 URL 中找到。
    • 数据库密码 (Database Password): 在 Supabase 控制台 "Project Settings -> Database" 中查看。
    • 访问令牌 (Access Token): 在 https://supabase.com/dashboard/account/tokens 生成。
    • 服务角色密钥 (Service Role Key): 在 Supabase 控制台 "Project Settings -> API -> Project API keys" 中找到。

服务器配置

在 MCP 客户端(如 Cursor, Windsurf, Cline, Claude Desktop)中配置 Query MCP 服务器连接,以下是一些常用客户端的配置示例。请注意,你需要将 '<你的项目引用ID>' 和 '<你的数据库密码>' 替换为你的实际 Supabase 项目信息,'<可执行文件完整路径>' 替换为 'supabase-mcp-server' 可执行文件的完整路径(可以使用 'which supabase-mcp-server' 或 'where supabase-mcp-server' 命令查找)

  • Cursor:

    服务器名称 (server name): 'supabase' (可自定义)

    类型 (type): 'command'

    命令 (command): '<可执行文件完整路径>' (例如: '/Users/用户名/.local/bin/supabase-mcp-server' 或 'C:\Users\用户名.local\bin\supabase-mcp-server.exe')

  • Windsurf:

    {
        "mcpServers": {
          "supabase": {
            "command": "<可执行文件完整路径>",
            "env": {
              "SUPABASE_PROJECT_REF": "<你的项目引用ID>",
              "SUPABASE_DB_PASSWORD": "<你的数据库密码>",
              "SUPABASE_REGION": "us-east-1",  // 可选,默认为 us-east-1
              "SUPABASE_ACCESS_TOKEN": "<你的管理API访问令牌>",  // 可选,用于管理 API
              "SUPABASE_SERVICE_ROLE_KEY": "<你的服务角色密钥>"   // 可选,用于 Auth Admin SDK
            }
          }
        }
    }
  • Claude Desktop:

    {
      "mcpServers": {
        "supabase": {
          "command": "<可执行文件完整路径>",
          "env": {
            "SUPABASE_PROJECT_REF": "<你的项目引用ID>",
            "SUPABASE_DB_PASSWORD": "<你的数据库密码>",
            "SUPABASE_REGION": "us-east-1",  // 可选,默认为 us-east-1
            "SUPABASE_ACCESS_TOKEN": "<你的管理API访问令牌>",  // 可选,用于管理 API
            "SUPABASE_SERVICE_ROLE_KEY": "<你的服务角色密钥>"   // 可选,用于 Auth Admin SDK
          }
        }
      }
    }
  • Cline (VS Code 扩展):

    {
      "mcpServers": {
        "supabase": {
          "command": "<可执行文件完整路径>",
          "env": {
            "SUPABASE_PROJECT_REF": "<你的项目引用ID>",
            "SUPABASE_DB_PASSWORD": "<你的数据库密码>",
            "SUPABASE_REGION": "us-east-1",  // 可选,默认为 us-east-1
            "SUPABASE_ACCESS_TOKEN": "<你的管理API访问令牌>",  // 可选,用于管理 API
            "SUPABASE_SERVICE_ROLE_KEY": "<你的服务角色密钥>"   // 可选,用于 Auth Admin SDK
          }
        }
      }
    }

基本使用方法

配置完成后,在你的 MCP 客户端中,即可通过自然语言指令调用 Query MCP 服务器提供的工具,例如:

  • 使用自然语言查询数据库表结构、数据内容。
  • 使用自然语言执行 SQL 查询,进行数据分析和操作。
  • 使用自然语言调用 Supabase Management API,管理你的 Supabase 项目配置。
  • 使用自然语言调用 Supabase Auth Admin SDK,进行用户管理。

故障排除

  • 无法连接服务器: 检查服务器启动命令是否正确,环境变量配置是否正确,以及网络连接是否正常。
  • 工具未加载: 检查 MCP 客户端配置是否正确,服务器日志中是否有错误信息。
  • 权限错误: 检查是否开启了 'unsafe' 模式以执行写入或破坏性操作,以及是否已进行二次确认。

更多问题和详细的故障排除指南,请参考仓库 README 文档。

信息

分类

开发者工具