Provides read-only access to MySQL databases with tools for executing SELECT queries, listing tables and databases, and describing table structures with built-in security features like SQL injection protection and automatic query limits.
MySQL ReadOnly MCP Server
🔒 生产就绪 的 MySQL 只读 MCP (Model Context Protocol) 服务器,提供安全、高性能的数据库查询服务。
✨ 核心特性
🔒 只读安全: 仅允许 SELECT 查询,多层安全防护
🚀 高性能: 连接池、自动LIMIT、查询优化
🛡️ 企业级安全: SQL注入防护、配置验证、SSL支持
🧪 测试覆盖: 17个全面的单元测试
📝 TypeScript: 完整类型支持
🔧 多平台支持: Claude Desktop、Claude Code、Gemini CLI
🚀 快速开始
1. 安装依赖
2. 配置数据库连接
编辑 .env 文件:
3. 构建项目
4. 配置到您的AI客户端
选择以下任一配置方式:
🔧 配置方法
Claude Desktop 配置
找到 Claude Desktop 配置文件:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
添加以下配置:
⚠️ 重要提醒:
使用绝对路径,例如:
/Users/username/projects/mysql-readonly-mcp/dist/index.js确保路径中有正确的项目名称
mysql-readonly-mcp配置完成后重启 Claude Desktop
Claude Code 配置
Claude Code 会自动识别项目中的 .claude_config 文件。在项目根目录创建:
使用步骤:
构建项目:
设置环境变量:
验证配置:
Gemini CLI 配置
安装 Gemini CLI:
创建 MCP 配置文件:
配置 Gemini CLI:
测试连接:
📋 环境变量说明
变量名 | 必需 | 默认值 | 说明 |
| ✅ | localhost | MySQL 服务器地址 |
| ❌ | 3306 | MySQL 服务器端口 |
| ✅ | - | MySQL 用户名 |
| ✅ | - | MySQL 密码 |
| ❌ | - | 默认连接的数据库 |
| ❌ | - | SSL CA 证书路径 |
| ❌ | - | SSL 客户端证书路径 |
| ❌ | - | SSL 客户端密钥路径 |
| ❌ | true | 是否拒绝未授权的 SSL 证书 |
🛠️ 可用工具
1. mysql_query - 执行SQL查询
执行只读 SQL 查询。
参数:
query(string, 必需): 要执行的 SQL 查询(仅允许 SELECT 语句)
示例:
2. mysql_list_tables - 列出表
列出数据库中的所有表。
参数:
database(string, 可选): 数据库名称(默认使用配置的数据库)
示例:
3. mysql_describe_table - 表结构
获取表的结构和列信息。
参数:
table(string, 必需): 要描述的表名database(string, 可选): 数据库名称
示例:
4. mysql_list_databases - 列出数据库
列出所有可用的数据库(排除系统数据库)。
参数:无
🔒 安全特性
多层只读验证: 严格的 SELECT 语句检查
SQL注入防护: 检测危险关键词和注入模式
自动LIMIT: 为查询添加默认限制,防止大数据集
配置验证: 启动时验证必需配置
连接池: 高效的连接管理,防止连接泄露
SSL支持: 加密数据库连接
🧪 测试
📊 性能优化
连接池: 复用数据库连接,减少连接开销
查询限制: 自动添加 LIMIT 子句,防止大查询
智能缓存: 优化重复查询性能
内存管理: 流式处理大型结果集
🔍 故障排除
连接问题
✅ 检查 MySQL 服务是否运行
✅ 验证
.env文件中的凭据✅ 确保用户具有数据库的 SELECT 权限
✅ 检查网络连接和防火墙设置
配置问题
✅ 确保使用了绝对路径
✅ 验证环境变量设置
✅ 检查 SSL 配置(如适用)
常见错误
"Access denied": 检查用户名/密码和权限"Connection refused": MySQL 服务未运行或端口错误"Unknown database": 数据库不存在"Only SELECT statements are allowed": 尝试执行非只读查询
🚀 开发
开发模式
构建生产版本
运行生产版本
📈 版本历史
v1.0.0 - 初始版本,基础功能
v1.1.0 - 添加连接池和性能优化
v1.2.0 - 增强安全特性和测试覆盖
🤝 贡献
Fork 仓库
创建特性分支 (
git checkout -b feature/amazing-feature)提交更改 (
git commit -m 'Add amazing feature')推送到分支 (
git push origin feature/amazing-feature)创建 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
🆘 支持
如果您遇到问题或有疑问,请:
🎉 感谢使用 MySQL ReadOnly MCP Server!
现在您可以安全地让 AI 助手查询您的 MySQL 数据库了。