mysql-mcp-server

mysql-mcp-server

3.4

If you are the rightful owner of mysql-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

MCP MySQL Server is a MySQL tool service based on the Model Context Protocol SDK, designed for AI agents and automation tools.

MCP MySQL Server

项目简介

MCP MySQL Server 是一个基于 @modelcontextprotocol/sdk 的 MySQL 工具服务,支持 SQL 查询、表结构获取、连接检测等功能,适用于 AI 代理、自动化工具等场景。

主要功能

  • 执行 SQL 查询(SELECT、INSERT、UPDATE、DELETE)
  • 获取数据库表结构信息
  • 检测数据库连接状态
  • SQL 语句和参数安全校验
  • 优雅的服务启动与关闭

架构说明

  • 入口文件src/index.js 启动和管理 MCP 服务器实例
  • 服务实现src/server.js 实现 MCP Server,注册工具、处理请求
  • 数据库管理src/database.js 管理 MySQL 连接池、执行 SQL、获取表结构
  • 配置管理src/config.js 支持 .env 环境变量和默认配置
  • 安全校验src/validators.js 校验 SQL 语句和参数,防止危险操作和注入

安装与使用

  1. 克隆项目
    git clone https://github.com/yourname/mcp-mysql-server.git
    cd mcp-mysql-server
    
  2. 安装依赖
    npm install
    
  3. 配置数据库连接(可选,支持 .env 文件)
    DB_HOST=localhost
    DB_PORT=3306
    DB_USER=root
    DB_PASSWORD=yourpassword
    DB_NAME=yourdatabase
    
  4. 启动服务
    node src/index.js
    

配置说明

  • 支持通过环境变量或 .env 文件配置数据库和服务参数
  • 主要配置项见 src/config.js

主要实现细节

  • 使用 mysql2/promise 实现高效的连接池和异步 SQL 执行
  • 所有 SQL 语句和参数均经过安全校验,防止危险操作和 SQL 注入
  • MCP Server 支持三大工具:
    • execute_sql:执行 SQL 查询
    • get_tables_info:获取所有表及字段结构
    • get_connection_status:检测数据库连接
  • 优雅处理进程信号,支持平滑关闭

安全性说明

  • 禁止 DROP/TRUNCATE/ALTER 等危险操作
  • 检查常见 SQL 注入模式
  • 限制参数数量,防止滥用
  • 禁用多语句执行

在 Cursor 中 验证 开发的 MCP Server 是否能运行

Cursor 添加 MCP Server

通过 Cursor Settings -> MCP Add new global MCP server,可以将 MCP 服务添加为全局可用。这意味着你配置的 MCP 服务将在所有项目中生效。

也可以只针对 项目级别 添加

在项目的 .cursor目录下,新建一个 mcp.json文件进行配置,这样的设置只会对特定项目生效。

mcp server 的格式是如何呢

配置 server 基本格式规范

{
  "mcpServers": {
    "<server-name>": {
      "command": "<启动命令>",
      "args": ["<参数1>", "<参数2>", ...],
      "env": {
        "<环境变量名1>": "<值1>",
        "<环境变量名2>": "<值2>",
        ...
      },
      "transport": "<传输协议>",
      "port": <端口号>,
      "host": "<主机地址>"
    }
  }
}

查询数据库表和字段信息

查看当前数据库是否连接

查询表里数据

看到这里,是不是觉得很神奇?我们用自然语言描述需求,AI助手自动生成并执行SQL,然后分析结果给出结论。

依赖

贡献方式

欢迎提交 Issue 和 PR 参与贡献!

许可证

ISC License