跳转到内容

模块 V —— MCP、技能与能力管理

模块 V 是 能力管理叠加层(capability management overlay):它治理你的代理的工具与能力—— 哪个 MCP 服务器暴露哪个工具、它的传输、作用域与配置是什么、哪个发起方接入了哪项能力、 它的版本历史,以及它的基本连接健康状况。它位于 管理层(Management layer),且 没有任何执行面: 它编目、治理并审计,但绝不运行工具,也绝不改动一个活跃的 MCP 运行时。

本模块是 构建于 模块 I 的被动发现与连接器的内省 之上 的一个叠加层。它 重新实现 MCP 客户端,并且刻意 重新物化清单(inventory)已经拥有的核心实体(MCP 服务器、技能、工具与资源记录)。 相反,它读取那些核心实体,只存储它 自己 的叠加内容,以连接器已脱敏的自然引用为键, 并在读取时解析为核心实体——这是一种单写者(single-writer)纪律,使它不会与清单的物化器竞争。

这与模块 III 不同。模块 V 回答 “某个代理连接到了哪项能力”模块 III 回答 “某个发起方读取或写入了哪个资源”。 它们是各自独立的视图,本产品绝不将二者混为一谈。

模块 V 拥有四个叠加实体(每个都以 capabilities. 为前缀):

实体它持有什么
mcp_config一个 MCP 服务器的受管配置——传输、作用域、一个端点 引用 与若干 密钥引用。不存在任何能持有可用凭据的列。
config_revision每个配置版本一份只追加(append-only)的快照——不可变的版本历史,在配置被删除后仍然留存。
wiring能力连接图:一条 发起方 → 能力 的边,以自然引用存储,绝不以核心实体 id 存储。
health一项能力最后观察到的连接信号(connected / degraded / down / unknown)——这是一个基本信号,不是 SLA。

有两条契约属性不可商量。MCP 工具注解不被信任:一个工具的 readOnlyHint/destructiveHint 是来自服务器的 声明性 提示,MCP 规范规定客户端必须将其视为不可信—— 每一次工具投射都携带一个明确的“不可信”标志,绝不是一枚安全徽章。传输中不携带密钥值: 配置以名称、类型与一个掩码提示来引用密钥;后端会拒绝端点或规格中的内联凭据,而非存储它们。 最小化数据是线格式的一项属性,而非事后补救。

读取目录受 RBAC 门控且按租户限定作用域。更改一个配置——以及它所引用的密钥——是一次 特权变更(privileged change),记录于只追加、哈希链式的账本,并归因到真实的主体(principal)。

模块 V 由 事件总线 供给,而非自行轮询。它对两个通道作出反应:

  • edge.observed —— 运行时的能力使用变为 wiring 边。Source 字段区分 观测到的(observed) 信号(otel)与 声明的(declared) 信号(mcp_annotation),而一个较新的配置发现供给器 会用 config 来源标记静态声明的能力。
  • finding.reported —— 连接器的连接健康发现为 health 叠加层的最后信号状态供给。

它不产出自己的任何事件,也不向活跃基础设施分派任何东西;它的输出由管理 UI 以及其它模块通过其类型化路由读取。