Skip to content

feat(mcp)!: 按需发现与调用,避免全量工具目录阻断入口 - #140

Merged
Disdjj merged 3 commits into
mainfrom
Disdjj/fluff-frill
Sep 5, 2026
Merged

feat(mcp)!: 按需发现与调用,避免全量工具目录阻断入口#140
Disdjj merged 3 commits into
mainfrom
Disdjj/fluff-frill

Conversation

@Disdjj

@Disdjj Disdjj commented Sep 5, 2026

Copy link
Copy Markdown
Member

入站 /~mcp 原来在发现和每次调用前遍历、校验全部可见工具,目录规模会进入客户端上下文,无关上游或坏 schema 也会阻断调用。现在只广告固定网关入口,业务工具通过完整 HTBP 路径按需发现、校验和执行。

  • tb_search(有搜索能力才提供)、tb_helptb_list_nodestb_calltb_device_operations 保持有界目录;删除全树扫描和编码后的业务工具名。
  • 复用现有 OperationRegistry、Zod、MCP SDK/AJV 及 HTBP 权限与执行链,只编译选中的 schema,保留 MCP 内容块、structuredContent 和业务错误。
  • 对齐 CLI/Dashboard 的 Context、Skill、system 命令和设备 realtime/mailbox/fallback、TTL、幂等键及 operation 查询/取消;缺少设备命令目录时保留已知 realtime 路径能力。MCP 不模拟本机 CLI、文件系统或 daemon。

升级行为变化:tools/list 不再返回每个业务工具;消费方改用 tb_call({path,args,...}),不保留旧业务工具名。app 升至 0.22.0,内嵌该运行时的 SDK 升至 0.24.0、server 升至 0.23.0;CLI/Dashboard 的中立客户端契约未变。

验证:

  • pnpm verify 全绿,6,411 项测试,无跳过。
  • pnpm turbo run build 全绿。
  • MCP consumer 31 项及针对参数校验的单元测试 4 项,覆盖 v1/modern、按需发现、权限/虚拟化、坏上游隔离、原生结果、特殊路径和设备任务生命周期。
  • 三个发布 tarball 通过内容/依赖检查和干净 npm 安装;SDK 全入口导入、server 新版本 bin 烟测通过。
  • 构建后的 SDK 在真实 loopback HTTP 上用官方 MCP v1 与 modern 客户端完成 initialize → list → help → call,确认入口版本和结果。
  • 同步生产验收脚本和 llmdoc;本轮验证没有调用生产 MCP 或真实业务上游。

MCP 只广告固定网关入口,避免每次连接和调用依赖所有可见上游。工具路径、参数校验、权限、原生结果与设备投递语义复用现有契约,并通过 SDK consumer 和参数单测验证。

升级后 tools/list 不再展开业务工具,调用改用 tb_call(path,args),设备任务由 tb_device_operations 管理。app、嵌入 SDK 和 server 按实际公开运行时变化升 minor;CLI 与 Dashboard 无需机械升版。
@Disdjj
Disdjj merged commit e622679 into main Sep 5, 2026
6 checks passed
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.

1 participant