一个提供 MySQL 数据库访问的模型上下文协议服务器。该服务器使 LLM 能够检查数据库模式并执行 SQL 查询。
有多种方法可以安装和配置 MCP 服务器,但最常见的是访问此网站 https://smithery.ai/server/@benborla29/mcp-server-mysql
对于 Cursor IDE,您可以在项目中通过以下命令安装此 MCP 服务器:
MCP Get 提供了一个 MCP 服务器的集中注册表,并简化了安装过程。
手动安装:
# 使用 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": "/Users/atlasborla/Library/Application Support/Herd/config/nvm/versions/node/v22.9.0/bin:/usr/bin:/bin", // <--- 重要,添加以下内容,在终端运行 `echo "$(which node)/../"` 获取路径
"NODE_PATH": "/Users/atlasborla/Library/Application Support/Herd/config/nvm/versions/node/v22.9.0/lib/node_modules" // <--- 重要,添加以下内容,在终端运行 `echo "$(which node)/../../lib/node_modules"`
}
}
}
}

替换:
/path/to/node
为您的 Node.js 二进制文件的完整路径(使用 which node
查找)/full/path/to/mcp-server-mysql
为您克隆仓库的完整路径测试服务器
# 直接运行服务器进行测试
node dist/index.js

如果成功连接到 MySQL,您就可以使用它与 Claude Desktop 进行交互了。
sql
(字符串):要执行的 SQL 查询ALLOW_INSERT_OPERATION=true
)ALLOW_UPDATE_OPERATION=true
)ALLOW_DELETE_OPERATION=true
)服务器提供全面的数据库信息:
如果您使用 Smithery 安装,您的配置已经设置好。您可以使用以下命令查看或修改它:
smithery configure @benborla29/mcp-server-mysql
在重新配置时,您可以更新任何 MySQL 连接详细信息以及写操作设置:
基本连接设置:
写操作权限:
出于安全原因,所有写操作默认情况下都是禁用的。仅在您特别需要 Claude 修改您的数据库数据时才启用这些设置。
要获得对MCP服务器行为的更多控制,您可以使用以下高级配置选项:
{
"mcpServers": {
"mcp_server_mysql": {
"command": "/path/to/npx/binary/npx",
"args": [
"-y",
"@benborla29/mcp-server-mysql"
],
"env": {
// Basic connection settings
"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",
// Performance settings
"MYSQL_POOL_SIZE": "10",
"MYSQL_QUERY_TIMEOUT": "30000",
"MYSQL_CACHE_TTL": "60000",
// Security settings
"MYSQL_RATE_LIMIT": "100",
"MYSQL_MAX_QUERY_COMPLEXITY": "1000",
"MYSQL_SSL": "true",
// Monitoring settings
"ENABLE_LOGGING": "true",
"MYSQL_LOG_LEVEL": "info",
"MYSQL_METRICS_ENABLED": "true",
// Write operation flags
"ALLOW_INSERT_OPERATION": "false",
"ALLOW_UPDATE_OPERATION": "false",
"ALLOW_DELETE_OPERATION": "false"
}
}
}
}

MYSQL_SOCKET_PATH
:unix套接字路径的本地连接(例如,“/tmp/mysql.sock”)MYSQL_HOST
:mySQL Server主机(默认:“ 127.0.0.1”) - 如果设置了MySQL_Socket_path,则忽略MYSQL_PORT
:mySQL Server端口(默认:“ 3306”) - 如果设置了mysql_socket_path,则忽略MYSQL_USER
:mySQL用户名(默认:“ root”)MYSQL_PASS
:mySQL密码MYSQL_DB
:目标数据库名称(多DB模式留空)MYSQL_POOL_SIZE
:连接池大小(默认:“ 10”)MYSQL_QUERY_TIMEOUT
:查询毫秒的超时(默认值:“ 30000”)MYSQL_CACHE_TTL
:CACHE在毫秒中延续的时间(默认值:“ 60000”)MYSQL_RATE_LIMIT
:每分钟的最大查询(默认值:“ 100”)MYSQL_MAX_QUERY_COMPLEXITY
:最大查询复杂度得分(默认值:“ 1000”)MYSQL_SSL
:启用SSL/TLS加密(默认:“ false”)ALLOW_INSERT_OPERATION
:启用插入操作(默认:“ false”)ALLOW_UPDATE_OPERATION
:启用更新操作(默认:“ false”)ALLOW_DELETE_OPERATION
:启用删除操作(默认:“ false”)ALLOW_DDL_OPERATION
:启用DDL操作(默认:“ false”)SCHEMA_INSERT_PERMISSIONS
:架构特定的插入权限SCHEMA_UPDATE_PERMISSIONS
:特定模式的更新权限SCHEMA_DELETE_PERMISSIONS
:特定模式的删除权限SCHEMA_DDL_PERMISSIONS
:架构特异性DDL权限MULTI_DB_WRITE_MODE
:以多DB模式启用写操作(默认值:“ false”)MYSQL_ENABLE_LOGGING
:启用查询记录(默认值:“ false”)MYSQL_LOG_LEVEL
:记录级别(默认:“ info”)MYSQL_METRICS_ENABLED
:启用性能指标(默认:“ false”)当未设置特定数据库时,MCP-Server-MYSQL支持连接到多个数据库。这允许LLM查询MySQL用户可以访问的任何数据库。有关完整的详细信息,请参阅README-MULTI-DB.md.
要启用多DB模式,只需离开MYSQL_DB
环境变量空。在多DB模式下,查询需要架构资格:
-- Use fully qualified table names
SELECT * FROM database_name.table_name;
-- Or use USE statements to switch between databases
USE database_name;
SELECT * FROM table_name;

为了对数据库操作进行细粒度的控制,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.
在运行测试之前,您需要设置测试数据库并用测试数据播种:
创建测试数据库和用户
-- Connect as root and create test database
CREATE DATABASE IF NOT EXISTS mcp_test;
-- Create test user with appropriate permissions
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;

运行数据库设置脚本
# Run the database setup script
pnpm run setup:test:db

这将创建必要的表格和种子数据。该脚本位于scripts/setup-test-db.ts
配置测试环境
创建一个.env.test
在项目root(如果不存在的话)中文件:
MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_USER=mcp_test MYSQL_PASS=mcp_test_password MYSQL_DB=mcp_test
更新软件包。JSON脚本
将这些脚本添加到您的软件包。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"
}
}

该项目包括一个综合测试套件,以确保功能和可靠性:
# First-time setup
pnpm run setup:test:db
# Run all tests
pnpm test

EVALS软件包加载MCP客户端,然后运行index.ts文件,因此无需在测试之间重建。您可以通过前缀NPX命令加载环境变量。可以找到完整的文档here.
OPENAI_API_KEY=your-key npx mcp-eval evals.ts index.ts
连接问题
性能问题
安全限制
路径分辨率
如果遇到错误“无法连接到MCP Server MCP-Server-Mysql”,请明确设置所有必需的二进制文件的路径:
{
"env": {
"PATH": "/path/to/node/bin:/usr/bin:/bin"
}
}

我在哪里可以找到我的node
bin路径
运行以下命令以获取它:
对于路径
echo "$(which node)/../"

对于node_path
echo "$(which node)/../../lib/node_modules"

Claude桌面特定问题
~/Library/Logs/Claude/mcp-server-mcp_server_mysql.log
.env
文件已正确加载;在配置中使用明确的环境变量"env": {
"ALLOW_INSERT_OPERATION": "true", // Enable INSERT operations
"ALLOW_UPDATE_OPERATION": "true", // Enable UPDATE operations
"ALLOW_DELETE_OPERATION": "true" // Enable DELETE operations
}

{
"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"
}
}
}
}

身份验证问题
caching_sha2_password
身份验证插件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
欢迎捐款!请随时提交拉动请求
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 'Add some feature'
git push origin feature/your-feature-name
该MCP服务器已获得MIT许可证的许可。有关详细信息,请参见许可证文件。