项目简介

该项目提供阿里云 PolarDB 数据库(包括 MySQL 版和 PostgreSQL 版)的 MCP 服务器实现。它允许大型语言模型(LLM)客户端通过标准的 Model Context Protocol (MCP) 与 PolarDB 数据库进行交互,从而获取数据库结构信息(如表、字段)和数据,并能够执行 SQL 查询和操作。

主要功能点

  • 数据库资源访问: 支持 LLM 客户端通过 MCP 协议读取数据库资源,例如:
    • 获取当前数据库的所有表列表 (MySQL)。
    • 获取当前数据库的所有 Schema 列表 (PostgreSQL)。
    • 列出指定 Schema/数据库下某个表的字段信息(名称、类型、注释)。
    • 读取指定 Schema/数据库下某个表的部分数据(默认限制 50 行)。
    • (MySQL) 列出 PolarDB AI 模型列表。
  • SQL 执行工具: 提供一个 MCP 工具,允许 LLM 执行任意 SQL 查询语句,并将结果返回。
  • 写入操作控制: 可通过环境变量精细控制是否允许 INSERT, UPDATE, DELETE (WRITE), DDL 等操作,增强安全性。
  • (MySQL) PolarDB AI 模型创建工具: 提供工具支持使用 PolarDB AI 语法创建模型。
  • 多种传输协议支持: 支持 Stdio 和 SSE 两种 MCP 标准传输协议。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/aliyun/alibabacloud-polardb-mcp-server.git
    cd alibabacloud-polardb-mcp-server
  2. 安装依赖:
    • 进入对应的数据库子目录('polardb-mysql-mcp-server' 或 'polardb-postgresql-mcp-server')。
    • 建议使用虚拟环境。
    • 安装所需的 Python 依赖。通常,这些项目的依赖会列在 'requirements.txt' 文件中,或者可以根据代码中的导入手动安装(如 'pip install starlette uvicorn python-dotenv sqlparse mysql-connector-python psycopg[binary] model-context-protocol pydantic')。

服务器配置 (供 MCP 客户端配置使用)

MCP 客户端需要配置如何启动并连接到此 MCP 服务器进程。配置通常是一个 JSON 对象,包含以下关键信息:

{
  "name": "服务器名称",
  "command": "启动命令",
  "args": ["命令参数1", "命令参数2", ...],
  "env": {
    "环境变量名1": "环境变量值1",
    "环境变量名2": "环境变量值2",
    ...
  }
}

根据该仓库代码,配置示例及参数说明如下:

  • 'name': MCP 服务器的名称。
    • 对于 MySQL 服务器:'polardb-mysql-mcp-server'
    • 对于 PostgreSQL 服务器:'polardb-postgresql-mcp-server'
  • 'command': 启动服务器进程的可执行文件路径。通常是 '"python"' 或 '"python3"'。
  • 'args': 传递给 'command' 的参数列表。通常包含服务器脚本的路径。
    • 对于 MySQL 服务器:'["polardb-mysql-mcp-server/server.py"]'
    • 对于 PostgreSQL 服务器:'["polardb-postgresql-mcp-server/server.py"]'
  • 'env': 启动服务器进程时需要设置的环境变量,用于配置数据库连接和服务器行为。
    • 数据库连接参数:
      • MySQL: 'POLARDB_MYSQL_HOST', 'POLARDB_MYSQL_PORT', 'POLARDB_MYSQL_USER', 'POLARDB_MYSQL_PASSWORD', 'POLARDB_MYSQL_DATABASE' (数据库名)
      • PostgreSQL: 'POLARDB_POSTGRESQL_HOST', 'POLARDB_POSTGRESQL_PORT', 'POLARDB_POSTGRESQL_USER', 'POLARDB_POSTGRESQL_PASSWORD', 'POLARDB_POSTGRESQL_DBNAME' (数据库名)
      • 这些是连接到目标 PolarDB 数据库实例所需的凭据和地址信息。
    • 运行模式:
      • 'RUN_MODE': 设置为 '"stdio"' 以使用 Stdio 模式(默认)。如果设置为其他值或不设置,将使用 SSE 模式。
    • SSE 模式配置 (仅在 'RUN_MODE' 非 '"stdio"' 时需要):
      • 'SSE_BIND_HOST': SSE 服务器监听的 IP 地址。
      • 'SSE_BIND_PORT': SSE 服务器监听的端口。
    • 写入操作控制: (可选)
      • MySQL: 'POLARDB_MYSQL_ENABLE_WRITE', 'POLARDB_MYSQL_ENABLE_UPDATE', 'POLARDB_MYSQL_ENABLE_INSERT', 'POLARDB_MYSQL_ENABLE_DDL'
      • PostgreSQL: 'POLARDB_POSTGRESQL_ENABLE_WRITE', 'POLARDB_POSTGRESQL_ENABLE_UPDATE', 'POLARDB_POSTGRESQL_ENABLE_INSERT', 'POLARDB_POSTGRESQL_ENABLE_DDL'
      • 这些环境变量接受布尔值 ('true'/'false', '1'/'0', 't'/'f', 'y'/'n', 'yes'/'no'),用于启用对应的 SQL 操作权限。默认为 'false'。

将上述信息填入 MCP 客户端的服务器配置中,客户端即可按需启动并连接到该 MCP 服务器。

基本使用方法

一旦 MCP 服务器被 MCP 客户端成功配置和启动,LLM 客户端就可以通过与 MCP 客户端通信来利用服务器提供的能力。例如:

  1. LLM 可以通过 MCP 协议请求列出所有可用的 MCP 资源,从而发现数据库的表列表或 Schema 列表资源 URI。
  2. LLM 可以构造特定的资源 URI (如 'polardb-mysql://my_table/field') 向 MCP 服务器请求读取某个表的字段信息或数据。
  3. LLM 可以通过 MCP 协议调用 'execute_sql' 工具,并提供包含 SQL 查询的 'arguments' 参数,服务器将执行 SQL 并返回结果(查询结果或执行信息)。
  4. LLM 可以调用 'polar4ai_create_models' 工具 (MySQL 版) 并提供相应的模型创建参数。

整个过程对于 LLM 而言是调用标准化接口,具体的数据库交互细节由 MCP 服务器处理。

信息

分类

数据库与文件