9.6 KiB
9.6 KiB
更新日志 (CHANGELOG)
本文档记录 MCP Client Vue 的所有重要更改。
[v1.0.2+] - 2025-10-15
🎯 重大架构升级:Cherry Studio 风格实现
本版本完整实现 Cherry Studio 架构风格的 MCP 工具调用,提供智能化的工具参数生成和执行。
✨ 核心特性
1. 工具名称前缀机制
- ✅
serverName__toolName格式避免多服务器工具名冲突 - ✅ 自动转换:
public_content→xiaohongshu__public_content - ✅ 执行时自动解析:提取真实工具名传递给 MCP 服务器
- 📝 实现位置:
chatService.convertToolsToOpenAIFormat()
2. System Prompt 自动生成
- ✅ 详细的工具描述列表(名称、描述、参数说明)
- ✅ 参数标注(必填/可选、类型、描述)
- ✅ 5 条使用指南(任务分析、内容创作、参数生成、工具调用、结果反馈)
- ✅ 4 条注意事项(内容质量、标签、分类、错误处理)
- ✅ 当前 MCP 服务器名称标识
- 📝 实现位置:
chatService.createSystemPromptWithTools()
3. 智能参数自动注入
- ✅ AI 理解用户意图自动创作内容
- ✅ 自动生成所有必需参数(标题、正文、标签、分类等)
- ✅ 符合平台特色的内容风格
- 📝 示例:用户说"发布酸菜鱼教程",AI自动生成完整文章
4. 完整对话流程
用户输入 → 获取工具 → 添加前缀 → 生成System Prompt
→ AI理解+创作 → 调用工具 → 解析名称 → 执行MCP
→ 返回结果 → AI生成友好回复
🔧 代码改进
chatService.ts
- ✅ Line 16: 使用
mcpClientService单例(修复关键bug) - ✅ Line 591-603: MCP 服务器名称提取和工具收集
- ✅ Line 610-620: System Prompt 自动注入到消息列表
- ✅ Line 801-843:
createSystemPromptWithTools()新方法 - ✅ Line 845-857:
convertToolsToOpenAIFormat()添加前缀 - ✅ Line 907-920:
executeToolCalls()解析工具名称
modelServiceManager.ts
- ✅ Line 408-446:
sendChatRequestStream()支持 tools 和 toolCalls - ✅ Line 615-633: 详细的模型选择验证日志
- ✅ Line 736-765: SSE 解析增强,累积 tool_calls
MCPClientService.ts
- ✅ Line 460:
getServerInfo()获取服务器名称 - ✅ Line 500: 单例导出确保全局唯一实例
📖 文档更新
- ✅
docs/mcp-tool-calling-example.md- 完整示例文档(9步流程详解) - ✅
docs/CHERRY_STUDIO_IMPLEMENTATION.md- 架构实现总结
🎯 使用示例
简单场景
用户: 帮我发布小红书文章,内容是:如何制作一道酸菜鱼
AI:
1. 自动创作完整文章(标题、正文、标签、分类)
2. 调用 xiaohongshu__public_content 工具
3. 返回: "✅ 文章已成功发布!\n\n📝 标题:...\n🔗 链接:..."
多工具场景
用户: 把这篇文章同时发到小红书和微博
AI:
1. 为小红书创作合适格式 → xiaohongshu__public_content
2. 为微博创作合适格式 → weibo__post_status
3. 返回两个平台的发布结果
🏆 对比 Cherry Studio
| 特性 | mcp-client-vue | Cherry Studio |
|---|---|---|
| 工具名称前缀 | ✅ serverName__toolName |
✅ |
| System Prompt | ✅ 自动生成,详细指南 | ✅ |
| 参数自动生成 | ✅ AI 完全自动 | ✅ |
| 多轮对话 | ✅ 完整支持 | ✅ |
| 流式响应 | ✅ SSE 真流式 | ✅ |
实现完成度: 100% ✅
架构对齐: 完全一致 ✅
[v1.0.2] - 2025-10-14
🎯 重大功能:MCP 工具调用集成
本版本实现了完整的 MCP 工具调用功能,AI 可以智能调用 MCP 服务器提供的工具并整合结果。
✨ 新增功能
智能工具调用
- ✅ AI 自动识别何时需要调用工具
- ✅ 支持 OpenAI Function Calling 协议
- ✅ 兼容多个 AI 服务商(OpenAI、火山引擎、阿里云等)
- ✅ 完整的多轮对话支持(AI → Tool → AI)
- ✅ 实时显示工具调用进度和状态
流式工具执行
- ✅ 流式体验不中断
- ✅ 友好的状态提示(🔧 调用中、✅ 完成、❌ 失败、🤖 生成回复)
- ✅ 工具格式自动转换(MCP → OpenAI Function 格式)
🛠️ 技术实现
服务层增强
- ✅
MCPClientService.getTools()- 获取工具列表 - ✅
chatService.convertToolsToOpenAIFormat()- 格式转换 - ✅
chatService.executeToolCalls()- 工具执行逻辑 - ✅
modelServiceManager.sendChatRequestStream()- 工具参数支持
流式解析改进
- ✅ SSE 流中检测和收集
tool_calls - ✅ 正确拼接多个流片段的工具调用数据
- ✅ 支持完整的 OpenAI 工具调用消息格式
🐛 Bug 修复
- ✅ 修复 MCPClientService 类型导入问题
- ✅ 修复 types.ts 和 types/index.ts 路径冲突
- ✅ 修复 modelServiceManager 返回类型
- ✅ 修复未使用变量警告
📦 使用方式
- 在"模型服务"中添加支持函数调用的 AI 服务
- 在"MCP 设置"中添加并连接工具服务器
- 在对话界面选择模型和 MCP 服务器
- 发送消息,AI 会自动调用相关工具并整合结果
[v1.0.1] - 2025-10-14
🎉 主要改进(基于v1.0.0的深度优化)
🎉 新增功能
服务器管理
- ✅ 完善的服务器配置表单(名称、URL、类型、描述、环境变量)
- ✅ 服务器详情编辑功能(支持工具、提示、资源配置)
- ✅ 连接测试功能(支持HTTP和SSE两种传输类型)
- ✅ 自动重连功能(页面刷新后自动恢复连接状态)
- ✅ 实时连接状态显示
传输协议支持
- ✅ HTTP传输模式(使用
/mcp端点) - ✅ SSE传输模式(使用
/sse端点) - ✅ 自动URL转换(
0.0.0.0和127.0.0.1→localhost)
UI/UX改进
- ✅ 编辑按钮正常工作,打开服务器详情模态框
- ✅ 服务器详情页面正确显示(修复空白页问题)
- ✅ 表单数据正确填充(深度监听对象变化)
- ✅ 模态框样式优化(90vw宽度,最大1200px,最大高度90vh)
🐛 Bug修复
连接问题
- ✅ 修复HTTP服务器406错误(缺少Accept头)
- ✅ 修复SSE服务器404错误(POST请求错误路径)
- ✅ 修复页面刷新后服务器显示未连接的问题
- ✅ 修复浏览器无法访问0.0.0.0地址的问题
UI问题
- ✅ 修复编辑按钮点击无响应
- ✅ 修复模态框显示空白页面(组件高度100%问题)
- ✅ 修复表单字段不填充数据(watch监听器问题)
构建问题
- ✅ 升级vue-tsc(1.8.25 → 2.0.6)
- ✅ 升级TypeScript(5.2.2 → 5.3.3)
- ✅ 添加
build:skip-check脚本用于开发构建
🔧 技术改进
MCPClientService.ts
- ✅ HTTP客户端自动添加
/mcp路径 - ✅ 所有HTTP请求包含正确的Accept头(
application/json, text/event-stream) - ✅ URL标准化处理(移除末尾斜杠、转换地址)
- ✅ 改进的错误处理和日志输出
MCPSettings.vue
- ✅ 根据服务器类型使用不同的测试方法
- SSE:GET请求测试连接
- HTTP:POST请求测试MCP初始化
- ✅ 添加自动重连功能(onMounted钩子)
- ✅ 改进的模态框结构(使用n-card包装)
MCPServerDetail.vue
- ✅ 组件高度改为
min-height: 500px - ✅ watch监听器添加
deep: true选项 - ✅ 改进的updateFormData函数(详细日志、错误处理)
- ✅ 表单数据验证和初始化
newServer.ts (Pinia Store)
- ✅ 实现autoReconnect功能
- 读取localStorage中原始连接状态
- 并行重连所有之前已连接的服务器
- Promise.allSettled容错处理
- ✅ loadServers改进(正确处理连接状态)
📝 代码优化
日志改进
- 🔍 添加emoji前缀日志(🔄、🔍、✅、❌、📡)
- 📊 详细的步骤日志(6步打开详情、4步更新表单)
- 🐛 错误追踪和调试信息
类型安全
- ✨ 改进的TypeScript类型定义
- ✨ 更好的类型推断和检查
📚 文档更新
新增文档
- 📄
CHANGELOG.md- 版本更新日志(本文件) - 📄
VERSION_1.3.5_GUIDE.md- 版本1.3.5使用指南 - 📄
FIX_REPORT.md- 修复报告 - 📄
AUTO_RECONNECT_GUIDE.md- 自动重连功能文档
已有文档
- 📄
debug-ui.md- UI调试指南 - 📄
TYPESCRIPT_FIXES.md- TypeScript错误修复 - 📄
MODAL_FIX_GUIDE.md- 模态框修复指南 - 📄
BLANK_PAGE_FIX.md- 空白页问题修复
🎯 配置要求
HTTP服务器配置
类型: http
URL示例:
- http://localhost:3100
- http://localhost:3100/mcp
说明: 代码会自动添加/mcp路径
SSE服务器配置
类型: sse
URL示例:
- http://localhost:3200/sse
说明: 必须包含/sse路径
⚙️ 开发环境
- Node.js: 22.19.0
- Vue: 3.4.15
- Vite: 7.1.9 (开发) / 5.4.20 (构建)
- TypeScript: 5.3.3
- vue-tsc: 2.0.6
- Naive UI: 2.43.1
🔄 迁移指南
从旧版本升级到1.3.5:
-
更新依赖
cd web npm install -
检查服务器配置
- HTTP服务器:确保URL格式正确
- SSE服务器:URL必须包含
/sse路径
-
清除浏览器缓存
- 清除localStorage
- 刷新页面
-
重新配置服务器
- 如果遇到连接问题,删除旧配置重新添加
🐛 已知问题
- TypeScript类型错误(47个错误,不影响功能)
- App.vue: 15个错误
- ServerCard.vue: 3个错误
- ToolForm.vue: 23个错误
- MCPClientService.ts: 4个错误
- 计划在下个版本修复
🙏 致谢
感谢所有测试和反馈的用户!
[1.0.0] - 2025-10-12
初始版本
- 基础MCP客户端功能
- Vue 3 + TypeScript + Naive UI
- HTTP和SSE传输支持
- 基本的服务器管理功能