一个基于 MCP (Model Context Protocol) 的智能对话助手Web应用,支持实时聊天、工具调用和对话历史管理。
- 🚀 前后端分离: FastAPI后端 + 原生前端,架构清晰
- 💬 实时通信: WebSocket支持流式对话和工具调用进度
- 🔧 MCP工具集成: 支持多种MCP工具扩展AI能力
- 📊 对话历史: SQLite数据库存储完整对话记录
- 🎨 现代UI: 响应式设计,支持Markdown渲染
- ⚙️ 灵活配置: 支持多环境部署配置
- 📖 技术文档: 详细的MCP业务层构建指南
┌─────────────┐ WebSocket ┌──────────────┐ MCP Protocol ┌─────────────┐
│ 前端界面 │ ←────────────→ │ FastAPI后端 │ ←───────────────→ │ MCP工具服务 │
│ (HTML/JS) │ REST API │ (Python) │ │ (金融数据等) │
└─────────────┘ └──────────────┘ └─────────────┘
│
▼
┌──────────────┐
│ SQLite数据库 │
│ (对话历史) │
└──────────────┘
- Python: 3.8+
- Node.js: 可选(仅用于前端开发)
- 浏览器: 支持WebSocket的现代浏览器
git clone https://github.com/guangxiangdebizi/WebwithMCP.git
cd WebwithMCP
cd backend
pip install -r requirements.txt
在项目根目录创建 .env
(或复制 .env.example
为 .env
)并填写:
# OpenAI/兼容接口配置
OPENAI_API_KEY=your-api-key-here
OPENAI_BASE_URL=https://api.deepseek.com/v1
OPENAI_MODEL=deepseek-chat
OPENAI_TEMPERATURE=0.2
OPENAI_TIMEOUT=60
# 后端端口(可选,默认8003,与前端配置保持一致)
BACKEND_PORT=8003
编辑 backend/mcp.json
文件添加您的MCP工具服务器:
{
"servers": {
"finance-data-server": {
"url": "http://106.14.205.176:3101/sse",
"transport": "sse"
},
"your-custom-server": {
"url": "http://your-server-url:port",
"transport": "sse"
}
}
}
编辑 frontend/config.json
文件配置后端地址:
{
"backend": {
"host": "localhost",
"port": 8003,
"protocol": "http",
"wsProtocol": "ws"
},
"api": {
"baseUrl": "http://localhost:8003",
"wsUrl": "ws://localhost:8003"
}
}
cd backend
uvicorn main:app --reload --host 0.0.0.0 --port 8003
方式1:直接打开HTML文件
# 在浏览器中打开
open frontend/index.html
方式2:使用HTTP服务器(推荐)
cd frontend
python -m http.server 3000
# 然后访问 http://localhost:3000
WebwithMCP/
├── backend/ # 后端代码
│ ├── main.py # FastAPI应用入口
│ ├── mcp_agent.py # MCP智能体核心逻辑
│ ├── database.py # 数据库操作
│ ├── mcp.json # MCP服务器配置
│ ├── requirements.txt # Python依赖
│ └── chat_history.db # SQLite数据库文件
│
├── frontend/ # 前端代码
│ ├── index.html # 主聊天页面
│ ├── tools.html # 工具列表页面
│ ├── config.json # 前端配置文件
│ ├── css/
│ │ ├── style.css # 主样式文件
│ │ └── tools.css # 工具页面样式
│ ├── js/
│ │ ├── chat.js # 聊天功能逻辑
│ │ ├── ws.js # WebSocket通信
│ │ └── config.js # 配置管理
│ └── 配置说明.md # 前端配置详细说明
│
├── README.md # 项目说明文档
└── requirements.txt # 项目总依赖
- 打开前端页面,等待WebSocket连接成功
- 在输入框中输入问题
- 按回车键或点击发送按钮
- 观察AI回复和工具调用过程
智能助手会自动识别需要调用的工具:
- 金融数据查询: 股票价格、市场数据等
- 数据分析: 图表生成、统计分析
- 更多工具: 根据配置的MCP服务器扩展
- 所有对话自动保存到SQLite数据库
- 可通过API接口查询历史记录
- 支持按会话ID和时间范围过滤
- 路径:
/ws/chat
- 功能: 实时聊天通信
- 消息格式:
// 发送消息 {"type": "user_msg", "content": "用户输入"} // 接收消息 {"type": "ai_response_chunk", "content": "AI回复片段"} {"type": "tool_start", "tool_name": "工具名", "progress": "执行中"} {"type": "tool_end", "tool_name": "工具名", "result": "执行结果"}
接口 | 方法 | 说明 |
---|---|---|
/api/tools |
GET | 获取可用工具列表 |
/api/history |
GET | 获取对话历史 |
/ |
GET | API状态信息 |
# 后端开发模式
cd backend && uvicorn main:app --reload --port 8003
# 前端开发服务器
cd frontend && python -m http.server 3000
# Dockerfile示例
FROM python:3.9-slim
WORKDIR /app
COPY backend/ .
RUN pip install -r requirements.txt
EXPOSE 8003
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8003"]
server {
listen 80;
server_name your-domain.com;
# 前端静态文件
location / {
root /path/to/frontend;
try_files $uri $uri/ /index.html;
}
# 后端API
location /api/ {
proxy_pass http://localhost:8003;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# WebSocket
location /ws/ {
proxy_pass http://localhost:8003;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
- 在
backend/mcp.json
中添加新的服务器配置 - 重启后端服务,工具会自动加载
- 前端无需修改,会自动识别新工具
编辑 frontend/css/style.css
文件:
:root {
--primary-color: #your-color;
--background-color: #your-bg;
/* 更多样式变量 */
}
参考 backend/database.py
文件,基于SQLite架构扩展:
async def your_custom_function(self):
# 自定义数据库操作
pass
我们欢迎所有形式的贡献!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开 Pull Request
如果您有任何问题或建议,欢迎联系:
- GitHub: guangxiangdebizi/WebwithMCP
- Email: guangxiangdebizi@gmail.com
- LinkedIn: Xingyu Chen
本项目采用 MIT 许可证。详见 LICENSE 文件。
感谢以下开源项目:
- FastAPI - 现代、快速的Web框架
- LangChain - AI应用开发框架
- Model Context Protocol - AI工具集成协议
⭐ 如果这个项目对您有帮助,请给它一个星标!