M

MySQL MCP(支持各种IDE,兼容Spring AI调用)

Mxy041006/mysql-mcp-server
1 Stars 86 次浏览 更新于 2026-08-23

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "mysql": {
      "args": [
        "-y",
        "@yang04/mysql-mcp-server"
      ],
      "command": "npx",
      "env": {
        "ALLOW_WRITE": "true",
        "MYSQL_DATABASE": "",
        "MYSQL_HOST": "",
        "MYSQL_PASSWORD": "",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root"
      }
    }
  }
}

服务介绍

@yang04/mysql-mcp-server

一个基于 TypeScript 的 MySQL MCP(Model Context Protocol)服务端,允许 LLM(如 Claude)通过标准 MCP 协议安全地与 MySQL 数据库进行交互。

功能特性

  • 🔍 数据库浏览 — 列出数据库、表、索引、约束等结构信息
  • 📊 安全查询 — 参数化查询、SQL 注入防护、结果行数限制
  • ✏️ 写操作支持 — 可选启用 INSERT / UPDATE / DELETE(需显式开启)
  • 🔒 安全防护 — 危险语句过滤(DROP / TRUNCATE 等)、WHERE 条件强制检查
  • ⏱️ 查询超时 — 自动注入超时控制,防止长时间运行的查询
  • 🔌 即插即用 — 支持 npx 一键运行,无需 clone 和构建

快速开始

方式一:npx 直接运行(推荐)

无需安装,直接在 MCP 客户端配置中使用:

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["-y", "@yang04/mysql-mcp-server"],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database",
        "ALLOW_WRITE": "true",
        "CONNECTION_LIMIT":"5",
        "QUERY_TIMEOUT":"30000",
        "MAX_RESULTS":"1000"
      }
    }
  }
}

方式二:全局安装后使用

npm install -g @yang04/mysql-mcp-server
{
  "mcpServers": {
    "mysql": {
      "command": "mysql-mcp-server",
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database",
        "ALLOW_WRITE": "true",
        "CONNECTION_LIMIT":"5",
        "QUERY_TIMEOUT":"30000",
        "MAX_RESULTS":"1000"
      }
    }
  }
}

环境变量

变量 必填 默认值 说明
MYSQL_HOST localhost MySQL 主机地址
MYSQL_PORT 3306 MySQL 端口
MYSQL_USER MySQL 用户名
MYSQL_PASSWORD MySQL 密码
MYSQL_DATABASE 默认数据库名
ALLOW_WRITE false 是否启用写操作(INSERT / UPDATE / DELETE)
CONNECTION_LIMIT 5 连接池大小
QUERY_TIMEOUT 30000 查询超时时间(毫秒)
MAX_RESULTS 1000 SELECT 查询最大返回行数

客户端配置

Claude Desktop

编辑 claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Trae IDE

在项目根目录创建 .trae/mcp.json

Cursor / Windsurf

在 MCP 设置中添加上述配置。

工具列表

只读工具(默认可用)

工具 说明 参数
list_databases 列出所有可访问的数据库
list_tables 列出指定数据库中的所有表 database?
describe_table 获取表的详细结构信息 table, database?
execute_query 执行安全的 SELECT 查询 sql, params?, database?
explain_query 获取查询执行计划 sql, database?
show_indexes 显示表的索引信息 table, database?
show_constraints 显示表的外键和唯一约束 table, database?
show_create_table 获取创建表的 DDL 语句 table, database?
get_table_stats 获取表的统计信息(行数、大小等) table, database?
search_columns 按名称模式搜索列 pattern, database?

写操作工具(需 ALLOW_WRITE=true

工具 说明 参数
insert_data 向表中插入数据 table, data, database?
update_data 更新表中符合条件的数据 table, data, where, whereParams?, database?
delete_data 删除表中符合条件的数据 table, where, whereParams?, database?
execute_write_query 执行自定义写 SQL sql, params?, database?

使用示例

以下是在 Claude 中使用该 MCP 服务的典型对话示例:

浏览数据库结构

你:帮我看看当前数据库有哪些表

Claude 调用 list_tables → 返回所有表名列表

你:看一下 sys_user 表的结构

Claude 调用 describe_table → 返回列名、类型、约束等详细信息

查询数据

你:查询 sys_user 表中前 10 条数据

Claude 调用 execute_query → SELECT * FROM sys_user LIMIT 10

你:分析一下 SELECT * FROM orders WHERE status = 'pending' 的执行计划

Claude 调用 explain_query → 返回 EXPLAIN 结果

搜索列

你:帮我找一下哪些表有 email 相关的列

Claude 调用 search_columns → pattern: "%email%"

写操作(需启用 ALLOW_WRITE=true)

你:向 sys_config 表插入一条配置

Claude 调用 insert_data → table: "sys_config", data: [{key: "theme", value: "dark"}]

你:把 id 为 1 的用户状态改为启用

Claude 调用 update_data → table: "sys_user", data: {status: 1}, where: "id = ?"

安全机制

机制 说明
只读默认 未启用 ALLOW_WRITE 时,只暴露只读工具
SQL 注入防护 所有查询使用参数化查询,禁止拼接用户输入
危险语句过滤 阻止 DROPTRUNCATEGRANTREVOKE 等操作
WHERE 条件强制 UPDATE 和 DELETE 必须包含 WHERE 条件
查询超时 默认 30 秒超时,防止长时间运行的查询
结果行数限制 默认最大返回 1000 行

推荐安全实践

建议为 MCP 服务创建一个专用的 MySQL 只读用户:

CREATE USER 'mcp_readonly'@'localhost' IDENTIFIED BY 'secure_password';
GRANT SELECT, SHOW VIEW ON your_database.* TO 'mcp_readonly'@'localhost';
FLUSH PRIVILEGES;

如果需要写操作,创建一个权限受限的用户:

CREATE USER 'mcp_writer'@'localhost' IDENTIFIED BY 'secure_password';
GRANT SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ON your_database.* TO 'mcp_writer'@'localhost';
FLUSH PRIVILEGES;

技术栈

  • TypeScript + Node.js (ESM)
  • @modelcontextprotocol/sdk — MCP 协议实现
  • mysql2 — MySQL 驱动(连接池 + Promise)
  • zod — 参数 Schema 定义与校验

License

MIT

相关 MCP 服务