streamlit-macp-agents / DOCKER_README.md
jackkuo's picture
update
2de095a

A newer version of the Streamlit SDK is available: 1.49.1

Upgrade

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. 访问服务

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"
  }
}

💡 优势

  1. 简化部署: 只需要启动一个主应用容器
  2. 统一管理: 所有MCP服务器通过主应用管理
  3. 自动发现: 工具自动发现和注册
  4. 更好集成: 与LangChain等框架无缝集成

🐛 故障排除

如果MCP服务器加载失败:

  1. 检查依赖是否正确安装
  2. 确认Python版本兼容性(建议3.8+)
  3. 检查文件路径是否正确
  4. 查看主应用日志获取详细信息

🔮 扩展建议

可以基于现有MCP服务器模板创建更多专用服务:

  • 文件处理服务
  • 数据库查询服务
  • 外部API集成服务
  • 机器学习推理服务