Skip to content
FunCoding

Search

Search docs, Skills and MCP

MCP tool Hooks

让生命周期事件调用已连接的 MCP 工具,设置类型保留的参数模板并理解失败开放行为。

This page has not been translated into English yet. The original Chinese version is shown below.

mcp_tool handler 可以直接调用已连接 MCP server 的工具。它使用与 command Hook 相同的信任审查和输出契约,但不负责启动或重连 server。

先确认连接,再配置处理器

以下是官方结构形式;scanner 和 scan_patch 必须由实际已连接的服务提供:

{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Write|Edit",
      "hooks": [{
        "type": "mcp_tool",
        "server": "scanner",
        "tool": "scan_patch",
        "input": { "patch": "${tool_input.command}" },
        "timeout": 30,
        "statusMessage": "Scanning edited files"
      }]
    }]
  }
}

server 和 tool 为必填;input 是可选 JSON 参数模板,默认 {};timeout 为秒,默认 600;statusMessage 是可选进度文案。例中的 30 秒是显式覆盖。

参数模板保留 JSON 类型

${field.nested} 从事件读取点路径。占满整个值时保留原始 JSON 类型,嵌在更长字符串中则转成文本。对象和数组递归展开。

例如事件中 tool_input.count 为数字 3,模板 "count": "${tool_input.count}" 最终得到数字 3,而 "message": "Count: ${tool_input.count}" 得到文本。设计工具参数 Schema 时应按展开后的类型验证。

错误和审批

MCP Hook 同步运行,不额外请求工具审批,也不触发其他 Hooks。只有工具返回受支持的阻断决定才会阻止操作;server 缺失、工具不可用或执行错误本身不阻断。SessionStart 可能早于 MCP 就绪,这也不会阻止会话。

实际超时取 Hook 与 server 超时中较短者;等待 MCP elicitation 回答的时间不计入执行超时。SessionEnd 不支持 MCP tool Hook。

云端协调的适用范围

Work Cloud with local access 的企业 Hooks 是云端协调器上的管理员远程 MCP Hooks。它不等于将本地 command Hook 或插件 Hook 自动搬到云端,也不是完整的 Compliance API 审计记录。策略使用前要在实际执行环境中验证连接、事件和失败行为。