动态MySQL MCP服务器
MySQL的模型上下文协议(MCP)服务器,使AI助手能够通过工具安全地查询和修改MySQL数据。
特性
- 🔧 基于工具的MySQL访问(无需环境变量)
- 🔐 运行时身份验证通过
auth_mysql - 🗂️ 列出数据库和表
- 🧱 描述表模式
- 📄 类似CRUD的行操作(
select_rows,insert_row,update_rows,delete_rows) - 🧾 自定义SQL执行(
execute_sql)带有可选参数 - 🌐 用于表模式发现的MCP资源
为什么是动态的(与静态MySQL MCP服务器相比)
许多MySQL MCP服务器都是静态配置的(通过env或配置文件固定主机/用户/密码)。这个项目是有意动态的。
- 通过工具调用进行运行时身份验证(
auth_mysql)而不是在服务器启动时要求凭据 - 使用以下命令在会话期间切换数据库上下文
use_database(或每次呼叫数据库覆盖) - 从一个正在运行的MCP服务器会话跨多个数据库/环境工作
- 更适合连接细节随任务变化的代理工作流
- 正常使用时不需要身份验证环境变量
| 功能 | 动态MySQL MCP服务器 | 典型的静态MySQL MCP |
|---|---|---|
| 凭据 | 在运行时提供 auth_mysql | 启动时在env/config中修复 |
| 环境切换 | 每个任务/会话重新授权 | 通常重新启动/重新配置 |
| 数据库切换 | use_database +每次通话 database | 通常是单个默认数据库 |
| 代理工作流适合度 | 高(任务驱动连接) | 中(仅预配置) |
| 机密处理模型 | 无需身份验证-环境变量 | 通常依赖于持久的环境机密 |
安装
npm install dynamic-mysql-mcp
# or
bun install dynamic-mysql-mcp用法
使用克劳德桌面
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["dynamic-mysql-mcp"]
}
}
}直接使用
npx dynamic-mysql-mcp身份验证流程(通过工具)
auth_mysql(主机默认值127.0.0.1,传递用户/密码和可选主机/端口/数据库/ssl)- 可选:
use_database切换默认数据库,如SQLUSE get_auth_status- 使用模式/数据工具
logout
身份验证不需要环境变量。
快速教程
与连接到此MCP的AI聊天时,请使用这样的提示式语言:
- “使用root用户和空密码登录本地MySQL。”
- “将活动数据库设置为my_app。”
- “显示活动数据库中的所有表。”
- 描述用户表,包括列名和数据类型
- 从用户那里获取最近10行,按id降序排列
- “使用电子邮件向用户中插入一个新用户test@example.com."
- “更新id为1的用户,并将名称设置为Budi。”
- “删除id为1的用户行。”
- “将活动数据库切换到分析。”
- “运行自定义SQL:SELECT id,通过参数\[”2026-01-01“\]向用户发送电子邮件WHERE created_at>=?。”
提示:如果你想在不切换活动数据库的情况下对特定数据库运行操作,请在提示中直接提及该数据库,例如:“从analytics.events中获取5行”。
更多提示示例
- 日期筛选器:
- “根据created_at获取过去30天的订单。” - “显示2026年2月1日至2026年02月10日之间的付款。”
- 分页:
- “从第21行开始获取20个用户。” - “显示第3页的产品,每页10行。”
- 关键字搜索:
- “查找电子邮件中包含管理员的用户。” - “获取标题包含促销的帖子。”
- 组合过滤+排序:
- 获取10张已付款发票,按id降序排列 - 显示错误级别日志,先显示最新日志,限制为50行
可用工具
healthauth_mysqlget_auth_statuslogoutlist_databasesuse_databaselist_tablesdescribe_tableselect_rowsinsert_rowupdate_rowsdelete_rowsexecute_sql
发展
bun install
bun run dev
bun run typecheck
bun run test
bun run build许可证
麻省理工学院
