as-MCP 门面

更新于 · 在 sijie.xyz 查看原条目 ↗

本页讲的是 service handle——StandMeet 作为 MCP 服务端(对外的一面),而不是我们自己的 agent 以 host 身份消费插件的那个 capability 平面——参见 confusables。

主设计给这个平台定义了三种朝向:

  • host —— 运行插件
  • connector-owner —— 持有带凭据的第三方集成
  • as-MCP-server —— 实例本身作为一个 MCP 端点对外暴露,使别人的 agent 也能消费该 owner 的工具

实现

mcphandle.registerTools(backend/internal/routes/mcphandle/server.go:173)有两个来源:registerCapabilities 遍历 capability registry 上的 OwnerMCPBindings()(adapter.go:36)——各 capability 只需声明一次自己面向 owner 的工具;registerDispatcherOps(from_dispatcher.go:45)则通过 d.Attach(MCPFace()).Ops() 把出站收口点 dispatcher 的每个 op 投影成一个工具,即 ui-mcp-parity 的那份投影。旧的手写 tools_*.go AddTool 注册代码已被删除(36789537d 处一个也不存在)。自 2026-09-04 起(a5e1cada9),握手会报告实例版本,并把 ServerInstructions(corpus 模型 + "调用 instance.upgrade_check")发给接入的 agent(server.go:57)。

鉴权 = Sigv1。

为什么重要

有了 entry-agnostic-agent,这个门面不过是同一条中立边界上"又一个消费者"——它是产品机器可读的那个出口(把你的 persona 变成面向 agent 的 API),统一实现而不是重复造一遍。

flowchart LR
  EXT["owner's AI session · someone else's agent
(external MCP clients)"] --> F
  subgraph SM["StandMeet — our box"]
    F["/mcp/* facade (Sigv1)"] --> REG["capreg OwnerMCPBindings()"]
    F --> DISP["dispatcher ops
Attach(MCPFace).Ops()"]
    REG --> T1["owner tools, aggregated"]
    DISP --> T1
  end

门面把 capability registry 变成对外部 agent 的一个聚合工具面——在 capability 处只声明一次,在端点处只服务一次。

相关笔记