项目简介

MCP SQLAlchemy Server 是一个轻量级的 MCP (Model Context Protocol) 服务器,它使用 FastAPI、pyodbc 和 SQLAlchemy 构建,旨在通过 ODBC 连接到各种数据库(如 Virtuoso、PostgreSQL、MySQL、SQLite 等),并向 LLM 客户端提供数据库的结构信息和数据查询能力。

主要功能点

  • 获取 Schema 列表: 列出数据库中所有 Schema 的名称。
  • 获取表列表: 检索指定 Schema 或所有 Schema 中的表信息。
  • 描述表结构: 获取表的详细结构描述,包括列名、数据类型、是否允许为空、主键和外键等信息。
  • 搜索表: 根据表名关键词过滤和检索表。
  • 执行 SQL 查询:
    • 以 JSONL 格式返回查询结果,适合结构化数据处理。
    • 以 Markdown 表格格式返回查询结果,方便报告和可视化。

安装步骤

  1. 克隆仓库

    git clone https://github.com/OpenLinkSoftware/mcp-sqlalchemy-server.git
    cd mcp-sqlalchemy-server
  2. 安装 uv

    推荐使用 'uv' 作为 Python 包管理器,可以显著提升安装速度。

    pip install uv

    或者使用 Homebrew (macOS):

    brew install uv
  3. 配置 ODBC DSN

    根据你的数据库类型,配置 ODBC 数据源名称 (DSN)。编辑 '~/.odbc.ini' 文件,例如,以下是 Virtuoso 数据库的配置示例:

    [VOS]
    Description = OpenLink Virtuoso
    Driver = /path/to/virtodbcu_r.so  # 替换为你的 Virtuoso ODBC 驱动路径
    Database = Demo                   # 数据库名称
    Address = localhost:1111          # 数据库地址和端口
    WideAsUTF16 = Yes

    请根据你使用的数据库和驱动,修改上述配置。

  4. 配置数据库连接 URL

    根据你使用的数据库和 ODBC DSN,构建 SQLAlchemy 连接 URL。例如,Virtuoso 数据库可以使用以下格式:

    virtuoso+pyodbc://user:password@VOS  # VOS 是你在 ~/.odbc.ini 中配置的 DSN 名称

    其他数据库的 URL 格式请参考仓库 README 中的 "Examples of Database URL Configuration" 部分。

服务器配置

对于 MCP 客户端(例如 Claude Desktop),你需要配置 MCP 服务器的启动命令和参数,以便客户端能够连接到该服务器。以下是一个 'claude_desktop_config.json' 的配置示例,用于配置名为 "my_database" 的 MCP 服务器:

{
  "mcpServers": {
    "my_database": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-sqlalchemy-server", "run", "mcp-sqlalchemy-server"],
      "env": {
        "DB_URL": "数据库连接URL"  // 替换为你的数据库连接 URL,例如:virtuoso+pyodbc://user:password@VOS
      }
    }
  }
}

配置参数说明:

  • server name: 'my_database' - 你为该 MCP 服务器指定的名称,客户端会使用这个名称来引用该服务器。
  • command: '"uv"' - 启动服务器的命令,这里使用 'uv' 命令来运行 Python 脚本。你需要确保 'uv' 命令在你的系统路径中可用。
  • args: '["--directory", "/path/to/mcp-sqlalchemy-server", "run", "mcp-sqlalchemy-server"]' - 传递给 'uv' 命令的参数:
    • '--directory': 指定 MCP 服务器代码所在的目录,请替换 '/path/to/mcp-sqlalchemy-server' 为你克隆仓库的实际路径。
    • 'run': 'uv run' 命令用于运行 Python 模块。
    • 'mcp-sqlalchemy-server': 指定要运行的 Python 模块名称。
  • env: '{"DB_URL": "数据库连接URL"}' - 设置环境变量:
    • 'DB_URL': 必须配置。指定数据库连接 URL,请替换 '"数据库连接URL"' 为你实际的 SQLAlchemy 数据库连接 URL。

注意: 请根据你的实际环境和数据库配置,修改上述配置示例中的路径、数据库连接 URL 等信息。

基本使用方法

配置完成后,MCP 客户端(如 Claude Desktop)将能够通过 MCP 协议与该服务器通信,并调用服务器提供的工具 (Tools) 来执行以下操作:

  • 获取数据库 Schema 和表信息,用于了解数据库结构。
  • 执行 SQL 查询,获取数据库中的数据。

具体的使用方式取决于 MCP 客户端的功能和界面,通常客户端会提供界面让你选择可用的 MCP 服务器和工具,并输入相应的参数来调用这些工具。

调试:

可以使用 MCP Inspector 工具来调试服务器交互,具体步骤请参考仓库 README 中的 "Debugging" 部分。

信息

分类

数据库与文件