返回市场
MySQL MCP 服务器

MySQL MCP 服务器

作者:blackdesert54102 星标更新:2025-11-21

项目介绍

MySQL MCP 服务器

一个功能齐全的MySQL模型上下文协议(MCP)服务器,提供数据库管理功能。

特性

  • ✅ 数据库管理:创建、删除和列出数据库
  • ✅ 表管理:创建、删除、列出和描述表结构
  • ✅ CRUD 操作:查询、插入、更新和删除数据
  • ✅ SQL 执行:执行任何SQL语句
  • ✅ 连接管理:测试连接,切换数据库
  • ✅ 架构查询:获取完整的数据库结构信息(支持自然语言到SQL的转换)

安装

预备条件

  • Node.js 18+
  • 已安装并运行的MySQL服务器
net start mysql80

安装步骤

  1. 克隆仓库:
git clone https://github.com/blackdesert5410/mysql-mcp-server.git
cd mysql-mcp-server
  1. 安装依赖:
npm install

配置

方法 1:命令行参数(推荐)

启动时通过命令行参数传递MySQL用户名和密码:

node src/index.js <用户名> <密码>

示例

node src/index.js root your_password

方法 2:环境变量

  1. 复制示例配置文件:
cp config.example.env .env
  1. 编辑.env文件,填写你的MySQL配置:
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=
  1. 启动服务器(不需要命令行参数):
node src/index.js

优先级:命令行参数 > 环境变量 > 默认值

使用说明

启动服务器

# 使用命令行参数
node src/index.js <用户名> <密码>

# 或使用 npm start(需要先配置环境变量)
npm start

在光标中配置

  1. 打开光标的MCP配置文件(通常在~/.cursor/mcp.json%APPDATA%\Cursor\mcp.json

  2. 添加以下配置:

Windows路径格式(建议使用正斜杠):

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": [
        "D:/AI/mcp-server/src/index.js",
        "your_username",
        "your_password"
      ]
    }
  }
}

或者使用双反斜杠:

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": [
        "D:\\AI\\mcp-server\\src\\index.js",
        "your_username",
        "your_password"
      ]
    }
  }
}

如果Node.js不在PATH中,请使用完整路径:

{
  "mcpServers": {
    "mysql": {
      "command": "C:/Program Files/nodejs/node.exe",
      "args": [
        "D:/AI/mcp-server/src/index.js",
        "your_username",
        "your_password"
      ]
    }
  }
}

注意

  • 替换路径为你实际的项目路径
  • your_usernameyour_password替换为你的MySQL用户名和密码
  • Windows路径使用正斜杠/或双反斜杠\\
  • 修改配置后需要重启光标才能生效

在其他MCP客户端中使用

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": [
        "/path/to/mysql-mcp-server/src/index.js",
        "your_username",
        "your_password"
      ]
    }
  }
}

可用工具

数据库管理

  1. test_connection - 测试MySQL连接
  2. list_databases - 列出所有数据库
  3. create_database - 创建新数据库
  4. drop_database - 删除数据库
  5. use_database - 选择要使用的数据库

表管理

  1. list_tables - 列出数据库中的所有表
  2. describe_table - 描述表结构
  3. create_table - 创建新表
  4. drop_table - 删除表

数据操作(CRUD)

  1. select - 执行SELECT查询
  2. insert - 将数据插入表中
  3. update - 更新表中的数据
  4. delete - 从表中删除数据

SQL执行

  1. execute_sql - 执行SQL查询或命令

架构查询(自然语言到SQL特定)⭐

  1. get_database_schema - 获取整个数据库的完整架构信息(所有表、列、类型、约束、外键关系)
  2. get_table_schema - 获取指定表的完整架构信息(列名、数据类型、约束、默认值、是否可为空等)
  3. get_foreign_keys - 获取表的外键关系信息(理解表之间的关系)
  4. get_indexes - 获取表的索引信息
  5. get_table_info - 获取表的统计信息(行数、引擎类型等)
  6. get_sample_data - 获取表的样本数据(帮助理解数据结构和内容)

自然语言到SQL的支持

MCP服务完全支持代理将自然语言转换为SQL查询。通过以下工具,代理可以:

  1. 理解数据库结构

    • 使用get_database_schema获取整个数据库的完整结构
    • 使用get_table_schema获取特定表的详细列信息
    • 使用get_foreign_keys理解表之间的关联
  2. 理解数据内容

    • 使用get_sample_data查看样本数据,了解数据格式和内容
    • 使用get_table_info了解表的统计信息
  3. 生成并执行SQL

    • 根据架构信息生成准确的SQL查询
    • 使用execute_sql执行生成的SQL
    • 或方便地使用selectinsertupdatedelete工具

典型工作流程

当用户说“查找所有年龄超过25岁的用户”时,代理可以:

  1. 使用get_database_schemalist_tables找到用户表
  2. 使用get_table_schema查看用户表的结构,并确认年龄字段的名称(例如age
  3. 使用get_sample_data查看样本数据,了解数据格式
  4. 生成SQL:SELECT * FROM users WHERE age > 25
  5. 使用execute_sql执行查询并返回结果

故障排除

常见问题

  1. 未连接"错误

    • 检查配置文件路径是否正确
    • 确保Node.js在系统PATH中或使用完整路径
    • 重新启动光标应用程序
    • 验证MySQL服务是否正在运行(Windows:net start mysql80
  2. 连接失败

    • 确保MySQL服务已启动
    • 检查用户名和密码是否正确
    • 验证MySQL端口(默认3306)是否可访问
  3. 路由问题

    • Windows路径建议使用正斜杠/或双反斜杠\\
    • 确保路径中的文件确实存在
  4. 依赖问题

    • 运行npm install确保所有依赖项均已安装
    • 确保使用版本18+的Node.js

更多故障排除信息,请参阅TROUBLESHOOTING.md

注意事项

  • 确保MySQL服务已启动(Windows:net start mysql80
  • 用户名和密码通过命令行参数或环境变量传递
  • 确保Node.js已安装并且可以在命令行中使用
  • 对于自然语言到SQL的转换,建议首先使用架构查询工具来理解数据库结构
  • 不要将包含真实密码的配置文件提交到Git仓库

贡献

欢迎提交Issue和Pull Requests!