Spaces:
Sleeping
Sleeping
A newer version of the Streamlit SDK is available:
1.49.1
Docker 化 MCP Hub Streamlit 应用
本项目已完全 Docker 化,现在使用MCP(Model Context Protocol)服务器架构。
🏗️ 项目架构
.
├── app.py # 主 Streamlit 应用
├── requirements.txt # 主应用依赖
├── Dockerfile # 主应用 Docker 镜像
├── docker-compose.yml # Docker Compose 配置
├── docker-config.json # Docker 环境配置文件
├── docker-run.sh # 启动脚本
├── docker-stop.sh # 停止脚本
├── docker-logs.sh # 日志查看脚本
├── config.json # MCP服务器配置
└── python-services/ # MCP服务器目录
├── service1/ # RequestProcessor MCP服务器
│ ├── mcp_server.py # MCP服务器实现
│ └── requirements.txt # MCP服务器依赖
├── service2/ # DataAnalyzer MCP服务器
│ ├── mcp_server.py # MCP服务器实现
│ └── requirements.txt # MCP服务器依赖
└── service3/ # MathComputer MCP服务器
├── mcp_server.py # MCP服务器实现
└── requirements.txt # MCP服务器依赖
🚀 快速开始
1. 启动应用
# 给脚本执行权限
chmod +x docker-run.sh docker-stop.sh docker-logs.sh
# 启动应用
./docker-run.sh
2. 访问服务
- Streamlit 应用: http://localhost:8501
- MCP服务器: 通过主应用自动加载,无需单独访问
3. 停止服务
./docker-stop.sh
4. 查看日志
# 查看应用日志
./docker-logs.sh streamlit
🔧 架构说明
旧架构 (已废弃)
- 三个独立的FastAPI HTTP服务
- 分别运行在端口8001、8002、8003
- 需要手动管理服务依赖
新架构 (当前使用)
- 三个MCP服务器集成到主应用中
- 通过stdio传输方式通信
- 自动工具发现和注册
- 更好的集成性和扩展性
📝 MCP服务器功能
RequestProcessor (service1)
- 功能: 通用请求处理和数据分析
- 工具: 请求处理、数据验证、服务信息
DataAnalyzer (service2)
- 功能: 数据分析和统计计算
- 工具: 数据分析、统计计算、结构分析
MathComputer (service3)
- 功能: 数学计算和统计函数
- 工具: 基本运算、高级统计、百分位数计算
🔄 配置更新
MCP服务器配置在 config.json
中:
{
"request_processor": {
"command": "python",
"args": ["./python-services/service1/mcp_server.py"],
"transport": "stdio"
},
"data_analyzer": {
"command": "python",
"args": ["./python-services/service2/mcp_server.py"],
"transport": "stdio"
},
"math_computer": {
"command": "python",
"args": ["./python-services/service3/mcp_server.py"],
"transport": "stdio"
}
}
💡 优势
- 简化部署: 只需要启动一个主应用容器
- 统一管理: 所有MCP服务器通过主应用管理
- 自动发现: 工具自动发现和注册
- 更好集成: 与LangChain等框架无缝集成
🐛 故障排除
如果MCP服务器加载失败:
- 检查依赖是否正确安装
- 确认Python版本兼容性(建议3.8+)
- 检查文件路径是否正确
- 查看主应用日志获取详细信息
🔮 扩展建议
可以基于现有MCP服务器模板创建更多专用服务:
- 文件处理服务
- 数据库查询服务
- 外部API集成服务
- 机器学习推理服务