使用说明
项目简介
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执行计划。
安装步骤
- 下载仓库: 从 GitHub 仓库 mysql_mcp_server_pro 下载源代码。
- 配置数据库连接:
- 在项目根目录下,找到 '.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=您要操作的数据库名
- 安装依赖 (可选):虽然仓库中没有明确的 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' 目录下执行:
默认情况下,SSE 服务器监听 'http://localhost:9000/sse'。uv run operatemysql.py # 或者使用 python 运行 # python operatemysql.py
基本使用方法
-
启动 MCP 服务器: 根据您选择的模式 (STDIO 或 SSE) 启动 MySQL MCP 服务器。
- STDIO 模式: 通常由 MCP 客户端 (如 Cursor, Cline) 自动启动,无需手动启动。
- SSE 模式: 需要在终端中手动运行 'uv run operatemysql.py' (或 'python operatemysql.py') 启动。
-
在 LLM 客户端中使用: 在支持 MCP 协议的 LLM 客户端中 (如 Cursor, Cline),配置上述相应的服务器 JSON 信息。
-
通过 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" 部分和提供的效果图片,了解更具体的使用示例。
信息
分类
数据库与文件