用途:说明如何在 ServiceNow MCP 服务器上从“大概有某个工具”走到“真正调用成功”。该服务器注册了 440 多个 snow_* 工具、覆盖 80 个域,但默认一个都不列出。
主要能力与用法:冷启动时 tools/list 只返回 tool_search 和 tool_execute 两个元工具(完整目录约 71k token 的 schema,元工具约 2k)。流程为:先用 tool_search({ query: "update-sets" }) 搜索,命中工具默认对本会话启用;再读状态——[AVAILABLE] 表示可直接调用,[ENABLED] 表示延迟但已启用,[DEFERRED] 表示不可调用;最后用 tool_execute({ tool: "snow_ensure_active_update_set", args: { name: "Feature: SLA fix" } }) 执行。只想查看时传 enable: false。
关键限制:启用状态按 (tenant, session) 存储,没有 session id 时 tool_search 不会启用任何工具,所有命中保持 [DEFERRED],tool_execute 会拒绝。session id 依次从 JWT 的 sessionId、x-session-id 头、SNOW_SESSION_ID 环境变量、Serac CLI 写的 current-session.json 解析。纯 stdio 下前两者不存在,需自行设置 SNOW_SESSION_ID。启用集合按会话持久化到磁盘并在重启后恢复。
其他要点:tool_execute 只报告是否派发,需检查嵌套的 result.success;__confirmProd、__skipUpdateSet 等守卫标志要放进 args 内。搜索按整词、稀有度加权评分,域名(如 update-sets、blast-radius、atf)是最好的查询词,limit 默认 10。结果只是摘要(描述截断 200 字符、最多 5 个参数),要看完整 schema 需让客户端重新列出或读校验错误。注意部分工具是桩实现或问错问题(如 snow_test_acl 无条件报告有权限),写入后应回读确认。文档清单与运行服务器注册表存在漂移,有九个已发布工具在服务器上不可达。