跳到正文
Ankole

MCP server 参考

面向 AI Agent:本页的 Markdown 版本位于 https://ankole.agentbull.com/zh-Hans-CN/docs/mcp/index.md,文档索引位于 https://ankole.agentbull.com/zh-Hans-CN/llms.txt。

Ankole 把 MCP 放在 Skill 背后用于领域集成。平台不保留 Agent 级 MCP 注册表,也不保留持久 mcporter 配置。

Skill MCP 依赖不会注册成模型原生工具,Agent 也不会直接收到它们的完整 MCP catalog。这样,Skill 是唯一的路由中心,不会出现第二套工具选择面。

声明依赖

在 Skill 的 openai.yaml 中,把 MCP 依赖写在 dependencies.tools 下:

dependencies:
  tools:
    - type: mcp
      value: my-http-server
      description: "查询服务"
      transport: streamable_http
      url: https://mcp.example.com/mcp
      protocol_version: 2026-07-28
      bearer_token_env_var: MCP_HTTP_TOKEN
      enabled_tools:
        - lookup

    - type: mcp
      value: my-stdio-server
      transport: stdio
      command: bunx --bun @example/mcp-server
      disabled_tools:
        - delete_record

一个 Skill 最多声明 64 个依赖。schema 是严格的:未知字段或属于另一种 transport 的字段会被拒绝。

streamable_http

字段 含义
url HTTP 或 HTTPS server URL
protocol_version 可选协议模式:auto、legacy 或 2026-07-28;默认值是 auto
bearer_token_env_var 保存 bearer token 的环境变量名称
enabled_tools 可选的原始工具名 allowlist
disabled_tools 可选的原始工具名 denylist

只有 server 要求特定协议代际时才固定 protocol_version。token 值放在 Console 的 环境变量 中。Skill 只保存变量名。

stdio

字段 含义
command 启动 server 的受信命令行
enabled_tools 可选的原始工具名 allowlist
disabled_tools 可选的原始工具名 denylist

Agent Computer 通过 /bin/sh -lc 运行命令。stdio 只用于受信、第一方 server 命令。

声明不设置调用超时。Skill 或 Automation 脚本在每次 mcporter list 或 call 时传入 --timeout。

启用集合与冲突

一次执行获得当前已启用 Skills 的 MCP 依赖并集。两个 Skill 只有在连接、description 和 filters 完全相同时才能使用同一个 server 名;冲突会让执行准备失败。

ankole-runtime 控制哪个模型能读到 Skill。Main Agent 使用 any 和 main Skills;Background Agent Job 使用 any 和 background_job Skills。Automation Job 不运行模型,所以它读取当前全部 enabled Skills 的依赖,不按 ankole-runtime 过滤。

禁用一个 Skill 后,它的依赖会从下一次 turn、Background execution 或 Automation attempt 中消失。

生成 mcporter 配置

Agent Computer 为每次执行写一个唯一的 0600 配置,并把路径注入为 MCPORTER_CONFIG。配置总是包含 imports: [],所以 mcporter 不会合并 Agent Home、项目、Codex、编辑器或宿主机配置。执行结束时文件会被删除。

配置只包含连接事实和凭据变量名,不包含 WorkerEnv secret value。

Main Agent 通过 command tool 调用 mcporter;Background Agent Job 通过 Codex terminal 调用;Automation Job 在 main.ts 中用 Bun.spawn 调用。

模型可见的原生 MCP 边界

Ankole 当前不内置模型可见的 MCP server。未来的具体集成必须让 Main 与 Background 暴露相同的 mcp__<server> namespace、工具名、description 与 deferred loading 行为。Ankole 把 server JSON Schema 原样交给两个 runtime。Main 使用自己的 Responses tool owner;Background 使用 Codex native MCP,并让 Codex 自己负责该 projection。平台不会改写一侧 schema 来模仿另一侧,也不会为未来场景预先增加空注册表或通用本地 MCP loader。

只选择并调用一个工具

Skill 必须先选择一个领域工具。只有需要当前 schema 时,才检查这个工具:

mcporter list 'my-http-server.lookup' --schema --json --timeout 360000

参数对象通过 stdin 传入,不要把 JSON 插值进 shell 文本:

mcporter call 'my-http-server.lookup' --json - --output json --timeout 360000 < /absolute/path/arguments.json

Automation 脚本使用同样的 argv,把 JSON 写入子进程 stdin,检查 exit code,然后解析 stdout。

安全边界

MCP output 是不可信输入。Skill 与 mcporter 路径不再提供 Ankole 旧原生路径的 output-schema 校验、MCP annotation 调度、tool-level approval UI,也不会按全部 WorkerEnv secrets 清洗结果。该路径用于受信、第一方 MCP Skills。远端 credential scope 仍是真正的读写权限边界。

下一步