使用说明
MySQL MCP服务器
一个复杂的模型上下文协议(MCP)服务器,提供安全的多数据库MySQL访问,具有可配置的安全级别、延迟加载和热重新加载功能。
🚀 特性
- 🗄️ 多数据库支持:同时配置和访问多个MySQL数据库
- 🔒 可配置的安全性:从只读到完全访问的四个安全级别
- ⚡ 延迟加载:仅在需要最佳资源使用时创建连接池
- 🔄 热重新加载:无需重新启动服务器即可更新数据库配置
- 📊 完整的架构信息:带有索引、外键和约束的完整表定义
- 🛡️ 显式数据库选择:必需的数据库参数可防止意外操作
- 🎯 MCP协议集成:原生VS代码与资源浏览的集成
🔧 安装
-
克隆并安装
git clone <your-repository-url> cd mysql-mcp-server npm install -
配置多数据库设置
复制示例配置文件并对其进行自定义:
cp .env.example .env编辑
.env使用您的数据库配置:# Multi-Database Configuration (JSON Array) MYSQL_DATABASES='[ { "name": "primary_db", "host": "localhost", "user": "your_username", "password": "your_password", "database": "your_database" }, { "name": "analytics_db", "host": "analytics.example.com", "user": "analytics_user", "password": "analytics_password", "database": "analytics" } ]' # Security Configuration # Options: (default), extended, all, or custom comma-separated list # MYSQL_ALLOWED_COMMANDS=extended # Connection Pool Settings MYSQL_CONNECTION_LIMIT=4 MYSQL_WAIT_FOR_CONNECTIONS=true # Server Metadata MCP_SERVER_NAME=mysql-mcp-server MCP_SERVER_VERSION=1.0.0 -
添加到VS代码MCP配置
添加到您的VS代码
settings.json在MCP服务器下:{ "mcp": { "mcpServers": { "mysql-mcp-server": { "command": "node", "args": ["C:/path/to/mysql-mcp-server/mcp-mysql-lite.js"], "env": {} } } } }
🔒 安全级别
配置 MYSQL_ALLOWED_COMMANDS 在你的 .env 文件:
默认值(推荐)
# MYSQL_ALLOWED_COMMANDS not set or commented out
允许的命令: SELECT, SHOW, DESCRIBE, DESC, EXPLAIN, ANALYZE
用例:数据分析和探索的安全只读访问
扩展的
MYSQL_ALLOWED_COMMANDS=extended
允许的命令:所有默认命令加 CREATE TABLE, ALTER TABLE, DROP TABLE, INSERT, UPDATE, DELETE, TRUNCATE等等。
用例:需要修改模式和数据的开发环境
全部(⚠️ 小心使用)
MYSQL_ALLOWED_COMMANDS=all
允许的命令:无限制-允许使用所有SQL命令
用例:需要完整数据库管理功能的可信环境
自定义
MYSQL_ALLOWED_COMMANDS="SELECT,INSERT,UPDATE,CREATE TABLE"
允许的命令:用户定义的逗号分隔列表
用例:具有定制权限的具体操作要求
🛠️ 可用工具
所有工具都需要明确的数据库选择以确保安全。
query_database
执行带有安全验证和显式数据库选择的SQL查询。
- 参数:
sql(字符串, 必需的)-要执行的SQL查询database(字符串, 必需的)-目标数据库名称(安全要求)
- 安全:根据当前安全级别验证命令
- 退货:使用执行元数据查询结果
describe_table
使用以下命令获取完整的表结构 SHOW CREATE TABLE 获取全面的模式信息。
- 参数:
table_name(字符串, 必需的)-要描述的表的名称database(字符串, 必需的)-包含表的数据库(安全要求)
- 退货:完整的表定义,包括列、索引、外键和引擎详细信息
list_databases
显示所有已配置的数据库及其连接状态。
- 参数:无需
- 退货:具有连接池状态和默认数据库指示器的数据库配置
📚 可用资源
默认数据库中的表作为MCP资源公开,URI如下:
mysql://database_name/table/table_name
直接通过VS Code的资源浏览器浏览表模式。
💡 使用示例
基础数据库查询
-- Query with explicit database selection (security requirement)
SELECT COUNT(*) FROM users WHERE active = 1
数据库: primary_db
多数据库操作
-- Analytics query on different database
SELECT DATE(created_at), COUNT(*)
FROM events
WHERE event_type = 'purchase'
GROUP BY DATE(created_at)
ORDER BY DATE(created_at) DESC
LIMIT 7
数据库: analytics_db
表模式探索
使用 describe_table 工具:
- 表格:
users - 数据库:
primary_db
返回包含外键、索引和约束的完整表定义。
数据库发现
使用 list_databases 查看所有已配置数据库及其连接状态的工具:
[
{
"name": "primary_db",
"host": "localhost",
"database": "app_production",
"user": "app_user",
"isDefault": true,
"poolCreated": true
},
{
"name": "analytics_db",
"host": "analytics.company.com",
"database": "analytics",
"user": "analytics_user",
"isDefault": false,
"poolCreated": false
}
]
🔄 热重载功能
更新中的数据库配置 .env file-它们将自动重新加载:
- ✅ 凭证更新:立即应用新密码/用户
- ✅ 新建数据库:添加到可用列表中(重新启动VS Code以更新工具模式)
- ✅ 配置更改:下次连接时应用主机/端口更新
- 🔄 现有连接:保持活性,直到自然回收
⚡ 延迟加载
仅在需要时创建连接池:
- 📊 资源效率的:没有不必要的数据库连接
- 🚀 快速启动:无论数据库是否可用,服务器都会立即启动
- 🔍 状态可见性:
list_databases显示哪些池处于活动状态 - 🛡️ 故障隔离:一个数据库问题不会影响其他问题
🏗️ 建筑
VS Code MCP Client
↓ (stdio)
MySQL MCP Server
↓ (lazy loading)
Connection Pools
↓ (MySQL protocol)
Multiple Databases
关键设计原则:
- 多数据库:每个数据库都有独立的配置和连接池
- 安全:执行前进行命令验证,需要明确选择数据库
- 演出:延迟加载+连接池,实现最佳资源使用
- 可靠性:热重新加载+错误隔离,确保生产稳定性
🚀 发展
运行服务器
npm start
测试配置
# Test connection to all configured databases
node mcp-mysql-lite.js
环境变量
MYSQL_DATABASES:数据库配置的JSON数组MYSQL_ALLOWED_COMMANDS:安全级别(默认/扩展/全部/自定义)MYSQL_CONNECTION_LIMIT:每个池的最大连接数(默认值:4)MYSQL_WAIT_FOR_CONNECTIONS:等待可用连接(默认值:true)
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件。
内置于❤️ 模型上下文协议生态系统