MySQL数据库查询服务

一个提供MySQL数据库查询能力的Model Context Protocol (MCP)服务器,允许AI助手通过标准化接口与MySQL数据库交互。

  • by douglasaxel
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 douglasaxel/mysql-mcp

使用说明

MySQL MCP 服务器

一个提供MySQL数据库查询功能的模型上下文协议(MCP)服务器。该服务器允许AI助手通过标准化接口与MySQL数据库进行交互。

特点/特性

  • 执行带有预编译语句支持的SQL查询
  • 列出数据库和表
  • 描述表结构
  • 使用环境变量进行安全的连接管理
  • 错误处理和连接恢复
  • 支持所有MySQL数据类型

安装

  1. 克隆或下载此项目

  2. 安装依赖项:

    npm install
    
  3. 复制环境配置:

    cp .env.example .env
    
  4. 在(此处)配置您的MySQL连接 .env:

    MYSQL_HOST=localhost
    MYSQL_PORT=3306
    MYSQL_USER=your_username
    MYSQL_PASSWORD=your_password
    MYSQL_DATABASE=your_database
    

使用方法

运行服务器

# Start the server
npm start

# Development mode with auto-restart
npm run dev

可用工具

1. mysql_query

执行带有可选预编译语句参数的SQL查询。

参数:

  • query (必填):要执行的SQL查询
  • parameters (可选):预编译语句的参数数组

示例:

-- Simple SELECT
SELECT * FROM users LIMIT 10

-- Prepared statement with parameters
SELECT * FROM users WHERE age > ? AND city = ?
-- Parameters: ["25", "New York"]

-- INSERT with prepared statement
INSERT INTO users (name, email, age) VALUES (?, ?, ?)
-- Parameters: ["John Doe", "john@example.com", "30"]

2. mysql_describe_table

获取特定表的结构。

参数:

  • table_name (必填):要描述的表的名称

3. mysql_list_tables

列出当前数据库中的所有表。

参数: 无

4. mysql_list_databases

列出当前用户可访问的所有数据库。

参数: 无

与MCP客户端的配置

Claude Desktop(可译为“Claude桌面版”或保持原样,根据上下文判断是否需要具体化为“Claude桌面应用程序”等)

将此服务器添加到您的Claude Desktop配置文件中:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS(苹果电脑操作系统): ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["path/to/mysql-mcp/server.js"],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your_username",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database"
      }
    }
  }
}

其他MCP客户端

此服务器遵循标准的MCP协议,应能与任何兼容的客户端正常工作。请参阅客户端的文档以获取配置详情。

安全考虑因素

  1. 环境变量永远不要让你的 .env 使用实际凭据的文件
  2. 数据库权限使用具有最小必要权限的数据库用户
  3. 网络安全确保您的MySQL服务器已妥善安全保护
  4. 查询验证服务器按提供的查询执行 - 请确保您的AI助手已正确配置

数据库权限

为了安全起见,请为MCP服务器创建一个专用的MySQL用户:

-- Create a dedicated user
CREATE USER 'mcp_user'@'localhost' IDENTIFIED BY 'secure_password';

-- Grant necessary permissions (adjust as needed)
GRANT SELECT, INSERT, UPDATE, DELETE ON your_database.* TO 'mcp_user'@'localhost';

-- For read-only access, use only:
-- GRANT SELECT ON your_database.* TO 'mcp_user'@'localhost';

-- Apply changes
FLUSH PRIVILEGES;

故障排除

连接问题

  1. 检查MySQL服务器状态:

    # Linux/macOS
    sudo systemctl status mysql
    
    # Windows (if using MySQL service)
    net start mysql
    
  2. 验证连接参数 .env

  3. 检查MySQL用户权限:

    SHOW GRANTS FOR 'your_username'@'localhost';
    

常见错误

  • **“访问被拒绝”**检查用户名/密码 .env
  • **“未知数据库”**验证数据库名称是否存在
  • **“连接被拒绝”**检查MySQL服务器是否正在运行,以及主机/端口是否正确

发展

项目结构

mysql-mcp/
├── server.js          # Main MCP server implementation
├── package.json       # Node.js dependencies and scripts
├── .env.example       # Environment configuration template
├── .env               # Your local configuration (not in git)
├── README.md          # This file
└── .gitignore         # Git ignore rules

添加新工具

要添加新的数据库工具,请扩展(或“进行扩展”) setupToolHandlers() 方法在 server.js:

  1. 在(相应位置)添加工具定义 ListToolsRequestSchema 处理程序(或:处理器)
  2. 加入这个案例 CallToolRequestSchema 处理程序(或处理器)
  3. 实现处理程序方法

许可证

ISC许可证

做出贡献

  1. 为仓库创建分支(或:克隆仓库)
  2. 创建一个特性分支
  3. 做出你的更改
  4. 彻底测试
  5. 提交一个拉取请求

支持

对于问题和疑问:

  1. 查看故障排除部分
  2. 查阅MySQL和MCP文档
  3. 在项目仓库中创建一个问题