mcp-server-mysql
mcp-server-mysql 是一款基于 Node.js 开发的开源工具,旨在让大语言模型(如 Claude)安全地连接并操作 MySQL 数据库。它遵循模型上下文协议(MCP),使 AI 能够直接 inspect 数据库架构、执行只读查询,甚至在配置允许时进行数据写入操作。
该工具主要解决了 AI 在开发过程中无法直接访问真实数据库环境的痛点。通过它,开发者可以让 AI 助手理解现有的表结构,辅助编写复杂的 SQL 语句,或自动检查数据一致性,从而大幅提升数据库相关的开发效率与准确性。
mcp-server-mysql 特别适合后端开发者、全栈工程师以及需要频繁与数据库交互的 AI 应用构建者使用。无论是本地调试还是远程协作,它都能提供流畅的体验。
其独特的技术亮点包括对 SSH 隧道的原生支持,这意味着它可以安全地连接位于远程服务器上的数据库,而无需暴露端口到公网。此外,该版本专门针对 Claude Code CLI 进行了优化,支持隧道自动启停管理,并允许灵活配置多项目环境与细粒度的权限控制(如单独开启插入或更新权限),在保障数据安全的前提下提供了极高的灵活性。
使用场景
某电商公司的后端工程师需要在不中断线上服务的前提下,快速排查生产环境 MySQL 数据库中订单表的异常数据并验证修复方案。
没有 mcp-server-mysql 时
- 上下文割裂严重:工程师必须在 IDE 编写代码、切换终端登录 SSH 跳板机、再打开数据库客户端查看表结构,频繁切换窗口导致思路中断。
- 手动操作风险高:为了安全,需人工复制表结构到对话框询问 AI,容易因复制遗漏字段或拼写错误导致生成的 SQL 不可用。
- 远程连接繁琐:每次查询生产库都要手动建立 SSH 隧道,过程耗时且容易因配置错误连接失败,无法实现“即问即查”。
- 反馈循环漫长:AI 给出的查询建议无法直接验证,工程师需手动执行并截图反馈,多轮对话效率极低。
使用 mcp-server-mysql 后
- 工作流无缝集成:在 Claude Code 中直接对话,mcp-server-mysql 自动通过内置 SSH 隧道连接远程库,无需离开编辑器即可读取实时表结构。
- 精准生成可执行 SQL:LLM 直接 inspect 数据库元数据,生成的查询语句字段准确无误,支持只读预览甚至受控的 DDL 操作(如创建临时测试表)。
- 自动化安全管理:工具自动处理 SSH 隧道的启动与关闭,既保证了生产库的安全访问,又免去了手动配置端口的麻烦。
- 即时验证闭环:工程师让 AI 直接执行查询并返回结果摘要,几秒钟内即可完成从“发现问题”到“验证假设”的全过程。
mcp-server-mysql 通过将数据库上下文直接注入大模型,把原本碎片化、高风险的人工排查流程转变为流畅、安全的自动化对话式开发体验。
运行环境要求
- 未说明
不需要 GPU
未说明

快速开始
MySQL 的 MCP 服务器 - Claude Code 版
🚀 这是一个针对 Claude Code 优化的修改版本,支持 SSH 隧道
原作者: @benborla29
原始仓库: https://github.com/benborla/mcp-server-mysql
许可证: MIT
基于 NodeJS 的 MySQL 的 MCP 服务器
本分支的主要特性
- ✅ Claude Code 集成 - 针对 Anthropic 的 Claude Code CLI 进行优化
- ✅ SSH 隧道支持 - 内置对远程数据库的 SSH 隧道支持
- ✅ 自动启动/停止钩子 - 与 Claude 的启动/停止功能无缝对接,自动管理隧道
- ✅ DDL 操作支持 - 添加了
MYSQL_DISABLE_READ_ONLY_TRANSACTIONS环境变量,支持 CREATE TABLE 操作 - ✅ 多项目配置 - 轻松为多个项目配置不同的数据库
Claude Code 用户快速入门
- 阅读设置指南: 请参阅 PROJECT_SETUP_GUIDE.md,获取详细说明
- 配置 SSH 隧道: 设置远程数据库的自动 SSH 隧道
- 与 Claude 配合使用: 集成的 MCP 服务器可与 Claude Code 无缝协作
这是一个通过 SSH 隧道提供 MySQL 数据库访问的 Model Context Protocol 服务器。该服务器使 Claude 及其他大语言模型能够安全地检查数据库模式并执行 SQL 查询。
目录
要求
- Node.js v20 或更高版本
- MySQL 5.7 或更高版本(推荐使用 MySQL 8.0+)
- 具备所需操作权限的 MySQL 用户
- 对于写操作:具备 INSERT、UPDATE 和/或 DELETE 权限的 MySQL 用户
安装
使用 Smithery
有多种方式可以安装和配置 MCP 服务器,但最常见的方式是访问此网站 https://smithery.ai/server/@benborla29/mcp-server-mysql
Cursor
对于 Cursor IDE,您可以在项目中使用以下命令安装此 MCP 服务器:
- 访问 https://smithery.ai/server/@benborla29/mcp-server-mysql
- 按照 Cursor 的指示操作
MCP Get 提供了一个集中式的 MCP 服务器注册表,简化了安装流程。
Codex CLI
Codex CLI 的安装方式与 Claude Code 类似:
codex mcp add mcp_server_mysql \
--env MYSQL_HOST="127.0.0.1" \
--env MYSQL_PORT="3306" \
--env MYSQL_USER="root" \
--env MYSQL_PASS="your_password" \
--env MYSQL_DB="your_database" \
--env ALLOW_INSERT_OPERATION="false" \
--env ALLOW_UPDATE_OPERATION="false" \
--env ALLOW_DELETE_OPERATION="false" \
-- npx -y @benborla29/mcp-server-mysql
Claude Code
方法一:从 Claude Desktop 导入(已配置时推荐)
如果您已经在 Claude Desktop 中配置了此 MCP 服务器,可以直接导入:
claude mcp add-from-claude-desktop
这将弹出一个交互式对话框,您可以选择要导入的 mcp_server_mysql 服务器,并保留所有现有配置。
方法二:手动配置
使用 NPM/PNPM 全局安装:
首先,全局安装该包:
# 使用 npm
npm install -g @benborla29/mcp-server-mysql
# 使用 pnpm
pnpm add -g @benborla29/mcp-server-mysql
然后将服务器添加到 Claude Code:
claude mcp add mcp_server_mysql \
-e MYSQL_HOST="127.0.0.1" \
-e MYSQL_PORT="3306" \
-e MYSQL_USER="root" \
-e MYSQL_PASS="your_password" \
-e MYSQL_DB="your_database" \
-e ALLOW_INSERT_OPERATION="false" \
-e ALLOW_UPDATE_OPERATION="false" \
-e ALLOW_DELETE_OPERATION="false" \
-- npx @benborla29/mcp-server-mysql
使用本地仓库(用于开发):
如果您是从克隆的仓库运行:
claude mcp add mcp_server_mysql \
-e MYSQL_HOST="127.0.0.1" \
-e MYSQL_PORT="3306" \
-e MYSQL_USER="root" \
-e MYSQL_PASS="your_password" \
-e MYSQL_DB="your_database" \
-e ALLOW_INSERT_OPERATION="false" \
-e ALLOW_UPDATE_OPERATION="false" \
-e ALLOW_DELETE_OPERATION="false" \
-e PATH="/path/to/node/bin:/usr/bin:/bin" \
-e NODE_PATH="/path/to/node/lib/node_modules" \
-- /path/to/node /full/path/to/mcp-server-mysql/dist/index.js
请替换:
/path/to/node为您 Node.js 可执行文件的路径(可通过which node查找)/full/path/to/mcp-server-mysql为您的克隆仓库的完整路径- 更新 MySQL 凭证以匹配您的环境
使用 Unix 套接字连接:
对于使用 Unix 套接字的本地 MySQL 实例:
claude mcp add mcp_server_mysql \
-e MYSQL_SOCKET_PATH="/tmp/mysql.sock" \
-e MYSQL_USER="root" \
-e MYSQL_PASS="your_password" \
-e MYSQL_DB="your_database" \
-e ALLOW_INSERT_OPERATION="false" \
-e ALLOW_UPDATE_OPERATION="false" \
-e ALLOW_DELETE_OPERATION="false" \
-- npx @benborla29/mcp-server-mysql
选择合适的范围
根据您的需求选择合适的范围:
# 本地范围(默认):仅在当前项目中可用
claude mcp add mcp_server_mysql [选项...]
# 用户范围:在所有项目中均可使用
claude mcp add mcp_server_mysql -s user [选项...]
# 项目范围:可通过 .mcp.json 文件与团队成员共享
claude mcp add mcp_server_mysql -s project [选项...]
对于包含凭据的数据库服务器,建议使用 本地 或 用户 范围,以保护凭据的安全性。
验证
添加服务器后,请验证其是否正确配置:
# 列出所有已配置的服务器
claude mcp list
# 获取您的 MySQL 服务器的详细信息
claude mcp get mcp_server_mysql
# 在 Claude Code 中检查服务器状态
/mcp
多数据库配置
对于多数据库模式,省略 MYSQL_DB 环境变量:
claude mcp add mcp_server_mysql_multi \
-e MYSQL_HOST="127.0.0.1" \
-e MYSQL_PORT="3306" \
-e MYSQL_USER="root" \
-e MYSQL_PASS="your_password" \
-e MULTI_DB_WRITE_MODE="false" \
-- npx @benborla29/mcp-server-mysql
高级配置
如需使用高级功能,请添加以下环境变量:
claude mcp add mcp_server_mysql \
-e MYSQL_HOST="127.0.0.1" \
-e MYSQL_PORT="3306" \
-e MYSQL_USER="root" \
-e MYSQL_PASS="your_password" \
-e MYSQL_DB="your_database" \
-e MYSQL_POOL_SIZE="10" \
-e MYSQL_QUERY_TIMEOUT="30000" \
-e MYSQL_CACHE_TTL="60000" \
-e MYSQL_RATE_LIMIT="100" \
-e MYSQL_SSL="true" \
-e ALLOW_INSERT_OPERATION="false" \
-e ALLOW_UPDATE_OPERATION="false" \
-e ALLOW_DELETE_OPERATION="false" \
-e MYSQL_ENABLE_LOGGING="true" \
-- npx @benborla29/mcp-server-mysql
Claude Code 设置故障排除
服务器连接问题:在 Claude Code 中使用
/mcp命令检查服务器状态,并在必要时进行身份验证。路径问题:如果使用本地仓库,请确保 Node.js 路径已正确设置:
# 查找 Node.js 路径 which node # 对于 PATH 环境变量 echo "$(which node)/../" # 对于 NODE_PATH 环境变量 echo "$(which node)/../../lib/node_modules"权限错误:请确保您的 MySQL 用户拥有您所启用操作的相应权限。
服务器未启动:检查 Claude Code 日志或直接运行服务器以进行调试:
# 直接测试服务器 npx @benborla29/mcp-server-mysql
使用 NPM/PNPM
手动安装方法如下:
# 使用 npm
npm install -g @benborla29/mcp-server-mysql
# 使用 pnpm
pnpm add -g @benborla29/mcp-server-mysql
手动安装完成后,您需要配置您的 LLM 应用程序以使用 MCP 服务器(请参阅下方的配置部分)。
从本地仓库运行
如果您希望直接从源代码克隆并运行此 MCP 服务器,请按照以下步骤操作:
克隆仓库
git clone https://github.com/benborla/mcp-server-mysql.git cd mcp-server-mysql安装依赖项
npm install # 或 pnpm install构建项目
npm run build # 或 pnpm run build配置 Claude Desktop
将以下内容添加到您的 Claude Desktop 配置文件 (
claude_desktop_config.json) 中:{ "mcpServers": { "mcp_server_mysql": { "command": "/path/to/node", "args": [ "/full/path/to/mcp-server-mysql/dist/index.js" ], "env": { "MYSQL_HOST": "127.0.0.1", "MYSQL_PORT": "3306", "MYSQL_USER": "root", "MYSQL_PASS": "your_password", "MYSQL_DB": "your_database", "ALLOW_INSERT_OPERATION": "false", "ALLOW_UPDATE_OPERATION": "false", "ALLOW_DELETE_OPERATION": "false", "PATH": "/path/to/node/bin:/usr/bin:/bin", // <--- 重要:请运行 `echo "$(which node)/../"` 来获取路径 "NODE_PATH": "/path/to/node/lib/node_modules" // <--- 重要:请运行 `echo "$(which node)/../../lib/node_modules"` 来获取路径 } } } }替换:
/path/to/node为您的 Node.js 可执行文件的完整路径(可通过which node查找)/full/path/to/mcp-server-mysql为您克隆仓库的完整路径- 根据您的环境设置 MySQL 凭证
测试服务器
# 直接运行服务器进行测试 node dist/index.js如果成功连接到 MySQL,则可以将其与 Claude Desktop 一起使用。
远程模式运行
要在远程模式下运行,您需要向 npx 脚本提供 环境变量。
在首选目录中创建
.env文件:# 创建 .env 文件 touch .env复制并粘贴此仓库中的 示例文件
根据您的环境设置 MySQL 凭证
设置
IS_REMOTE_MCP=true设置一个安全的字符串作为
REMOTE_SECRET_KEY如有需要,可自定义
PORT。默认值为 3000。在当前会话中加载变量:
source .env运行服务器:
npx @benborla29/mcp-server-mysql配置您的代理以通过以下配置连接到 MCP:
{ "mcpServers": { "mysql": { "url": "http://your-host:3000/mcp", "type": "streamableHttp", "headers": { "Authorization": "Bearer <REMOTE_SECRET_KEY>" } } } }
组件
工具
- mysql_query
- 对连接的数据库执行 SQL 查询
- 输入:
sql(字符串):要执行的 SQL 查询 - 默认情况下,仅限只读操作
- 可选写入操作(通过配置启用):
- INSERT:向表中添加新数据(需设置
ALLOW_INSERT_OPERATION=true) - UPDATE:修改现有数据(需设置
ALLOW_UPDATE_OPERATION=true) - DELETE:删除数据(需设置
ALLOW_DELETE_OPERATION=true)
- INSERT:向表中添加新数据(需设置
- 所有操作均在事务中执行,并妥善处理提交和回滚
- 支持预处理语句以安全地处理参数
- 可配置查询超时时间和结果分页
- 内置查询执行统计信息
资源
服务器提供全面的数据库信息:
- 表结构
- 每个表的 JSON 模式信息
- 列名和数据类型
- 索引信息和约束条件
- 外键关系
- 表统计信息和指标
- 自动从数据库元数据中发现
安全特性
- 通过预处理语句防止 SQL 注入
- 查询白名单/黑名单功能
- 查询执行速率限制
- 查询复杂度分析
- 可配置的连接加密
- 强制执行只读事务
性能优化
- 优化的连接池
- 查询结果缓存
- 大型结果集流式传输
- 查询执行计划分析
- 可配置的查询超时时间
监控与调试
- 全面的查询日志记录
- 性能指标收集
- 错误跟踪与报告
- 健康检查端点
- 查询执行统计信息
配置
使用 Smithery 自动配置
如果您使用 Smithery 进行安装,您的配置已经设置完毕。您可以通过以下命令查看或修改配置:
smithery configure @benborla29/mcp-server-mysql
在重新配置时,您可以更新 MySQL 的连接信息以及写操作的相关设置:
基本连接设置:
- MySQL 主机、端口、用户名、密码、数据库
- SSL/TLS 配置(如果您的数据库需要安全连接)
写操作权限:
- 允许 INSERT 操作:如果您希望允许添加新数据,请将其设置为
true - 允许 UPDATE 操作:如果您希望允许更新现有数据,请将其设置为
true - 允许 DELETE 操作:如果您希望允许删除数据,请将其设置为
true
- 允许 INSERT 操作:如果您希望允许添加新数据,请将其设置为
出于安全考虑,默认情况下所有写操作均被禁用。请仅在您明确需要 Claude 修改数据库数据时才启用这些设置。
高级配置选项
为了更精细地控制 MCP 服务器的行为,您可以使用以下高级配置选项:
{
"mcpServers": {
"mcp_server_mysql": {
"command": "/path/to/npx/binary/npx",
"args": [
"-y",
"@benborla29/mcp-server-mysql"
],
"env": {
// 基本连接设置
"MYSQL_HOST": "127.0.0.1",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASS": "",
"MYSQL_DB": "db_name",
"PATH": "/path/to/node/bin:/usr/bin:/bin",
// 性能设置
"MYSQL_POOL_SIZE": "10",
"MYSQL_QUERY_TIMEOUT": "30000",
"MYSQL_CACHE_TTL": "60000",
// 安全设置
"MYSQL_RATE_LIMIT": "100",
"MYSQL_MAX_QUERY_COMPLEXITY": "1000",
"MYSQL_SSL": "true",
// 监控设置
"ENABLE_LOGGING": "true",
"MYSQL_LOG_LEVEL": "info",
"MYSQL_METRICS_ENABLED": "true",
// 写操作标志
"ALLOW_INSERT_OPERATION": "false",
"ALLOW_UPDATE_OPERATION": "false",
"ALLOW_DELETE_OPERATION": "false"
}
}
}
}
环境变量
基本连接
MYSQL_SOCKET_PATH:用于本地连接的 Unix 套接字路径(例如"/tmp/mysql.sock")MYSQL_HOST:MySQL 服务器主机(默认值为127.0.0.1),若设置了MYSQL_SOCKET_PATH则忽略此设置MYSQL_PORT:MySQL 服务器端口(默认值为3306),若设置了MYSQL_SOCKET_PATH则忽略此设置MYSQL_USER:MySQL 用户名(默认值为root)MYSQL_PASS:MySQL 密码MYSQL_DB:目标数据库名称(留空则进入多数据库模式)
替代方案:连接字符串
对于需要频繁轮换凭据或临时连接的场景,您可以使用 MySQL 连接字符串代替单独的环境变量:
MYSQL_CONNECTION_STRING:MySQL CLI 格式的连接字符串(例如mysql --default-auth=mysql_native_password -A -hHOST -PPORT -uUSER -pPASS database_name)
当提供了 MYSQL_CONNECTION_STRING 时,它将优先于单独的连接设置。这在以下情况下尤为有用:
- 凭据经常过期且需要轮换
- 临时数据库连接
- 快速测试不同的数据库配置
注意:出于安全考虑,此设置应仅通过环境变量进行配置,而不应存储在版本控制的配置文件中。对于会过期的凭据,建议在 Claude Code 的 MCP 配置中使用 prompt 输入类型。
性能配置
MYSQL_POOL_SIZE:连接池大小(默认值为10)MYSQL_QUERY_TIMEOUT:查询超时时间,单位为毫秒(默认值为30000)MYSQL_CACHE_TTL:缓存存活时间,单位为毫秒(默认值为60000)MYSQL_QUEUE_LIMIT:排队等待的连接请求数量上限(默认值为100)MYSQL_CONNECT_TIMEOUT:连接超时时间,单位为毫秒(默认值为10000)
安全配置
MYSQL_RATE_LIMIT:每分钟最大查询次数(默认值为100)MYSQL_MAX_QUERY_COMPLEXITY:最大查询复杂度分数(默认值为1000)MYSQL_SSL:启用 SSL/TLS 加密(默认值为false)MYSQL_SSL_CA:SSL CA 证书文件路径(PEM 格式)。仅在MYSQL_SSL=true时使用。连接自签名证书或使用自定义 CA 的 MySQL 实例时必须提供。MYSQL_SSL_CERT:客户端证书文件路径(PEM 格式),用于 mTLS。仅在MYSQL_SSL=true时使用。启用双向 TLS(mTLS)认证,即服务器和客户端均需出示证书。某些强制验证客户端证书的数据库配置需要此设置。MYSQL_SSL_KEY:客户端私钥文件路径(PEM 格式),用于 mTLS。仅在MYSQL_SSL=true时使用。必须与MYSQL_SSL_CERT中指定的证书相对应。ALLOW_INSERT_OPERATION:启用 INSERT 操作(默认值为false)ALLOW_UPDATE_OPERATION:启用 UPDATE 操作(默认值为false)ALLOW_DELETE_OPERATION:启用 DELETE 操作(默认值为false)ALLOW_DDL_OPERATION:启用 DDL 操作(默认值为false)MYSQL_DISABLE_READ_ONLY_TRANSACTIONS:[新增] 禁用只读事务强制执行(默认值为false)⚠️ 安全警告:仅在您需要完全的写入能力并信任 LLM 可以访问您的数据库时才启用此设置SCHEMA_INSERT_PERMISSIONS:针对特定模式的 INSERT 权限SCHEMA_UPDATE_PERMISSIONS:针对特定模式的 UPDATE 权限SCHEMA_DELETE_PERMISSIONS:针对特定模式的 DELETE 权限SCHEMA_DDL_PERMISSIONS:针对特定模式的 DDL 权限MULTI_DB_WRITE_MODE:启用多数据库模式下的写操作(默认值为false)
时区和日期配置
MYSQL_TIMEZONE:设置日期/时间值的时区。支持的格式包括+08:00(UTC+8)、-05:00(UTC-5)、Z(UTC)或local(系统时区)。有助于确保在不同服务器位置之间保持一致的日期/时间处理。MYSQL_DATE_STRINGS:当设置为"true"时,日期/时间值将以字符串形式返回,而不是 JavaScript Date 对象。这样可以保留数据库中的精确值,而不会进行任何时区转换,特别适用于:- 需要精确控制日期格式的应用程序
- 跨时区的数据库操作
- 避免 JavaScript Date 的时区问题
监控配置
MYSQL_ENABLE_LOGGING:启用查询日志记录(默认值为false)MYSQL_LOG_LEVEL:日志级别(默认值为info)MYSQL_METRICS_ENABLED:启用性能指标(默认值为false)
远程 MCP 配置
IS_REMOTE_MCP:启用远程 MCP 模式(默认值为false)REMOTE_SECRET_KEY:用于远程 MCP 认证的密钥(默认值为空)。若未提供,则远程 MCP 模式将被禁用。PORT:远程 MCP 服务器的端口号(默认值为 3000)
多数据库模式
MCP-Server-MySQL 支持在未指定具体数据库的情况下连接多个数据库。这使得 LLM 可以查询 MySQL 用户有权访问的任意数据库。有关详细信息,请参阅 README-MULTI-DB.md。
启用多数据库模式
要启用多数据库模式,只需将 MYSQL_DB 环境变量留空。在多数据库模式下,查询需要指定模式:
-- 使用完全限定的表名
SELECT * FROM 数据库名.表名;
-- 或者使用 USE 语句切换数据库
USE 数据库名;
SELECT * FROM 表名;
模式特定的权限
为了对数据库操作进行细粒度控制,MCP-Server-MySQL 现在支持模式特定的权限。这允许不同的数据库拥有不同的访问级别(只读、读写等)。
配置示例
SCHEMA_INSERT_PERMISSIONS=development:true,test:true,production:false
SCHEMA_UPDATE_PERMISSIONS=development:true,test:true,production:false
SCHEMA_DELETE_PERMISSIONS=development:false,test:true,production:false
SCHEMA_DDL_PERMISSIONS=development:false,test:true,production:false
有关完整详情和安全建议,请参阅 README-MULTI-DB.md。
测试
数据库设置
在运行测试之前,您需要设置测试数据库并填充测试数据:
创建测试数据库和用户
-- 以 root 用户身份连接并创建测试数据库 CREATE DATABASE IF NOT EXISTS mcp_test; -- 创建具有适当权限的测试用户 CREATE USER IF NOT EXISTS 'mcp_test'@'localhost' IDENTIFIED BY 'mcp_test_password'; GRANT ALL PRIVILEGES ON mcp_test.* TO 'mcp_test'@'localhost'; FLUSH PRIVILEGES;运行数据库设置脚本
# 运行数据库设置脚本 pnpm run setup:test:db这将创建必要的表并填充数据。该脚本位于
scripts/setup-test-db.ts中。配置测试环境 在项目根目录中创建
.env.test文件(如果尚未存在):MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_USER=mcp_test MYSQL_PASS=mcp_test_password MYSQL_DB=mcp_test更新 package.json 脚本 将以下脚本添加到您的
package.json中:{ "scripts": { "setup:test:db": "ts-node scripts/setup-test-db.ts", "pretest": "pnpm run setup:test:db", "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage" } }
运行测试
该项目包含一个全面的测试套件,以确保功能性和可靠性:
# 首次设置
pnpm run setup:test:db
# 运行所有测试
pnpm test
运行 evals
evals 包加载了一个 mcp 客户端,然后运行 index.ts 文件,因此无需在每次测试之间重新构建。您可以通过在 npx 命令前添加环境变量来加载它们。完整的文档可在 MCP Evals 上找到。
OPENAI_API_KEY=your-key npx mcp-eval evals.ts index.ts
故障排除
常见问题
连接问题
- 确认 MySQL 服务器正在运行且可访问。
- 检查凭据和权限。
- 如果启用了 SSL/TLS,请确保配置正确。
- 尝试使用 MySQL 客户端连接以确认访问权限。
性能问题
- 调整连接池大小。
- 配置查询超时值。
- 如有必要,启用查询缓存。
- 检查查询复杂度设置。
- 监控服务器资源使用情况。
安全限制
- 检查速率限制配置。
- 查看查询白名单/黑名单设置。
- 验证 SSL/TLS 设置。
- 确保用户具有适当的 MySQL 权限。
路径解析问题 如果遇到“无法连接到 MCP 服务器 mcp-server-mysql”的错误,请显式设置所有所需二进制文件的路径:
{ "env": { "PATH": "/path/to/node/bin:/usr/bin:/bin" } }如何找到我的
node二进制文件路径? 运行以下命令获取:对于 PATH:
echo "$(which node)/../"对于 NODE_PATH:
echo "$(which node)/../../lib/node_modules"Claude Desktop 特定问题
如果在 Claude Desktop 中看到“服务器断开连接”的日志,请检查
~/Library/Logs/Claude/mcp-server-mcp_server_mysql.log中的日志。确保您使用的是 Node 二进制文件和服务器脚本的绝对路径。
检查
.env文件是否被正确加载;在配置中使用显式环境变量。尝试直接从命令行运行服务器,以查看是否存在连接问题。
如果需要写操作(INSERT、UPDATE、DELETE),请在配置中将相应标志设置为“true”:
"env": { "ALLOW_INSERT_OPERATION": "true", // 启用 INSERT 操作 "ALLOW_UPDATE_OPERATION": "true", // 启用 UPDATE 操作 "ALLOW_DELETE_OPERATION": "true" // 启用 DELETE 操作 }确保您的 MySQL 用户具有您所启用操作的适当权限。
对于直接执行的配置,使用:
{ "mcpServers": { "mcp_server_mysql": { "command": "/full/path/to/node", "args": [ "/full/path/to/mcp-server-mysql/dist/index.js" ], "env": { "MYSQL_HOST": "127.0.0.1", "MYSQL_PORT": "3306", "MYSQL_USER": "root", "MYSQL_PASS": "your_password", "MYSQL_DB": "your_database" } } } }
认证问题
对于 MySQL 8.0+,请确保服务器支持
caching_sha2_password认证插件。检查您的 MySQL 用户是否配置了正确的认证方法。
如有必要,尝试创建使用旧版认证的用户:
CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';@lizhuangs
我遇到了
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'dotenv' imported from错误, 可以尝试以下解决方法:npx -y -p @benborla29/mcp-server-mysql -p dotenv mcp-server-mysql感谢 @lizhuangs。
贡献
欢迎贡献!请随时提交 Pull Request 到 https://github.com/benborla/mcp-server-mysql
非常感谢以下贡献者
开发设置
- 克隆仓库。
- 安装依赖:
pnpm install。 - 构建项目:
pnpm run build。 - 运行测试:
pnpm test。
项目路线图
我们正在积极开发并优化这款 MCP 服务器。请查看我们的 CHANGELOG.md,了解计划中的功能详情,包括:
- 使用预处理语句增强查询能力
- 高级安全特性
- 性能优化
- 全面的监控功能
- 扩展的模式信息
如果您希望在这些方面做出贡献,请查看 GitHub 上的相关议题,或新建一个议题来讨论您的想法。
提交更改
- 分支仓库
- 创建功能分支:
git checkout -b feature/your-feature-name - 提交更改:
git commit -am '添加某项功能' - 推送至分支:
git push origin feature/your-feature-name - 提交拉取请求
许可证
本 MCP 服务器采用 MIT 许可证授权。详细信息请参阅 LICENSE 文件。
版本历史
v2.0.82026/01/27v2.0.72025/11/18v2.0.52025/07/17v2.0.32025/06/26v2.0.02025/04/03v1.0.142025/03/29v1.0.132025/03/29v1.0.82025/01/28v1.0.72024/12/09v1.0.52024/12/09v1.0.42024/12/09v1.0.32024/12/09v1.0.22024/12/09v1.0.12024/12/09v1.0.02024/12/09常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
funNLP
funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。

