Supabase数据库交互服务器

一个模型上下文协议(MCP)服务器,使AI工具能够与Supabase数据库进行交互,提供读取、创建、更新和删除记录的功能。

  • by ninad7007
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ninad7007/supabase-mcp

使用说明

Supabase MCP服务器

模型上下文协议(MCP)服务器,使AI工具能够与Supabase数据库交互。此服务器提供用于读取、创建、更新和删除Supabase表中记录的工具。

特性

  • 通过筛选和列选择从任何Supabase表中读取行
  • 在表中创建单个或多个记录
  • 根据筛选条件更新记录
  • 根据筛选条件删除记录
  • 用于理解AI模型的全面工具描述
  • 使用Pydantic进行类型安全的请求/响应处理
  • Docker支持,易于部署

先决条件

  • Python 3.9+
  • Docker和Docker Compose
  • 带有服务角色键的Supabase项目
  • 与FastMCP兼容的AI集成开发环境

安装

  1. 克隆存储库:
git clone https://github.com/yourusername/supabase-mcp.git
cd supabase-mcp
  1. 创建一个 .env 使用您的Supabase凭据文件:
cp .env.example .env
# Edit .env with your Supabase credentials:
# SUPABASE_URL=your-project-url
# SUPABASE_KEY=your-service-role-key
  1. 构建并启动容器:
# Build and start in detached mode
docker-compose up --build -d

# To view logs
docker-compose logs -f

# To stop the container
docker-compose down

服务器将在以下时间可用 http://localhost:8000.

Docker管理命令

# Start the container
docker-compose up

# Start in detached mode (background)
docker-compose up -d

# Stop the container
docker-compose down

# View logs
docker-compose logs -f

# Rebuild the container
docker-compose up --build

# Check container status
docker-compose ps

# Restart the container
docker-compose restart

Docker问题排查

  1. 如果容器无法启动:

    # Check logs
    docker-compose logs -f
    
    # Check container status
    docker-compose ps
    
    # Remove and rebuild
    docker-compose down
    docker-compose up --build
    
  2. 如果出现端口冲突:

    # Stop any existing containers using port 8000
    docker-compose down
    
    # Or modify the port in docker-compose.yml
    # ports:
    #   - "8000:8000"  # Change the first number to an available port
    
  3. 如果环境变量未加载:

    # Verify .env file exists and has correct values
    cat .env
    
    # Check environment variables in container
    docker-compose exec mcp-server env
    

在AI IDE中配置MCP

一般配置步骤

  1. 打开AI IDE的设置/首选项
  2. 导航到MCP或AI设置部分
  3. 添加具有以下配置的新MCP服务器:
{
  "name": "Supabase MCP",
  "command": "docker-compose",
  "args": ["up"],
  "cwd": "/path/to/supabase-mcp"
}

IDE特定说明

光标

  1. 打开设置(⌘或Ctrl+)
  2. 转到“AI”部分
  3. 在“MCP服务器”下,单击“添加服务器”
  4. 使用上面的配置
  5. 重新启动Cursor以应用更改

带有AI扩展的VS代码

  1. 打开命令面板(P或Ctrl+Shift+P)
  2. 搜索“MCP”或“AI设置”
  3. 添加新的MCP服务器配置
  4. 使用上面的配置
  5. 重新加载VS代码窗口

带有AI插件的JetBrains IDE

  1. 打开设置(⌘或Ctrl+Alt+S)
  2. 导航到“工具”→ "AI" → “MCP服务器”
  3. 点击“+”添加新服务器
  4. 使用上面的配置
  5. 重新启动IDE以应用更改

验证MCP连接

  1. 检查IDE的状态栏以了解MCP服务器状态
  2. 查找绿色指示灯或“MCP已连接”消息
  3. 尝试使用需要数据库访问的AI功能
  4. 检查Docker日志是否存在任何连接问题:
    docker-compose logs -f
    

用法

  1. 启动MCP服务器:
docker-compose up
  1. 配置您的AI工具以使用MCP服务器:
{
  "mcpServers": {
    "supabase": {
      "command": "docker-compose",
      "args": ["up"]
    }
  }
}

可用工具

read_rows

使用可选的筛选和列选择从Supabase表中读取行。

示例用法:

{
  "table_name": "users",
  "columns": ["id", "name"],
  "filters": { "age": { "gt": 18 } },
  "limit": 10
}

创建记录

在Supabase表中创建一条或多条记录。

示例用法:

{
  "table_name": "users",
  "records": [
    { "name": "John", "age": 30 },
    { "name": "Jane", "age": 25 }
  ]
}

update_records

根据筛选条件更新辅助数据库表中的记录。

示例用法:

{
  "table_name": "users",
  "filters": { "status": "inactive" },
  "updates": { "status": "active" }
}

删除记录

根据筛选条件从辅助数据库表中删除记录。

示例用法:

{
  "table_name": "users",
  "filters": { "id": 1 }
}

安全考虑

  • 始终在安全的环境中使用服务角色密钥
  • 切勿在客户端代码中公开服务角色密钥
  • 在Supabase中使用适当的行级安全策略
  • 考虑对生产使用实施限速

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 提交您的更改
  4. 推到分支
  5. 创建拉取请求

许可证

麻省理工学院