Spaces:
Sleeping
Sleeping
# 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. 启动应用 | |
```bash | |
# 给脚本执行权限 | |
chmod +x docker-run.sh docker-stop.sh docker-logs.sh | |
# 启动应用 | |
./docker-run.sh | |
``` | |
### 2. 访问服务 | |
- **Streamlit 应用**: http://localhost:8501 | |
- **MCP服务器**: 通过主应用自动加载,无需单独访问 | |
### 3. 停止服务 | |
```bash | |
./docker-stop.sh | |
``` | |
### 4. 查看日志 | |
```bash | |
# 查看应用日志 | |
./docker-logs.sh streamlit | |
``` | |
## 🔧 架构说明 | |
### 旧架构 (已废弃) | |
- 三个独立的FastAPI HTTP服务 | |
- 分别运行在端口8001、8002、8003 | |
- 需要手动管理服务依赖 | |
### 新架构 (当前使用) | |
- 三个MCP服务器集成到主应用中 | |
- 通过stdio传输方式通信 | |
- 自动工具发现和注册 | |
- 更好的集成性和扩展性 | |
## 📝 MCP服务器功能 | |
### RequestProcessor (service1) | |
- **功能**: 通用请求处理和数据分析 | |
- **工具**: 请求处理、数据验证、服务信息 | |
### DataAnalyzer (service2) | |
- **功能**: 数据分析和统计计算 | |
- **工具**: 数据分析、统计计算、结构分析 | |
### MathComputer (service3) | |
- **功能**: 数学计算和统计函数 | |
- **工具**: 基本运算、高级统计、百分位数计算 | |
## 🔄 配置更新 | |
MCP服务器配置在 `config.json` 中: | |
```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" | |
} | |
} | |
``` | |
## 💡 优势 | |
1. **简化部署**: 只需要启动一个主应用容器 | |
2. **统一管理**: 所有MCP服务器通过主应用管理 | |
3. **自动发现**: 工具自动发现和注册 | |
4. **更好集成**: 与LangChain等框架无缝集成 | |
## 🐛 故障排除 | |
如果MCP服务器加载失败: | |
1. 检查依赖是否正确安装 | |
2. 确认Python版本兼容性(建议3.8+) | |
3. 检查文件路径是否正确 | |
4. 查看主应用日志获取详细信息 | |
## 🔮 扩展建议 | |
可以基于现有MCP服务器模板创建更多专用服务: | |
- 文件处理服务 | |
- 数据库查询服务 | |
- 外部API集成服务 | |
- 机器学习推理服务 |