article
README
🚀 MySQL 模板锅炉plate 项目
本项目提供了一个 MySQL 相关的模板项目,具备清晰的目录结构和架构设计,方便本地执行、部署,同时考虑了扩展性、维护性和安全性等多方面因素。
🚀 快速开始
本地执行
# 配置环境
cp .env.example .env
# 修改 .env 文件以符合需求
# 安装依赖项
pip install -r requirements.txt
# 启动服务器
python mysql_mcp_server/main.py run
✨ 主要特性
- 清晰的目录结构:项目各模块分工明确,便于开发和维护。
- 分层架构设计:接口层、业务逻辑层和数据访问层分离,提高系统的可扩展性。
- 丰富的数据库操作工具:提供了创建表、查看表结构、执行查询等多种工具。
- 良好的扩展性:可以方便地添加新的数据库操作工具。
- 安全保障:从凭证管理、密码策略、网络访问控制和数据传输加密等多方面保障系统安全。
📦 安装指南
使用 Docker 运行
# 构建镜像
docker build -t mysql-mcp .
# 启动容器
docker run --name mysql-mcp-container -p 5000:5000 mysql-mcp
💻 使用示例
基础用法
项目提供了丰富的数据库操作工具,以下是部分工具的使用示例:
# 查看表结构
python mysql_mcp_server/executors/desc_table.py
# 执行 SELECT 查询
python mysql_mcp_server/executors/select_query.py
📚 详细文档
目录结构
以下是项目的目录结构:
MCPBoilerPlate/
├── mysql_mcp_server/ # 主应用程序目录
│ ├── executors/ # 数据库操作执行器
│ │ ├── create_table.py # 创建表的工具
│ │ ├── desc_table.py # 查看表结构的工具
│ │ ├── explain.py # 提供查询执行计划的工具
│ │ ├── insert_query.py # 执行 INSERT 查询的工具
│ │ ├── insight_starter.py # 用于编写报告的架构验证工具
│ │ ├── invoke_viz_pro.py # 可视化图表推荐工具
│ │ ├── select_query.py # 执行 SELECT 查询的工具
│ │ └── show_tables.py # 获取表列表的工具
│ ├── helper/ # 工具模块
│ │ ├── db_conn_helper.py # 管理数据库连接
│ │ ├── logger_helper.py # 日志实用程序
│ │ └── tool_decorator.py # 工具装饰器
│ └── main.py # 应用程序入口点
├── docker-compose.yml # Docker Compose 配置
├── Dockerfile # Docker 镜像构建设置
├── requirements.txt # 依赖项包列表
└── .env.example # 示例环境变量文件
架构设计
分层结构
- 接口层: MCP 服务器 (FastMCP)
- 业务逻辑层: 处理器和执行器
- 数据访问层: 数据库连接和查询执行
关键类和模块
- MySQLMCPServer: 主服务器类,负责初始化并运行 MCP 服务器
- DatabaseManager: 单例模式的数据库连接管理器
- 执行器: 数据库操作的集合工具
- execute_create_table: 创建表
- execute_desc_table: 检查表结构
- execute_explain: 提供查询执行计划
- execute_insert_query: 执行 INSERT 查询
- execute_select_query: 执行 SELECT 查询
- execute_show_tables: 获取表列表
通信流程
- AI 模型从 MCP 服务器请求可用工具的列表。
- 服务器返回可用工具列表。
- AI 模型请求执行特定工具。
- 服务器调用相应的执行器进行数据库操作。
- 执行结果返回给 AI 模型。
扩展性和维护
添加工具
在 executors 目录中实现新工具,并在 __init__.py 中注册它们。
环境变量管理
使用环境变量管理凭证和配置,确保敏感信息不硬编码。
安全考虑
- 凭证管理: 使用环境变量或秘密管理系统存储数据库凭证。
- 强密码策略: 配置安全的密码政策,避免弱密码。
- 网络访问控制: 限制对数据库端口的访问,仅允许必要 IP 地址连接。
- SSL/TLS 加密: 启用 SSL/TLS 加密以确保数据传输安全。
通过遵循这些最佳实践,可以显著提高系统的安全性。
微信扫一扫