使用说明

项目简介

mysql_mcp_server_pro 是一个基于 Model Context Protocol (MCP) 构建的 MySQL 数据库操作服务器。它允许 LLM 客户端通过 MCP 协议调用预设的工具来执行 SQL 查询、获取数据库表结构和索引信息,以及将中文表名字段名转换为拼音首字母等实用功能。该服务器支持 Stdio 和 SSE 两种通信模式,可以灵活地集成到各种 LLM 应用中,作为其数据库上下文服务。

主要功能点

  • SQL 执行: 支持执行任意 SQL 查询语句,包括 SELECT、INSERT、UPDATE、DELETE 和 SHOW 等,并返回执行结果。支持多条SQL语句以分号分隔执行。
  • 表信息查询:
    • 根据中文表注释关键词搜索数据库中的表名。
    • 获取指定表的字段结构信息(字段名、字段注释等)。
    • 获取指定表的索引信息(索引名、索引字段、索引类型等)。
  • 中文转拼音首字母: 将中文文本(如字段名)转换为拼音首字母,方便在数据库表结构设计中使用。
  • 支持 Stdio 和 SSE 两种模式: 可以根据客户端需求选择合适的通信方式。
  • SQL执行计划分析: 支持通过 'EXPLAIN' 分析SQL执行计划。

安装步骤

  1. 下载仓库: 从 GitHub 仓库 mysql_mcp_server_pro 下载源代码。
  2. 配置数据库连接:
    • 在项目根目录下,找到 '.env' 文件 (SSE 模式) 或直接查看 'src/studio_mcp/operatemysql.py' 和 'src/sse_mcp/operatemysql.py' 文件 (STDIO 模式和 SSE 模式都在代码中直接配置,也可以通过环境变量配置)。
    • 修改以下环境变量或代码中的配置信息,以连接到您的 MySQL 数据库:
      MYSQL_HOST=您的MySQL主机地址
      MYSQL_PORT=您的MySQL端口号
      MYSQL_USER=您的MySQL用户名
      MYSQL_PASSWORD=您的MySQL密码
      MYSQL_DATABASE=您要操作的数据库名
  3. 安装依赖 (可选):虽然仓库中没有明确的 requirements.txt 文件,但根据代码内容,可能需要安装以下 Python 库。如果运行报错,请尝试安装:
    pip install mysql-connector-python uvicorn starlette python-dotenv pypinyin
    # 如果使用 uv 运行,可能需要安装 uv
    pip install uv

服务器配置

STDIO 模式

MCP 客户端需要配置以下 JSON 信息以连接到 STDIO 模式的 MySQL MCP 服务器。

{
  "mcpServers": {
    "operateMysql": {  // 服务器名称,客户端据此名称调用
      "isActive": true, // 标记为激活状态
      "name": "operateMysql", // 服务器名称,与外层名称保持一致
      "command": "uv",  // 启动命令,这里使用 uv (也可以是 python 或其他可以运行 Python 脚本的命令)
      "args": [ // 启动参数
        "--directory",
        "G:\\python\\mysql_mcp\\src\\studio_mcp",  // **[请替换为您的项目 studio_mcp 目录的绝对路径]**
        "run",
        "operatemysql.py" // 运行的 Python 脚本
      ],
      "env": { // 环境变量配置,数据库连接信息
        "MYSQL_HOST": "192.168.xxx.xxx", // **[请替换为您的MySQL主机地址]**
        "MYSQL_PORT": "3306", // **[请替换为您的MySQL端口号]**
        "MYSQL_USER": "root", // **[请替换为您的MySQL用户名]**
        "MYSQL_PASSWORD": "root", // **[请替换为您的MySQL密码]**
        "MYSQL_DATABASE": "a_llm" // **[请替换为您的数据库名]**
      }
    }
  }
}

注意:

  • 请将 'args' 中的 '"--directory"' 参数值 '"G:\python\mysql_mcp\src\studio_mcp"' 替换为您本地 'studio_mcp' 目录的绝对路径
  • 请根据您的数据库实际连接信息,修改 'env' 中的 'MYSQL_HOST', 'MYSQL_PORT', 'MYSQL_USER', 'MYSQL_PASSWORD', 'MYSQL_DATABASE' 的值。

SSE 模式

MCP 客户端需要配置以下 JSON 信息以连接到 SSE 模式的 MySQL MCP 服务器。

{
  "mcpServers": {
    "operateMysql": { // 服务器名称,客户端据此名称调用
      "name": "operateMysql", // 服务器名称,与外层名称保持一致
      "description": "",
      "isActive": true, // 标记为激活状态
      "baseUrl": "http://localhost:9000/sse" // SSE 服务的基础 URL
    }
  }
}

注意:

  • 确保 SSE 服务器已启动并监听在 'baseUrl' 中指定的地址和端口。 启动 SSE 服务器的命令如下,在 'src/sse_mcp' 目录下执行:
    uv run operatemysql.py
    # 或者使用 python 运行
    # python operatemysql.py
    默认情况下,SSE 服务器监听 'http://localhost:9000/sse'。

基本使用方法

  1. 启动 MCP 服务器: 根据您选择的模式 (STDIO 或 SSE) 启动 MySQL MCP 服务器。

    • STDIO 模式: 通常由 MCP 客户端 (如 Cursor, Cline) 自动启动,无需手动启动。
    • SSE 模式: 需要在终端中手动运行 'uv run operatemysql.py' (或 'python operatemysql.py') 启动。
  2. 在 LLM 客户端中使用: 在支持 MCP 协议的 LLM 客户端中 (如 Cursor, Cline),配置上述相应的服务器 JSON 信息。

  3. 通过 Prompt 调用工具: 在 LLM 的 Prompt 中,可以使用自然语言描述您想要执行的数据库操作,例如:

    # Task
    查询 t_admin_rms_zzjg 表的所有数据
    # Requirements
    - 使用 execute_sql 工具
    - 返回结果为 CSV 格式

    或者更直接地使用 SQL 语句:

    # Task
    执行 SQL 查询
    # Requirements
    - SQL 语句: SELECT * FROM t_admin_rms_zzjg;
    - 使用 execute_sql 工具

    服务器将根据 Prompt 中的指令,调用相应的工具 (如 'execute_sql'),执行数据库操作,并将结果返回给 LLM 客户端。您可以通过查看仓库 README 中的 "Example" 部分和提供的效果图片,了解更具体的使用示例。

信息

分类

数据库与文件