第十三节 外部工具服务接入

[!ref] 详解见用户手册「外部工具服务接入」节。

13.1 服务条目字段

每个外部服务条目包含:

字段 类型 说明
name string 名字(也作为工具前缀,例如 notion.*
protocol enum http(Streamable HTTP,手动添加时的默认)/ sse(旧式)/ stdio。填错时连接会自动协商回退:若服务端可达但握手被拒(如 405 / Bad Request),自动改试另一种 HTTP 传输并把实际生效的方式写回配置;连不上(拒绝 / 超时 / EOF)则不回退
lazy_load bool 是否延迟加载该服务的工具。缺省跟随全局「工具分类延迟加载」;显式关闭则该服务工具常驻。落盘 mcp_lazy_load(按后端名)
endpoint string HTTP / SSE 通道的 URL;stdio 通道不用
command string stdio 通道要启动的命令行(如 npx -y @some/mcp-server
args array stdio 通道的命令行参数
env map stdio 子进程的环境变量(凭证、token 等)
credential string HTTP / SSE 的 Bearer Token 或 API Key
oauth object OAuth 2.1 + PKCE 配置(authorizationEndpoint / tokenEndpoint / clientId / scope / clientSecret?);endpoint 可通过 .well-known 自动发现
enabled bool 是否启用
timeout_ms int 请求超时
retry object max=3, base=500ms, jitter=0.3

凭据存储(VAULT)credential / env / oauth.refresh_token 与续期元数据不入主配置文件、不入日志,统一进国密加密的凭据库(SM4-GCM + HKDF-SM3,machineID 绑定);存量明文凭据下次使用时被动迁移

13.1.1 OAuth 流程字段

字段 说明
authorizationEndpoint OAuth 授权端点
tokenEndpoint OAuth token 端点
clientId 客户端 ID
clientSecret 可选;缺省即 public client(仅依赖 PKCE)
scope 申请的权限范围
redirectUri 本机回环:http://127.0.0.1:<port>/cb
pkce.codeVerifier / pkce.codeChallenge S256
accessTokenExpiresAt 启动 / 后台到期前用 refresh_token 自动换新

13.1.2 健康看板字段

MCP 配置 → 健康看板 来源是 zMCP gateway 的 /admin/metrics 环形缓冲:

字段 说明
backend MCP 后端名
calls 调用次数(窗口内)
failRate 失败率
p50Ms / p95Ms 响应耗时分位(毫秒)
lastError / lastErrorAt 最近一次失败错误信息 + 时间

13.2 工具命名规则

来源 命名
内置工具 不加前缀(例如 read, git.status
安全分析 sec.* 前缀
外部服务 <服务 name>.* 前缀(例如 notion.search
通讯出站 channels.* 前缀
技能调用 skill.invoke

13.3 错误抽屉条目

字段 说明
时间 触发时间
工具 工具名
状态码 / 错误类 HTTP 状态 / 异常类
摘要 单行简述
详情 服务端原始返回(最多 4 KB)
重试次数 自动重试已尝试次数

后端缺席兜底:某后端一时缺席 / 未就绪时,tools/call 过去会返回「unknown tool」协议错误;现对未知工具做兜底处理按需重连自愈,后端就绪后自动恢复,不再因此整体不可用。