内容
# MCP Streamlit Chatbot
本仓库旨在作为在 AWS 部署的 Streamlit 聊天机器人中使用 MCP 的实践。
## 项目结构
```
mcp-streamlit-chatbot/
├── app/ # Streamlit 应用
│ ├── main.py # 主 Streamlit 应用文件
│ ├── mcp_client.py # MCP 客户端实现
│ └── tools/ # 应用特定工具
├── data/ # PDF 和其他文件的数据目录
│ └──
├── docker/ # Docker 配置文件
│ ├── docker-compose.yml # 容器编排
│ ├── Dockerfile.app # Streamlit 应用容器
│ └── Dockerfile.mcp # MCP 服务器容器
├── mcp-server/ # MCP 服务器实现
│ ├── main.py # MCP 服务器入口点
│ └── tools/ # MCP 服务器工具
│ └── summarize_pdf.py
├── Makefile # 构建和部署命令
└── requirements.txt # Python 依赖
```
## 先决条件
- Docker 和 Docker Compose
- Make(可选,用于使用 Makefile 命令)
## 设置和运行
1. 克隆仓库:
```bash
git clone <repository-url>
cd mcp-streamlit-chatbot
```
2. 构建并启动容器:
```bash
make build
make up
```
3. 访问应用:
- Streamlit 应用: http://localhost:8501
- MCP 服务器: http://localhost:8000
## 可用的 Make 命令
该项目包含一个 Makefile,具有以下命令:
```bash
make help # 显示所有可用命令
make build # 构建容器
make up # 以分离模式启动容器
make down # 停止并删除容器
make ps # 列出正在运行的容器
make logs # 显示所有容器的日志
make up-logs # 以前台模式启动容器(带日志)
make clean # 删除所有容器、镜像和卷
make rebuild # 重新构建并重启容器
make restart # 重启容器
```
### 服务特定命令
```bash
# 显示特定服务的日志
make service-logs SERVICE=streamlit-app
# 在容器中执行命令
make exec SERVICE=streamlit-app CMD=bash
```
## 开发
该应用由两个主要组件组成:
1. **Streamlit 应用** (`app/`):
- 提供聊天界面
- 与 MCP 服务器通信
- 处理用户交互
2. **MCP 服务器** (`mcp-server/`):
- 实现 MCP 协议
- 提供 PDF 处理工具
- 处理后端操作
## 数据目录
`data/` 目录被挂载到两个容器:
- Streamlit 应用: `/app/data`
- MCP 服务器: `/mcp/data`
将您想要处理的任何 PDF 或其他文件放置在此目录中。
## 贡献
1. Fork 仓库
2. 创建功能分支
3. 提交您的更改
4. 推送到分支
5. 创建 Pull Request
## 许可证