使用说明
简单MCP客户端
一个连接到LLM提供商并利用MCP(模型上下文协议)服务器工具的全栈聊天应用程序。具有干净、现代的界面,具有全面的工具执行和可视化功能。
当前状态
此应用程序是 功能齐全,生产就绪 具有强大的错误处理能力:
✅ 完整的工具执行流程:端到端工具调用,并提供LLM后续响应
✅ 智能错误恢复:任何MCP服务器验证错误的自动参数校正
✅ 稳健的错误处理:全面的工具故障恢复和OpenAI API合规性
✅ 专业用户界面:带有实时状态指示器的可折叠工具调用显示
✅ 多LLM支持:OpenAI、Gemini和Bedrock兼容的API
✅ MCP服务器管理:远程和本地MCP服务器支持流程管理
✅ 实时状态:实时连接状态和服务器运行状况监控
✅ 暗/亮模式:设计简洁,主题切换持久
✅ 聊天管理:清晰的聊天功能和消息历史记录
✅ 对话历史:多回转工具对话的适当OpenAI API合规性
✅ 重试机制:用于参数校正的验证错误的智能重试逻辑
特性
- 现代聊天界面:使用markdown支持和用户/助理消息气泡清洁UI
- 完成工具执行:执行工具时,将结果反馈给LLM以获得自然反应
- 工具可视化:可扩展的工具调用显示,显示带有状态指示器的请求/响应详细信息
- 高级错误处理:通过智能参数校正从工具故障中自动恢复
- OpenAI API合规性:对多回合工具交互进行适当的对话历史管理
- MCP服务器集成:通过自动工具发现连接和管理多个MCP服务器
- 本地和远程服务器:支持基于HTTP和基于本地进程的MCP服务器
- 流程管理:通过运行状况监控自动启动/关闭服务器
- 多LLM支持:OpenAI、Gemini和Bedrock兼容的API
- 实时更新:实时连接状态和服务器管理
- 响应式设计:适用于台式机和移动设备
- 通用MCP兼容性:通过通用错误解析与任何MCP服务器配合使用
技术栈
- 前端:React+TypeScript+Vite
- 用户界面库:Shadcn/ui+顺风CSS+Lucide图标
- 状态管理状态:
- 后端:快速API+Python 3.8+
- 数据库:SQLite(基于文件)
- 协议:JSON-RPC 2.0上的MCP(HTTP和stdio)
- 降价:ReactMarkdown用于丰富的消息呈现
快速开始
1.自动设置(推荐)
从项目根目录运行安装脚本:
./setup.sh
此脚本将:
- 检查系统先决条件(Python 3.8+、Node.js 16+、npm)
- 创建和配置Python虚拟环境
- 安装所有Python依赖项
- 安装所有Node.js依赖项
- 初始化数据库
- 提供启动应用程序的明确说明
2.快速开发启动(推荐)
该应用程序支持多种部署环境。使用统一的启动脚本运行后端和前端:
本地开发(默认)
./start-dev.sh
# or: ./start-dev.sh local
车间/Kubernetes环境(Instruqt等)
当后端无法通过localhost访问时,请使用代理模式:
./start-dev.sh proxy
这通过前端开发服务器代理API请求,以避免外部端口访问问题。
自定义后端URL
对于远程后端或自定义部署:
./start-dev.sh custom https://your-backend-url/api
# or: VITE_API_BASE_URL=https://your-backend-url/api ./start-dev.sh custom
快速参考-启动选项
| 命令 | 用例 | 描述 |
|---|---|---|
./start-dev.sh |
本地开发 | 默认模式,两台服务器都在本地主机上 |
./start-dev.sh proxy |
研讨会,Kubernetes | 前端代理API请求 |
./start-dev.sh custom URL |
远程后端 | 自定义后端URL |
脚本将:
- 启动后端服务器
http://localhost:8002 - 启动前端服务器
http://localhost:5173(或下一个可用端口) - 将所有输出记录到
logs/backend.log和logs/frontend.log - 按Ctrl+C时处理优雅关机
- 显示实时状态和URL
要停止服务器,请执行以下操作:
按 Ctrl+C 在运行脚本的终端中。
实时监控日志:
# Backend logs
tail -f logs/backend.log
# Frontend logs
tail -f logs/frontend.log
3.手动设置
如果您更喜欢手动设置或需要进行故障排除:
后端设置
-
导航到后端目录:
cd backend -
创建Python虚拟环境:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
安装依赖项:
pip install -r requirements.txt -
启动FastAPI服务器:
python main.py
API将于 http://localhost:8002
前端设置
-
导航到前端目录:
cd frontend -
安装依赖项:
npm install -
启动开发服务器:
npm run dev
该应用程序将在 http://localhost:5173
用法
入门指南
-
配置LLM提供程序:
- 单击右上角的设置图标
- 添加您的法学硕士提供者(OpenAI、Gemini或Bedrock)
- 输入API密钥并配置设置
- 连接后,状态指示灯将变为绿色
-
添加MCP服务器 (可选):
- 在设置中,转到MCP服务器部分
- 添加远程或本地MCP服务器
- 启动服务器并验证工具发现
- LLM将自动使用工具
-
开始聊天:
- 返回聊天界面
- 提问或请求工具使用
- 观察工具在可折叠显示中执行
- 根据工具结果获取自然语言响应
交互示例
- “纽约的天气怎么样?” -使用气象MCP工具
- “搜索有关…的信息” -使用搜索/web MCP工具
- “分析此数据…” -使用分析MCP工具
- 一般对话 -无需工具的直接LLM响应
配置
LLM提供商
该应用程序支持多个LLM提供程序:
- OpenAI兼容:
- OpenAI API
- 当地模特(Ollama、LM Studio等)
- 其他与OpenAI兼容的端点
- 谷歌双子座:直接Gemini API集成
- AWS基岩:克劳德、泰坦和其他基岩模型
MCP服务器
支持两种类型的MCP服务器:
远程MCP服务器(HTTP)
连接到基于HTTP的MCP服务器:
- 名字:服务器的显示名称
- 统一资源定位符:JSON-RPC通信的HTTP端点
- API密钥:可选身份验证令牌
- 自动发现:在连接时发现工具
本地MCP服务器(进程)
将MCP服务器作为本地进程运行:
- 名字:服务器的显示名称
- 命令:可执行命令(例如。,
uv,npx,python) - 参数:命令参数(每行一个)
- 工作目录:运行命令的可选目录
- 自动启动:是否自动启动服务器
- 流程管理:自动启动、运行状况监视和清理
本地服务器配置示例:
Name: Weather Server
Command: uv
Arguments:
run
weather.py
Working Directory: /path/to/weather-mcp/weather
Auto-start: Yes
安全说明
⚠️ 这是一个演示应用程序 专为开发和测试目的而设计。当前安全考虑:
- API密钥是用基本哈希存储的(不是生产就绪加密)
- 未实施身份验证/授权系统
- 本地MCP服务器以用户权限运行
- CORS已启用用于开发(仅限本地主机)
- 综合测井可能会在开发模式下暴露敏感数据
用于生产用途,实施:
- 对敏感数据存储进行适当加密
- 用户身份验证和会话管理
- API速率限制和输入验证
- 安全MCP服务器沙盒
- 数据库访问控制
- 审核和清理所有日志输出
看 CLAUDE.md 详细的安全改进任务和实施指导。
建筑
后端结构
backend/
├── app/
│ ├── api/routes.py # FastAPI endpoints
│ ├── core/database.py # SQLite database operations
│ ├── models/schemas.py # Pydantic models
│ └── services/
│ ├── llm_service.py # LLM provider integrations
│ ├── mcp_client.py # Remote MCP protocol client
│ └── local_mcp_manager.py # Local MCP process management
├── logs/ # Application and MCP server logs
└── main.py # FastAPI application with lifespan management
前端结构
frontend/
├── src/
│ ├── components/
│ │ ├── ui/ # Shadcn/ui components
│ │ ├── ChatInterfaceSimple.tsx # Main chat interface with tool execution
│ │ └── SettingsPage.tsx # Configuration management
│ ├── lib/
│ │ ├── api.ts # Backend API client
│ │ └── utils.ts # Utility functions
│ ├── store/
│ │ └── useStore.ts # Zustand state management
│ └── types/
│ └── api.ts # TypeScript interfaces
├── public/
│ └── robot-logo.png # Application logo
└── AppMinimal.tsx # Main application component
关键组件
- 聊天接口简单:使用UI完成工具执行管道
- 工具显示:可折叠工具可视化组件
- 本地MCPManager:本地MCP服务器的流程管理
- LLMS服务:多提供商LLM集成与工具调用
- 数据库:用于配置和服务器状态的SQLite存储
API终点
核心终点
GET /-API状态POST /api/chat-发送带有工具执行支持的消息GET /api/llm/configs-列出LLM配置POST /api/llm/configs-创建LLM配置POST /api/llm/configs/{id}/activate-激活LLM配置
MCP管理
GET /api/mcp/servers-列出所有MCP服务器GET /api/mcp/servers/{id}-使用工具获取服务器详细信息POST /api/mcp/servers-创建MCP服务器POST /api/mcp/servers/{id}/start-启动本地MCP服务器POST /api/mcp/servers/{id}/stop-停止本地MCP服务器POST /api/mcp/call-tool-执行MCP工具
发展
运行开发服务器
建议使用合并脚本:
# Start both servers
./start-dev.sh
# Stop both servers
./stop-dev.sh
发展现状和路线图
该应用程序功能齐全,最近对错误处理和OpenAI API合规性进行了改进。有关详细的开发计划和改进任务,请参阅 CLAUDE.md.
最近的改进(已完成):
- ✅ 修复了关键工具执行错误和OpenAI API合规性问题
- ✅ 为MCP验证错误添加了智能参数校正
- ✅ 为失败的工具调用实现了强大的重试机制
- ✅ 增强对话历史管理,实现多回合互动
- ✅ 为所有工具调用场景添加了全面的错误响应处理
计划改进 (按优先级排列 CLAUDE.md):
- 🔄 第1周(关键):代码质量修复、错误边界、性能日志记录
- 🔄 第2周(建筑):重构大型组件,优化重新渲染,添加缓存
- 🔄 第3周(用户体验):用户友好的错误消息、进度指示器、干净的显示
- 🔄 第4周(波兰语):单元测试、安全审计、TypeScript严格模式
对于贡献者:参见 CLAUDE.md 获取详细的技术指导、架构文档以及包含特定文件位置和实现细节的全面任务列表。
手动方法:
-
后端开发:
cd backend source venv/bin/activate # Windows: venv\Scripts\activate python main.py -
前端开发:
cd frontend npm run dev
主要开发特征
- 热重新加载:前端和后端都支持热重载
- 日志记录:全面记录
logs/目录 - 流程管理:自动MCP服务器生命周期管理
- 错误处理:根据用户反馈进行优雅的错误处理
- 状态管理:Zustand的持久UI状态
截图
- Chat Conversation with tool call- Settings page for LLMs and MCP servers
贡献
这是一个示范项目。您可以根据自己的需要自由地分叉和扩展它。
许可证
Apache许可证2.0
