mcp.enforce模块 04MCP gateway enforcement
在 MCP 服务器前面设一道前门,使每个工具调用像其他意图一样被准入,被拒绝的调用永远到不了服务器。
mcp.enforce 询问 Intralock 智能体是否可以调用某个 MCP 工具,并返回结论,路径中没有模型。同一网关还可以按工作区的模式把调用转发到已注册的上游:observe 记录,advise 报告,enforce 拒绝。
mcp.enforce模块 04在 MCP 服务器前面设一道前门,使每个工具调用像其他意图一样被准入,被拒绝的调用永远到不了服务器。
mcp.enforce 询问 Intralock 智能体是否可以调用某个 MCP 工具,并返回结论,路径中没有模型。同一网关还可以按工作区的模式把调用转发到已注册的上游:observe 记录,advise 报告,enforce 拒绝。
mcp/enforce 返回允许或拒绝,不转发任何东西。要让网关对调用进行准入、剥离、转发并过滤,请用 upstream-add 注册上游并把调用发到 mcp/call。
actorDidtoolresource,它也是被准入的资源。resourceaction默认值。call 不做准入检查就转发,并把该调用记为 observed。工作区的影子日志会填入智能体本会做的事。
call 对意图做准入并报告平面本会怎么说(例如 would be refused),但仍然转发。声明的转换仍会应用。
点击运行,将左侧的请求发送到共享演示工作区。
在共享的演示工作区中使用演示密钥运行:任何人都可以看到其中的内容,因此请勿发送任何私密信息。
一个符合 API 接受格式的请求,以及模块返回格式的示例响应。
POST /api/v1/acp/mcp/enforce Authorization: Bearer av_workspace_•••• Content-Type: application/json { : , : }
名为 bash 或 fs.write 的工具按写入准入,因此它需要授权,并在确认下限下,运行之前还需要真人批准。
在 observe 下运行一周。shadow 列出平面看到的最近 50 次调用,因此您可以看到哪些本会被拒绝。
call 过滤上游的回复,使类似指令的文本失效,并在 中设置 ,因此工具结果无法冒充指令。
模块是对一件狭窄事情的强力保证。请仅在其确切范围内依赖它。
enforce 都运行 Intralock 准入,因此结论与 coordination.admit 一样是纯函数的答案。enforce 模式下,被拒绝的 call 不会被转发:响应写明 forwarded: false,没有请求发往上游。enforce 返回带 shadow: false 的影子行,外加 allow、reason、被准入的 action、llm: false 和 protocolVersion。
使用工作区 API 密钥作为 Bearer 令牌进行认证。基础 URL 为 https://api.intramedial.com。
/api/v1/acp/mcp/enforce准入工具调用并返回结论;不转发任何东西。/api/v1/acp/mcp/call通过上游准入、剥离、转发并过滤调用。fs.write),无论您发送什么,都按 write 准入。只保留 delete。confirmationTokenallowreasonquarantine 或缺少授权。llmfalse。结论来自纯函数。protocolVersioncall 对意图做准入,只在被允许时转发。被拒绝的调用返回 forwarded: false,永远不会离开网关。
mode 接受 observe、advise 或 enforce,并为工作区存储它。请从 observe 开始,切换之前先读取 shadow。
upstream-add 以 URL 指名一个 MCP 服务器,可附连接凭据或用于对其工具分类的映射包。
call 接受 actorDid、upstream、tool 和 args。网关推导出动作和资源,对意图做准入,并在允许时转发。
enforce 接受 actorDid 和 tool,并回答来自 Intralock 的 allow 和 reason。当调用由您自己的代码发出时使用它。
{
"mode": "observe",
"shadow": false,
"event": {
"actorDid": "did:web:acme.example:agent:support",
"tool": "fs.write"
},
"advise": null,
"allow": false,
"reason": "no_grant",
"action": "write",
"llm": false,
"protocolVersion": "2026-07-28"
}provenanceinstructionShaped在 advise 和 enforce 下,call 会从参数中移除 command 和 shell,并在 stripped 中列出被移除的名称。
coordination.admit;网关会替您调用它。coordination.approve;网关只返回 approvalId。github.enforce,它准入 repo: 资源并将结果回传 GitHub。mcp.shadow 事件,每次调用追加一个 mcp.call 事件。read 或 call。instructionShaped 标志是针对文本的启发式方法,而不是保证。mode 就是所用的模式。在 enforce 上它报告的是存储的模式,可能是 observe,尽管结论始终来自 Intralock。write 从 call 返回 allow: false 和 approvalId。enforce 路由只返回 allow 和 reason。上游可以携带映射包,指明每个工具的动作和资源。已映射的工具按其资源准入,而不是默认值。
mode、upstream-add 和 upstream-remove 需要 policies.approve。enforce、call 和 shadow 本身不带权限,所以准入结论就是控制。
call 对上游的超时为 8000 毫秒,并拒绝大于 1 MiB 的回复。shadow 返回最近 50 个事件。actorDid 或 tool 的 enforce 返回 400,缺少 upstream 的 call 也一样。/api/v1/acp/mcp/mode/api/v1/acp/mcp/shadow列出最近 50 个被观察到的事件。/api/v1/acp/mcp/upstream-add注册上游 MCP 服务器。coordination.mcp.enforce从智能体请求结论。coordination.mcp.mode从智能体设置模式。coordination.mcp.shadow从智能体读取影子日志。coordination.approve05github.enforce29GitHub write gate除非提交背后的智能体持有授权,并且写入已获真人确认,否则让该提交的检查变红。saas.admit30SaaS connector admission询问智能体是否可以接触某个 SaaS 来源,并仅在通过管控其他一切的同一检查之后,才让它通过该来源写入。iam.assume31Cloud credential broker仅当智能体持有该角色的有效租约时,才给它一个短期云凭据,并让凭据随租约一同消亡。coordination.halt06Emergency stop switches立即停止一个智能体、一份授权或一个资源,留下理由记录,并在安全时解除停止。coordination.quarantine32Agent quarantine在准入处切断一个智能体,但只有在第二个人批准或裁决指名了该确切智能体的情况下才行。