# 🚀 TraeMysqlMCP:让 AI 直接查询多个 MySQL 数据库的开源 MCP 工具

5 阅读5分钟

前言

在 AI 辅助开发的时代,如何让 AI 更好地理解和操作数据库一直是一个痛点。今天给大家介绍一个我开发的开源项目 —— TraeMysqlMCP ,它实现了标准 MCP 协议,让 AI 能够直接查询和操作多个 MySQL 数据库,完全适配 TRAE SOLO IDE 环境。

项目简介

什么是 TraeMysqlMCP?

TraeMysqlMCP 是一个生产级的 MySQL 多数据源 MCP(Model Context Protocol)工具。它不仅提供了完整的数据库连接池管理、SQL 执行、安全控制等功能,更重要的是实现了标准 MCP 协议,让 AI 可以通过自然语言直接操作数据库。

核心特性 1. 标准 MCP 协议支持 ✨

完全符合 MCP 标准,支持 JSON-RPC 2.0 通信协议,提供 4 个核心工具:

  • query_database - 查询数据库
  • list_datasources - 列出数据源
  • execute_sql - 执行 SQL 语句
  • get_schema - 获取表结构 2. 增强型连接池 🔧
  • 支持动态扩容/缩容
  • 连接使用时长和 SQL 执行耗时监控
  • 线程安全的连接管理
  • 连接池状态可视化监控 3. 企业级安全 🔒
  • AES-256 数据源配置加密
  • SQL 白名单/黑名单机制
  • SQL 执行超时控制
  • 危险 SQL 操作拦截 4. 多数据源支持 📊
  • 同时管理多个 MySQL 数据源
  • 灵活的数据源切换
  • 支持主从库配置
  • 全局配置文件管理

快速开始

安装

# 克隆项目
git clone git@gitee.com:wanhonglei/trae-mysql-mcp.git
cd trae-mysql-mcp

# 安装依赖
pip3 install -r requirements.txt

# 安装项目
pip3 install -e .

配置数据源

创建全局配置文件 ~/.trae-mysql-mcp/mcp_config.json5 :

{
  "datasources": {
    "master": {
      "host": "localhost",
      "port": 3306,
      "user": "root",
      "password": "your_password",
      "database": "production",
      "pool_min_size": 2,
      "pool_max_size": 10
    },
    "slave": {
      "host": "localhost",
      "port": 3307,
      "user": "readonly",
      "password": "your_password",
      "database": "production"
    }
  },
  "security": {
    "blacklist_enabled": true,
    "blacklist": ["DROP", "TRUNCATE", "ALTER", "CREATE"]
  }
}

在 TRAE SOLO IDE 中使用

在 IDE 的 MCP 设置中添加:

{
  "mcpServers": {
    "trae-mysql-mcp": {
      "command": "python3",
      "args": ["-m", "trae_mysql_mcp.mcp_server"]
    }
  }
}

AI 对话示例

配置完成后,您可以直接在 IDE 中与 AI 对话:

用户:请列出所有可用的 MySQL 数据源

AI:我找到了 2 个数据源:
- master (主库)
- slave (从库)
用户:请查询 master 数据源中 users 表的前 10 条记录

AI:查询成功!返回 10 条记录:
| id | name  | email              |
|----|-------|--------------------|
| 1  | Alice | alice@example.com  |
| 2  | Bob   | bob@example.com    |
...

技术架构

整体架构

┌─────────────────────────────────────────┐
│         TRAE SOLO IDE (AI Agent)        │
└────────────────┬────────────────────────┘
                 │ JSON-RPC 2.0 (stdio)
┌────────────────▼────────────────────────┐
│         MCP Server (Python)             │
│  ┌──────────────────────────────────┐  │
│  │   MCP Protocol Handler           │  │
│  └──────────────────────────────────┘  │
│  ┌──────────────────────────────────┐  │
│  │   Tool Implementations           │  │
│  └──────────────────────────────────┘  │
│  ┌──────────────────────────────────┐  │
│  │   MySQL Connection Pool          │  │
│  └──────────────────────────────────┘  │
└─────────────────────────────────────────┘

核心模块

模块 功能 mcp_server.py MCP 服务器主程序 mcp_protocol.py JSON-RPC 2.0 协议处理 mcp_tools.py 4 个核心工具实现 pool.py 连接池管理 executor.py SQL 执行器 monitor.py 性能监控

Python API 使用

除了 MCP 协议,您也可以直接使用 Python API:

from trae_mysql_mcp import TraeMySQLMCP, DataSourceConfig

# 初始化
mcp = TraeMySQLMCP()

# 添加数据源
config = DataSourceConfig(
    name="production",
    host="localhost",
    port=3306,
    user="root",
    password="password",
    database="production"
)
mcp.add_data_source(config)

# 查询数据
mcp.connect('production')
result = mcp.execute('SELECT * FROM users LIMIT 10')
print(result)

# 监控连接池
status = mcp.get_pool_status()
print(f"当前连接数: {status['current_size']}")
print(f"活跃连接数: {status['active_size']}")

当前开发状态

已完成功能 ✅

  • 标准 MCP 协议实现
  • 4 个核心 MCP 工具
  • 增强型连接池管理
  • 数据源配置加密
  • SQL 安全机制
  • 性能监控和报告
  • 完整的单元测试
  • 详细的文档

开发路线图 🗺️ v1.1.0(计划中)

  • 支持 PostgreSQL 数据源
  • 支持 SQLite 数据源
  • 实现 Markdown 表格格式输出
  • 添加查询结果缓存
  • 支持异步 I/O(asyncio) v1.2.0(规划中)
  • 支持 Oracle 数据源
  • 实现数据库迁移工具
  • 添加查询性能分析
  • 支持多租户场景
  • Web 管理界面 v2.0.0(远期目标)
  • 支持分布式部署
  • 实现数据库同步功能
  • AI 智能查询优化建议
  • 支持更多数据库类型

如何贡献

我们非常欢迎社区贡献!以下是参与项目的方式:

1. 报告问题 🐛

如果您在使用过程中遇到问题,请通过以下方式报告:

  • Gitee Issues : 提交 Issue
  • 问题模板 : 请提供详细的问题描述、复现步骤和环境信息

2. 提交功能建议 💡

有好的想法?我们很乐意听取:

  • 在 Issues 中提交功能建议
  • 描述功能的使用场景和预期效果
  • 如果可能,提供实现思路

3. 参与代码开发 💻

想贡献代码?太棒了!

# 1. Fork 项目
# 2. 克隆您的 Fork
git clone https://gitee.com/YOUR_USERNAME/trae-mysql-mcp.git

# 3. 创建功能分支
git checkout -b feature/your-feature-name

# 4. 编写代码和测试
# 确保所有测试通过
pytest tests/ -v

# 5. 提交代码
git commit -m "feat: 添加某某功能"

# 6. 推送到您的 Fork
git push origin feature/your-feature-name

# 7. 创建 Pull Request

4. 改进文档 📚

文档永远有改进空间:

  • 修正错别字或语法错误
  • 补充缺失的文档
  • 添加更多使用示例
  • 翻译文档到其他语言

5. 分享和推广 🌟

  • 在社交媒体上分享项目
  • 写文章介绍您的使用经验
  • 在技术社区推荐项目
  • 给项目点个 Star ⭐

技术亮点

1. 生产级连接池

# 动态调整连接池大小
mcp.resize_pool(min_size=5, max_size=20)

# 监控连接池状态
status = mcp.get_pool_status()
# {
#   "current_size": 8,
#   "active_size": 3,
#   "idle_size": 5,
#   "total_use_count": 156
# }

2. 智能安全控制

{
  "security": {
    "whitelist_enabled": true,
    "whitelist": ["SELECT", "INSERT", "UPDATE"],
    "blacklist_enabled": true,
    "blacklist": ["DROP", "TRUNCATE", "ALTER", "CREATE"]
  }
}

3. 性能监控

# 获取性能报告
report = mcp.get_performance_report()
print(f"总执行次数: {report['summary']['total_sql_executions']}")
print(f"成功率: {report['summary']['success_rate']:.2f}%")
print(f"平均执行时间: {report['summary']['avg_execution_time']:.3f}s")

项目地址

技术栈

  • Python : 3.8+
  • 核心依赖 : pymysql, DBUtils, cryptography, json5
  • 测试 : pytest, pytest-cov
  • 协议 : MCP (Model Context Protocol), JSON-RPC 2.0

许可证

MIT License - 自由使用、修改和分发

联系方式

结语

TraeMysqlMCP 是一个年轻但功能完善的开源项目,旨在解决 AI 时代数据库操作的痛点。无论您是想使用它来提升开发效率,还是想参与开源贡献,我们都非常欢迎!

如果这个项目对您有帮助,请给个 Star ⭐ 支持一下!您的支持是我们持续改进的动力!

相关标签 : #MySQL #MCP #AI #开源 #Python #数据库 #TRAE #工具

阅读更多 :

  • MCP 协议官方文档
  • TRAE SOLO IDE 官网
  • Python 连接池最佳实践