Yazdani-Supabase-MCP Server

MIT License
  • Linux
  • Apple

Integrations

  • Uses .env files to securely store and manage configuration variables like API keys and database credentials

  • Enables SQL execution, schema inspection, and database migration management for PostgreSQL databases

  • Designed for integration with React Native PaveApp, providing database access capabilities

Yazdani-Supabase-MCP-服务器

与 Supabase PostgreSQL 集成并使用 Claude 3.7 进行自然语言查询处理的 MCP 服务器,专为与 React Native PaveApp 集成而设计。

特征

  • 模式检查:查看数据库模式、表、列和关系
  • SQL 执行:使用安全控制运行 SQL 查询
  • 迁移管理:查看和管理数据库迁移
  • 自然语言处理:使用 Claude 3.7 将自然语言转换为 SQL
  • 安全控制:防止破坏性操作
  • 模拟数据库模式:支持无需实时数据库连接的开发和测试
  • 自动回退机制:当数据库连接失败时,优雅地回退到模拟数据
  • 会话池支持:使用 Supabase 会话池实现稳定连接

安装

先决条件

  • Python 3.8 或更高版本
  • 访问 Supabase PostgreSQL 数据库(模拟模式可选)
  • Anthropic API 密钥(用于 Claude 集成)

设置

  1. 克隆存储库:
    git clone <repository-url> cd Yazdani-supabase-mcp-server
  2. 安装依赖项:
    pip install -r requirements.txt
  3. 使用您的凭证创建一个.env文件:
    # Supabase credentials SUPABASE_PROJECT_REF=your_project_ref SUPABASE_URL=https://your_project_ref.supabase.co SUPABASE_DB_PASSWORD=your_db_password SUPABASE_REGION=your_region SUPABASE_ACCESS_TOKEN=your_access_token SUPABASE_SERVICE_ROLE_KEY=your_service_role_key # Database connection POSTGRES_HOST=db.your_project_ref.supabase.co POSTGRES_PORT=5432 POSTGRES_DB=postgres POSTGRES_USER=postgres SUPABASE_POOLER_HOST=aws-0-ca-central-1.pooler.supabase.com # Claude API ANTHROPIC_API_KEY=your_anthropic_api_key # Optional: for mock database mode # USE_MOCK_DB=true

用法

使用实时数据库运行服务器

对于 Supabase 数据库连接的正常运行:

python run_server.py

使用模拟数据库运行服务器

对于没有实时数据库连接的开发或测试:

# Windows improved_mock_server.bat # Unix/macOS USE_MOCK_DB=true python run_server.py

测试连接

测试与真实数据库和模拟数据库的连接:

python connection_test.py

自然语言测试

我们添加了一个强大的自然语言测试环境,允许您使用自然语言查询测试 MCP 服务器:

# Windows - Run the full test environment (HTTP server + NL client) run_nl_test.bat # Manual setup python http_server.py --port 8000 # Terminal 1 python nl_test_client.py # Terminal 2

自然语言测试客户端提供:

  • 用于测试的交互式命令行界面
  • 使用 Claude 将自然语言转换为 SQL
  • 针对 Supabase 数据库的 SQL 执行
  • 格式化结果显示
  • 命令历史和结果保存功能

可以尝试的自然语言查询示例:

  • “显示公共模式中的所有表”
  • “获取上个月注册的所有用户”
  • “数据库中的用户总数是多少?”

作为软件包安装

pip install -e . yazdani-supabase-mcp-server

与 React Native PaveApp 集成

为 React Native 设置 MCP 服务器

  1. 运行服务器
    • 对于开发:使用improved_mock_server.bat的模拟模式
    • 对于生产:确保数据库凭据正确并运行run_server.py
  2. 使服务器可访问
    • 对于本地开发:确保 React Native 可以访问你的本地网络
    • 对于生产环境:托管应用程序可以访问的服务器
  3. 从 React Native 连接
    • 使用 MCP 客户端库连接到服务器
    • 使用服务器的地址和端口配置客户端

API 端点

MCP 服务器公开了以下可通过 MCP 协议访问的工具:

  • get_schemas :列出所有数据库模式
  • get_tables :列出模式中的表
  • get_table_schema :获取详细的表结构
  • execute_postgresql SQL 语句
  • retrieve_migrations :列出数据库迁移
  • generate_sql :从自然语言生成 SQL

故障排除

连接详细信息

服务器使用 Supabase 会话池进行数据库连接:

postgresql://postgres.{project_ref}:{password}@{pooler_host}:5432/postgres

Supabase 建议对于维持持久连接的应用程序(尤其是在 IPv4 网络上)采用此连接格式。

连接问题

如果您遇到 Supabase 的连接问题:

  1. 验证您的 Supabase 项目是否处于活动状态
  2. 检查.env文件中的数据库凭据是否正确
  3. 确保您的 IP 地址在 Supabase 数据库设置中被允许
  4. 验证你使用的池主机是否适合你的区域
  5. 尝试使用模拟数据库模式: USE_MOCK_DB=true
  6. 运行python test_pooler_connection.py来具体测试池连接
  7. 运行python connection_test.py进行全面的连接测试

模拟数据库模式

该服务器现在包括改进的模拟数据库支持:

  • 连接失败时自动回退到模拟数据
  • 真实数据和模拟数据之间的一致接口
  • 使用模拟数据时有明确指示
  • 改进故障排除日志记录

贡献

欢迎贡献代码!欢迎提交 Pull 请求。

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

-
security - not tested
A
license - permissive license
-
quality - not tested

MCP 服务器使用 Claude 3.7 支持对 Supabase PostgreSQL 数据库进行自然语言查询,允许用户检查模式、执行 SQL、管理迁移以及将自然语言转换为 SQL 查询。

  1. Features
    1. Installation
      1. Prerequisites
      2. Setup
    2. Usage
      1. Running the Server with Live Database
      2. Running the Server with Mock Database
      3. Testing Connection
      4. Natural Language Testing
      5. Installing as a Package
    3. Integration with React Native PaveApp
      1. Setting Up MCP Server for React Native
      2. API Endpoints
    4. Troubleshooting
      1. Connection Details
      2. Connection Issues
      3. Mock Database Mode
    5. Contributing
      1. License
        ID: 7jnh2kp4l9