Skip to content

[Feature]: MCP 工具选择支持按服务聚合展示 #37

Description

@chenyme

Affected area

MCP / tools

Problem or use case

当前聊天输入区的 MCP 工具选择是按工具扁平展示的。配置一个 MCP 服务后,如果该服务暴露多个工具,用户需要逐个勾选,操作成本较高,也不容易理解这些工具属于同一个 MCP 服务。

从现有代码看,前端已经能拿到每个工具的 serverIDserverName,后端发送消息时仍然按 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

  • I searched existing issues and pull requests.
  • This request is focused on one feature or improvement.
  • I described user-facing, API, configuration, or deployment impact where relevant.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions