本项目是一个基于 FastMCP 框架的安全数据库查询服务,可用于数据库查询与分析,为用户提供安全、高效的数据库操作体验。
本项目是一个 MCP (Model Context Protocol) 服务器,专门用于提供安全的数据库查询服务。它基于 FastMCP 框架构建,支持 MySQL 数据库连接,并提供了完整的权限管理和安全控制机制。
pip install -r requirements.txt
python >=3.10
fastmcp==2.10.6:MCP 服务器框架。python - dotenv==1.1.0:环境变量加载。mysql - connector - python==8.2.0:MySQL 数据库连接器。uvicorn==0.24.0:ASGI 服务器。复制 .env.example 文件为 .env 并配置数据库连接信息:
cp .env.example .env
编辑 .env 文件:
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=your_database
# 可选:服务器配置
MCP_HOST=127.0.0.1
MCP_PORT=8000
使用提供的 dataset.sql 文件初始化示例数据:
mysql -u your_username -p your_database < dataset.sql
该文件包含了一个 contracts 表的示例数据,包含合同信息。
python mcp_server.py
服务启动后会显示:
Authorization=Bearer ...
🚀 启动 MCP 数据查询服务器...
📍 地址: http://127.0.0.1:8000
📋 可用工具:
- health_check: 健康检查
- get_user_permissions: 获取用户权限
- get_database_tables: 获取数据库表列表
- get_table_structure: 获取表结构
- execute_sql_query: 执行 SQL 查询
- generate_sql_from_question: 自然语言生成 SQL
- analyze_query_result: 查询结果分析

以下是启动服务的命令示例:
python mcp_server.py
在进行数据库初始化时,使用 dataset.sql 文件初始化示例数据:
mysql -u your_username -p your_database < dataset.sql
health_checkget_user_permissionsget_database_tablesdata:read_tables 权限get_table_structuretable_name (string):表名data:read_tables 权限execute_sql_querysql_query (string):SQL 查询语句limit (int, 可选):返回结果的最大行数,默认 100data:read_table_data 权限data:read_tables:读取表结构权限data:read_table_data:读取表数据权限text - to - sql - mcp/
├── mcp_server.py # 主服务器文件
├── database.py # 数据库管理模块
├── auth_token.py # 认证令牌生成模块
├── requirements.txt # 项目依赖
├── .env.example # 环境变量示例
├── dataset.sql # 示例数据库结构和数据
└── README.md # 项目文档
mcp_server.py主服务器文件,包含:
database.py数据库管理模块,提供:
auth_token.py认证模块,负责:
⚠️ 重要提示
- 确保数据库用户权限最小化,只授予必要的查询权限,保障数据库安全。
- 生产环境建议使用 HTTPS 和防火墙保护,确保网络安全。
- 定期更新访问令牌,避免长期使用同一令牌,加强令牌管理。
- 监控查询性能,避免复杂查询影响数据库性能。
欢迎提交 Issue 和 Pull Request 来改进这个项目。
n8n 工作流自动化模版站,收集了大量可直接使用的自动化流程:https://n8ntemplates.dev