使用说明
MySQL模型上下文协议服务器
该项目实现了 模型上下文协议(MCP) 暴露的服务器 MySQL数据库操作工具。它封装了MySQL连接池 并将传入的MCP请求转换为SQL语句,返回 结构化格式中的结果或错误。
服务器是用纯JavaScript编写的,并使用
@modelcontextprotocol/sdk
实现MCP规范的软件包。代码是这样组织的
它可以从以下任一位置进行开发和调试 Visual Studio Code 或
智能J IDEA。它依赖于环境变量来配置
数据库连接,并公开了一组用于只读查询的工具,
表创建、数据插入、更新、删除和通用SQL
声明。
入门指南
-
使用首选的包管理器安装依赖项。对于 示例,使用
npm:npm install -
通过环境变量或以下方式配置MySQL连接 创建一个
.env文件。识别以下变量:变量 默认值 描述 MYSQL_HOSTlocalhostMySQL服务器的主机名 MYSQL_PORT3306MySQL服务器的端口 MYSQL_USERusername用于身份验证的用户名 MYSQL_PASSWORDpassword用于身份验证的密码 MYSQL_DATABASEdatabase_name查询的默认数据库 -
通过运行以下命令启动服务器:
npm start
服务器通过以下方式进行通信 标准,这是默认传输方式 对于MCP。当与更大的应用程序集成时,MCP运行时 将自动生成此进程并处理I/O通道。
支持的工具
服务器公开了六个工具,每个工具对应一个不同的类 SQL语句:
| 工具名称 | 描述 |
|---|---|
run_sql_query |
执行只读 SELECT 查询并返回结果集。 |
create_table |
执行a CREATE TABLE 声明。 |
insert_data |
执行一个 INSERT INTO 声明。 |
update_data |
执行一个 UPDATE 声明。 |
delete_data |
执行a DELETE FROM 声明。 |
execute_sql |
执行任何非-SELECT 声明(例如。, ALTER, DROP等等) |
每个工具接受一个参数, query,这是SQL
声明运行。服务器执行基本验证以确保
语句被路由到正确的处理程序并防止
意外误用(例如,呼叫 run_sql_query 带着一个
非-SELECT 声明)。
项目布局
mysql-server-mcp/
├── package.json – project metadata and dependencies
├── .gitignore – ignore common development artifacts
├── README.md – this file
└── src
└── index.js – main entrypoint implementing the MCP server
代码有意保持简单和自包含。你可以跑 并通过使用VS Code或IntelliJ直接调试它 Node.js运行配置。服务器使用现代ECMAScript 模块,因此请确保您的编辑器已相应配置。
如何在本地环境中使用此MCP服务器
这个MySQL MCP服务器可以与支持模型上下文协议的各种AI编码助手和工具集成。下面是不同环境的详细说明。
先决条件
在配置任何客户端之前,请确保:
-
MySQL服务器正在运行:确保MySQL服务器可访问
# Test connection mysql -h localhost -u <username> -p<password> <database_name> -
已安装依赖项:运行
npm install在项目目录中 -
服务器路径:记下您的完整路径
index.js文件# Get the full path pwd # Run this from the project root # Example: /Users/username/projects/mysql-server-mcp
Claude桌面配置
Claude Desktop原生支持MCP服务器。要添加此MySQL服务器:
-
查找或创建配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
添加服务器配置:
{ "mcpServers": { "mysql-server": { "command": "node", "args": [ "/absolute/path/to/mysql-server-mcp/src/index.js" ], "env": { "MYSQL_HOST": "localhost", "MYSQL_PORT": "3306", "MYSQL_USER": "username", "MYSQL_PASSWORD": "password", "MYSQL_DATABASE": "database_name" } } } } -
重新启动克劳德桌面:关闭并重新打开应用程序
-
验证MySQL工具应该出现在Claude的可用工具列表中
使用GitHub Copilot配置VS代码
VS Code与GitHub Copilot可以通过MCP扩展使用MCP服务器:
-
安装MCP扩展 (如果尚未安装):
- 打开VS代码
- 转到扩展(Cmd+Shift+X或Ctrl+Shift+X)
- 搜索“模型上下文协议”
- 安装官方MCP扩展
-
配置MCP服务器:
-
选项A:用户设置 (适用于所有工作区)
- 打开命令面板(Cmd+Shift+P或Ctrl+Shift+P)
- 键入“首选项:打开用户设置(JSON)”
- 添加以下配置:
{ "mcp.servers": { "mysql-server": { "command": "node", "args": [ "/absolute/path/to/mysql-server-mcp/src/index.js" ], "env": { "MYSQL_HOST": "localhost", "MYSQL_PORT": "3306", "MYSQL_USER": "username", "MYSQL_PASSWORD": "password", "MYSQL_DATABASE": "database_name" } } } } -
选项B:工作区设置 (仅适用于当前工作区)
- 创建或编辑
.vscode/settings.json在您的项目中 - 添加与上述相同的配置
- 创建或编辑
-
-
重新加载VS代码:从命令面板运行“开发人员:重新加载窗口”
-
使用GitHub Copilot:
- 打开GitHub Copilot聊天(Cmd+I或Ctrl+I)
- MySQL MCP工具将可供AI使用
- 示例提示:“显示数据库中的所有表”
Cline(前身为Claude Dev)的配置
如果你在VS Code中使用Cline扩展:
-
找到临床MCP设置:
- 在macOS上:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json - 在Windows上:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json - 在Linux上:
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
- 在macOS上:
-
添加服务器配置:
{ "mcpServers": { "mysql-server": { "command": "node", "args": [ "/absolute/path/to/mysql-server-mcp/src/index.js" ], "env": { "MYSQL_HOST": "localhost", "MYSQL_PORT": "3306", "MYSQL_USER": "username", "MYSQL_PASSWORD": "password", "MYSQL_DATABASE": "database_name" } } } } -
重新启动Cline:重新加载VS代码窗口
其他MCP兼容客户端的配置
对于通过stdio传输支持MCP的任何其他工具:
-
基本命令:
node /path/to/mysql-server-mcp/src/index.js -
使用环境变量:
MYSQL_HOST=localhost \ MYSQL_PORT=3306 \ MYSQL_USER=username \ MYSQL_PASSWORD=password \ MYSQL_DATABASE=database_name \ node /path/to/mysql-server-mcp/src/index.js -
使用.env文件 (创建
.env在项目根目录中):MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=username MYSQL_PASSWORD=password MYSQL_DATABASE=database_name
测试MCP服务器
您可以使用MCP检查器手动测试服务器:
-
安装MCP检查器:
npm install -g @modelcontextprotocol/inspector -
运行检查器:
mcp-inspector node /path/to/mysql-server-mcp/src/index.js -
测试工具:检查器提供web UI来测试所有可用工具
故障排除
服务器无法启动:
- 检查是否安装了Node.js:
node --version(需要v16+版本) - 验证MySQL凭据是否正确
- 检查MySQL服务器是否正在运行且可访问
工具未出现:
- 验证到的绝对路径
index.js是正确的 - 检查配置文件语法(有效的JSON)
- 完全重新启动客户端应用程序
- 检查客户端日志中的连接错误
连接错误:
- 验证MySQL连接字符串和凭据
- 独立测试MySQL连接:
mysql -h localhost -u username -p - 如果使用远程MySQL,请检查防火墙设置
- 确保配置中指定的数据库存在
权限错误:
-
确保MySQL用户具有适当的权限:
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost'; FLUSH PRIVILEGES;
安全考虑
用于生产用途:
- 从不将凭据提交到版本控制
- 使用环境变量或安全密钥管理
- 将MySQL用户权限限制为所需的最小值
- 考虑使用MySQL SSL/TLS连接
- 实施额外的查询验证和清理
- 添加速率限制和查询超时
- 记录所有数据库操作以供审计
促进地方发展:
- 使用专用开发数据库
- 不使用生产凭据
- 考虑对独立的MySQL实例使用Docker
示例使用场景
配置后,您可以自然地与AI助手交互:
查询数据:
- “显示用户表中的所有记录”
- “统计上个月下了多少订单”
- “查找价格高于100美元的所有产品”
创建表格:
- 创建一个名为customers的表,其中包含id、name和email列
- “添加新表以存储产品评论”
修改数据:
- “插入具有姓名和电子邮件的新用户”
- “更新产品ID的价格”
- “删除所有超过2年的订单”
- 等等
架构操作:
- “在users表中添加created_at时间戳列”
- “显示订单表的结构”
- “在电子邮件列上创建索引”
AI助手将自动使用适当的MCP工具来执行这些操作并返回结果。
延伸
如果您希望用附加功能扩展服务器,
考虑添加新的处理程序并将其注册到
src/index.js。您还可以将验证助手修改为
强制执行更严格的模式或与查询解析器集成。