Skip to content

MCP 集成

状态:混合。各章节状态如下:stdio 传输 (状态:运行中 (Running)),远程传输 (状态:已准入愿景 (Admitted-vision))。

MCP (模型上下文协议) 在 Nimi 中被准入为协议适配器源。它不具备运行时 (Runtime) 的语义权威。运行时负责适配器准入、服务器生命周期、工具发现、白名单管理、模式漂移处理以及隔离语义——MCP 传输对象不会成为公共运行时本体。

权责划分

关注点负责方
MCP 适配器准入 + 提供者配置文件绑定运行时 (K-DELEG-100..K-DELEG-110)
服务器生命周期 (启动、连接、监控、超时、关闭)运行时
工具发现 + 白名单管理运行时
工具模式漂移检测运行时
工具调用准入 + 隔离运行时 + 委托输出防火墙
MCP 传输对象语义仅限适配器——成为运行时本体

任何桌面、Avatar、Web、应用、模组或 nimi-hook 层都不得直接实例化 MCP 客户端或服务器会话。运行时拥有其所有权。

Stdio 传输 (状态:运行中 (Running))

Wave-2 准入 stdio_command 作为生产环境 MCP 传输类别。这是当前正在运行并已交付的接口。

属性
传输类型stdio_command
执行位置运行时拥有的本地网关
服务器生命周期运行时启动 / 连接 / 监控 / 关闭
工具列表运行时通过官方适配器调用 MCP 发现

远程传输 (状态:已准入愿景 (Admitted-vision))

远程 HTTP 传输被准入为发展方向。它们需要后续的准入包来证明目标资源授权、凭证保管、超时行为以及针对委托 MCP 适配器契约的响应隔离。在该准入包完成之前,远程 HTTP 路径不会交付。

官方 SDK 适配器依赖

运行时的 MCP 实现使用官方的 github.com/modelcontextprotocol/go-sdk 包作为协议适配器依赖。该依赖仅作为实现适配器;它不定义 Nimi 提供者身份、请求/结果词汇、审批状态、防火墙裁决、审计保留或代理映射语义。这些仍属于运行时的关注点。

提供者配置文件绑定

每个 MCP 提供者都必须绑定到运行时委托的提供者配置文件 (K-DELEG-002)。绑定字段如下:

字段必需语义
provider_id运行时委托的提供者身份
provider_kind必须是 MCP_TOOL_PROVIDER
transport_kind已准入的 MCP 传输类别
allowed_tools运行时拥有的工具白名单
trust_tier继承自 K-DELEG-004
credential_ref有条件连接器 / 密钥源 / 授权机构的引用

没有 allowed_tools 的提供者配置文件将被拒绝。不存在隐式的“所有工具”允许。

工具白名单管理

只有白名单中的工具才能从发现中返回或被调用。来自 MCP 服务器的未知工具在列表生成时可能会被静默忽略,但它们绝不能成为可调用或作为可用委托能力可见的工具。

模式漂移检测

如果一个允许的工具包含预期的输入模式摘要,运行时必须在工具调用之前比较当前的 MCP 工具输入模式摘要。模式漂移:

结果行动
匹配工具调用通过委托防火墙
不匹配工具调用被拒绝;提供者会话可能根据委托能力规则被隔离

漂移不会静默地继续。平台拒绝操作自准入以来接口已更改的工具。

MCP 传输对象为何不进入运行时本体

MCP 传输对象代表提供者定义的语义,提供者可以单方面更改这些语义。如果这些传输对象成为运行时本体,那么提供者的每一次更改都将需要运行时契约修订——更糟糕的是,运行时语义将受制于提供者的实现选择。

相反,运行时会将 MCP 输出规范化为已准入的 K-DELEG-001..K-DELEG-099 契约接口,然后才由后续的防火墙阶段将它们准入到模型上下文、映射或行动路径。适配器边界正是保护运行时本体的关键。

读者场景:模组作者接入 MCP 工具提供者

一位模组作者希望向其代理暴露一个由 MCP 支持的工具。

  1. 提供者配置文件。 模组清单声明一个 MCP 提供者配置文件绑定,其中包含 provider_kind: MCP_TOOL_PROVIDERtransport_kind: stdio_command、一个明确的 allowed_tools 列表以及一个信任层级。
  2. 运行时准入。 运行时在其自己的生命周期下启动 MCP 服务器会话。
  3. 发现。 运行时通过官方适配器调用 MCP 工具列表;将每个列出的工具规范化为运行时网关凭证;并与 allowed_tools 进行匹配。
  4. 工具暴露。 允许的工具可通过运行时的委托能力网关访问;模组的代理可以通过已准入的 SDK 路径请求它们。
  5. 工具调用。 每次调用都会通过委托输出防火墙,然后任何结果才能进入模型上下文或行动路径。
  6. 审计。 审计记录调用、防火墙裁决以及随后的任何行动。

该模组没有自行发明 MCP 集成。运行时拥有适配器;模组消费了已准入的运行时网关凭证。

读者场景:工具模式漂移导致提供者被隔离

一个 MCP 提供者在会话中途更新了其某个工具的模式。

  1. 请求工具调用。 运行时将当前的 MCP 工具输入模式摘要与已准入的摘要进行比对。
  2. 检测到漂移。 摘要不匹配。
  3. 工具调用被拒绝。 运行时返回一个类型化的拒绝信息。
  4. 提供者被隔离。 根据委托能力规则,提供者状态变为 QUARANTINED。提供者的 K-DELEG-* 生命周期反映了这一点。
  5. 无静默继续。 平台不会假装漂移没有发生;操作员会看到类型化的原因。

MCP 集成不做什么

  • 它不允许 MCP 传输对象成为运行时本体。
  • 它不允许 nimi-hook / 桌面 / Avatar / 模组直接打开 MCP 会话。
  • 它不允许工具调用绕过委托输出防火墙。
  • 它不允许远程 HTTP 传输在没有后续准入包的情况下交付。
  • 它不允许官方 SDK 适配器定义 Nimi 语义权威。

边界总结

关注点负责方接口
适配器依赖适配器包 (仅限实现)go-sdk
提供者配置文件 + 白名单运行时K-DELEG-100..110
服务器会话生命周期运行时K-DELEG-104
工具发现 + 漂移运行时K-DELEG-105K-DELEG-107
工具调用准入 + 防火墙运行时 + 委托输出防火墙K-DELEG-001..099
结果进入模型上下文 / 映射 / 行动路径运行时 + 防火墙(后续阶段准入)

来源依据

Nimi AI open world platform documentation.