文本到SQL MCP演示🏦
使用 模型上下文协议(MCP) 安全访问AWS数据工具。该项目演示了如何将自然语言查询转换为SQL并在AWS Athena上执行。
✨ 特性
- 智能意图检测:代理人理解您的要求并做出适当回应:
- 简单查询(列表数据库、列表桶)得到直接答案 - 数据查询触发完整的工作流程
- 增强的架构发现:查看带有列详细信息的表结构
- 显示所有表及其列和数据类型 - 深入到特定的表模式
- 多步骤代理工作流:对于数据查询,代理会自动:
1. 列出可用数据库 1. 检索表架构 1. 从自然语言生成SQL 1. 执行查询并返回结果
- MCP服务器工具:
- list_s3_buckets:列出您AWS帐户中的所有S3存储桶 - list_athena_databases:发现可用的Glue/Athena数据库 - get_athena_schema:获取包含列详细信息的表架构 - get_table_schema:获取特定表的详细架构 - run_athena_query:在Athena上执行只读SQL查询
- 安全第一:只有
SELECT允许查询-不允许修改数据
🏗️ 建筑
┌─────────────────────┐ ┌─────────────────────┐
│ Streamlit App │ stdio │ MCP Server │
│ (MCP Client) │◄────────►│ (FastMCP + boto3) │
│ │ │ │
│ User Interface │ │ AWS Tool Registry │
└─────────────────────┘ └─────────────────────┘
│
▼
┌─────────────────────┐
│ AWS APIs │
│ (S3, Athena, Glue) │
└─────────────────────┘📸 截图
首页
用户与银行助理互动的主聊天界面。
列出数据库
只返回数据库列表而不执行查询的简单请求。
显示带列的架构
增强的模式显示,显示表及其列名和数据类型。
查询执行
完整的代理工作流程,显示推理步骤、SQL生成和查询结果。
🚀 快速开始
先决条件
- Python 3.11+
- 配置AWS凭据(通过环境变量或
~/.aws/credentials) - 带有表的Athena数据库(用于查询功能)
安装
- 克隆存储库:
git clone https://github.com/manish6007/text-2-sql-mcp.git
cd text-2-sql-mcp- 安装依赖项:
pip install -r requirements.txt- 运行Streamlit应用程序:
streamlit run streamlit_app.py- 打开浏览器
http://localhost:8501
📁 项目结构
text-2-sql-mcp/
├── mcp_server.py # MCP Server with AWS tools
├── streamlit_app.py # Streamlit UI (MCP Client)
├── requirements.txt # Python dependencies
├── assets/ # Screenshots and media
│ ├── home_page.png
│ ├── list_databases.png
│ ├── schema_with_columns.png
│ └── query_result.png
└── README.md # This file🔧 配置
AWS区域
默认AWS区域设置在 mcp_server.py.修改此行以更改它:
def get_aws_client(service: str, region: str = "us-east-1"):S3输出铲斗
Athena需要一个S3存储桶来存储查询结果。更新中的bucket名称 mcp_server.py:
bucket_name = "your-bucket-name"
output_location = f"s3://{bucket_name}/athena-results/"🛡️ 安全
- 只读查询:只有
SELECT允许发表声明 - 没有硬编码凭据:使用AWS环境变量或IAM角色
- 显式工具调用:所有操作都以清晰的工具名称记录
📄 许可证
MIT许可证
🤝 贡献
欢迎投稿!请随时提交拉取请求。
