文本转SQL
HTTP-SSE安全MySQL数据库查询MCP服务器
安全MySQL数据库查询MCP服务器
一个基于 FastMCP 框架的安全数据库查询 MCP 服务,用于数据库查询和分析。
本项目是一个 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: 查询结果分析

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 认证模块,负责:
欢迎提交 Issue 和 Pull Request 来改进这个项目。
n8n 工作流自动化模版站,收集了大量可直接使用的自动化流程:https://n8ntemplates.dev