Text To SQL
HTTP-SSESecure MySQL database query MCP server with authentication and SQL injection protection
Secure MySQL database query MCP server with authentication and SQL injection protection
一个基于 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