Affected area
MCP / tools
Problem or use case
当前聊天输入区的 MCP 工具选择是按工具扁平展示的。配置一个 MCP 服务后,如果该服务暴露多个工具,用户需要逐个勾选,操作成本较高,也不容易理解这些工具属于同一个 MCP 服务。
从现有代码看,前端已经能拿到每个工具的 serverID 和 serverName,后端发送消息时仍然按 selectedToolIDs 解析具体工具 schema。因此底层按工具传递是合理的,但前端交互可以优化为“按 MCP 服务聚合展示”。
Proposed behavior
优化聊天输入区的 MCP 工具选择交互(仅供参考,按照实际体验更佳的来):
- MCP 工具选择弹层中按 MCP 服务分组展示。
- 每个 MCP 服务作为一级项展示:
- 服务名称
- 已选工具数 / 可用工具数
- 一键选择或取消该服务下所有可用工具
- 服务下的具体工具作为二级项展示,可展开查看和单独勾选。
- 默认展示服务级列表,避免工具很多时全部铺开。
- 搜索时同时匹配服务名称、工具名称和工具描述。
- 选中整个 MCP 服务时,实际提交仍然使用该服务下的
selectedToolIDs,保持现有后端协议兼容。
- 如果服务下工具数量超过当前接口限制,应给出清晰提示,避免发送时才失败。
- 管理后台仍保留按具体工具启用、停用和编辑描述的能力。
Alternatives considered
继续保持当前扁平工具列表,但 MCP 服务工具较多时体验较差,用户需要逐个勾选,也很难快速判断某个工具属于哪个 MCP 服务。
也可以新增 selectedMCPServerIDs 让后端按服务展开工具,但当前 DTO 已包含 serverID/serverName,前端可以先完成聚合交互,同时继续提交 selectedToolIDs,改动更小、兼容性更好。
Compatibility, deployment, or migration impact
配置变更:预计不需要。
API 变更:短期预计不需要,前端可基于现有 selectedToolIDs 和工具列表完成聚合展示。
数据库迁移:预计不需要。
部署变更:预计不需要。
向后兼容:现有 MCP 服务、工具配置和消息发送逻辑保持不变,仅优化前端选择体验。
Documentation or API contract impact
可以补充说明 MCP 工具选择的交互规则:
- MCP 服务可作为分组整体选择。
- 实际调用时仍按具体工具 schema 暴露给模型。
- 管理员可以在后台控制每个工具是否可用。
- 单次消息可选择的工具数量仍受后端限制约束。
Pre-submit checklist
Affected area
MCP / tools
Problem or use case
当前聊天输入区的 MCP 工具选择是按工具扁平展示的。配置一个 MCP 服务后,如果该服务暴露多个工具,用户需要逐个勾选,操作成本较高,也不容易理解这些工具属于同一个 MCP 服务。
从现有代码看,前端已经能拿到每个工具的
serverID和serverName,后端发送消息时仍然按selectedToolIDs解析具体工具 schema。因此底层按工具传递是合理的,但前端交互可以优化为“按 MCP 服务聚合展示”。Proposed behavior
优化聊天输入区的 MCP 工具选择交互(仅供参考,按照实际体验更佳的来):
selectedToolIDs,保持现有后端协议兼容。Alternatives considered
继续保持当前扁平工具列表,但 MCP 服务工具较多时体验较差,用户需要逐个勾选,也很难快速判断某个工具属于哪个 MCP 服务。
也可以新增
selectedMCPServerIDs让后端按服务展开工具,但当前 DTO 已包含serverID/serverName,前端可以先完成聚合交互,同时继续提交selectedToolIDs,改动更小、兼容性更好。Compatibility, deployment, or migration impact
配置变更:预计不需要。
API 变更:短期预计不需要,前端可基于现有
selectedToolIDs和工具列表完成聚合展示。数据库迁移:预计不需要。
部署变更:预计不需要。
向后兼容:现有 MCP 服务、工具配置和消息发送逻辑保持不变,仅优化前端选择体验。
Documentation or API contract impact
可以补充说明 MCP 工具选择的交互规则:
Pre-submit checklist