Skip to content

feat(mcp): add MCP tool control functionality - #256

Merged
zszz3 merged 2 commits into
zszz3:mainfrom
inwf:feat/mcp-tool-controls
Jul 30, 2026
Merged

feat(mcp): add MCP tool control functionality#256
zszz3 merged 2 commits into
zszz3:mainfrom
inwf:feat/mcp-tool-controls

Conversation

@inwf

@inwf inwf commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

变更概述

为 v2 的 MCP 管理增加工具级禁用、工具 Schema 预览、JSON 批量导入三项能力,并让禁用在下发给 Agent 时真正生效。UI 沿用 v2 现有工作台风格。

做了什么

  • 工具禁用(运行时真生效):服务器新增 disabledTools 字段,迁移 v14 加一列;「已发现工具」每行加启用/禁用开关。禁用的工具在下发给 Agent 时被排除——Codex 走 enabled_tools 正列表,Claude 走逐工具 always_allow/deny;缺省(空)= 全部启用,与旧行为一致。
  • 工具预览(只读):每个工具一键弹窗,展示描述与输入参数 JSON Schema;不引入任何"调用工具"的后端通道,纯读。
  • JSON 导入:粘贴标准 mcpServers 配置即可一次导入一个或多个服务器,自动识别 stdio/http;单条配置有误时列出该条错误、其余照常导入。env 值按 v2 既有约定映射为同名宿主环境变量引用,不落库存密钥。
  • 计数口径修正:服务器列表与 Agent 绑定处的工具数从"发现总数"改为"启用/总数"(如 10/15 工具),禁用后即时反映。
  • 持久化边界修复:disabledTools 补进 IPC 层 Zod 校验(mcpServerSchema),否则 .parse() 会静默剥掉该字段导致重启丢失——已加回归测试覆盖保存穿透。

边界

  • V1 零改动;不新增表,只给 mcp_servers 加一列。
  • 所有新入口走既有 MCP IP验。
  • 明确不做:工具的"调用/测试"弹窗(v2 注册表无 tool-call 后端,推后);ACP
    运行时无逐工具过滤能力,故置层生效(与它原本也不支持toolAllowlist 一致)。

验证

  • tsc --noEmit 通过。
  • MCP 相关测试全绿:runtim automation-ipc、McpPage、mcp-import(含"禁用穿透
    IPC""禁用列表存读并剔除失 回归)。
  • 手动:新建 stdio server → 测试连接发现工具 → 禁用 → 保存 → 重启 →
    禁用状态保留;预览 Schema 条目行为符合预期。
img_v3_02142_2d5adc38-4bde-488e-861b-0525a964ebfg img_v3_02142_513a4f20-10fc-4acc-8d36-d5a7b941d28g img_v3_02142_62c53448-dabb-4fe5-a06b-4da912c6b37g

@zszz3
zszz3 merged commit 08084e0 into zszz3:main Jul 30, 2026
@Blue-Berrys

Blue-Berrys commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

CI,mac和linux编译失败,可以再修修 @inwf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants