quality-inspection-platform/docs/mcp_tools_for_ai.md
qihongkun f5143aee09 feat: 添加 Docker 部署支持和 MCP 原生集成
- 添加 Dockerfile、docker-compose.yml 和 Jenkins 流水线配置
- 新增 MCP 原生集成模块 (mcp_native.py)
- 移除旧的 mcp_bridge.py,更新依赖和文档
- 添加部署文档 (Docker 和服务器部署指南)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-25 14:21:43 +08:00

14 KiB
Raw Blame History

MCP 工具能力说明AI 专用)

读者Codex / Claude / Cursor 等通过 quality-inspection-platform MCP 工作的 Agent。
目的:在调用 tools/list 之外,提供「何时用哪个工具、按什么顺序、参数怎么填」的固定上下文。
维护:工具以 app/main.pyMCP_TOOL_SPECS 和平台 GET /mcp/tools 为准;增删工具时请同步更新本文档。
重要:某些 MCP 客户端可能缓存、裁剪或延迟刷新工具列表;不要仅凭当前客户端可见工具反向删减本文档能力。


0. Agent 必读30 秒)

  1. catalog_snapshot 了解现有 apis / workflows / workflow_batches / mocks / folders / ssh_tree避免重复创建。
  2. 写操作与执行必须带 sto- API KeyMCP 请求头 Authorization: BearerX-API-KeyHTTP 脚本可在 body 传 api_key,兼容旧名 AI_TEST_API_KEY)。
  3. 接口api_upsert流程workflow_upsertworkflow_patch_json跑批固定三步:workflow_batch_createworkflow_batch_updateworkflow_batch_run
  4. 排障workflow_run_get 看 request/response → workflow_run_loki_link 查日志。
  5. 如果当前客户端没有显示某个工具,先用 MCP tools/listGET /mcp/tools 核对,再重启 MCP 客户端 / 会话。
  6. 人类可读安装见 docs/mcp_install.mdcurl 示例见 docs/mcp_quickstart.md

0.1 工具来源与客户端刷新

  • 权威工具清单来自后端 app/main.pyMCP_TOOL_SPECS,平台通过 GET /mcp/tools 对外暴露。
  • 平台内置 Streamable HTTP MCPGET/POST /mcptools/listMCP_TOOL_SPECS 提供;兼容 HTTP 网关 GET /mcp/tools
  • Codex / Cursor / Claude 等客户端可能在会话启动时缓存工具列表;平台新增工具后,通常需要重启 MCP 客户端或重启会话。
  • 如果客户端只显示部分工具,不代表平台没有该能力。先用 /mcp/tools 或本文档核对,再决定是否降级。
  • Agent 更新本文档时,应以源码和 /mcp/tools 为准,不以单个客户端当前暴露的工具子集为准。

1. 平台在做什么

层级 含义 MCP 主要工具
接口库 单个 HTTP API 定义method、url、headers、body… api_upsertcatalog_snapshot
工作流 多节点编排HTTP / 条件 / 循环 / 提取) workflow_upsertworkflow_run
跑批 一次任务顺序执行多个工作流 workflow_batch_*
执行历史 每次运行的 request/response 快照 workflow_run_listworkflow_run_get
Mock 命名数据集,供节点 mock 使用 mock_upsert

数据约定url 只存路径(如 /api/user/{id}),环境域名放在执行时的 base_url


2. 鉴权

2.1 平台地址

Codex 等客户端在个人 MCP 配置中配置平台 URL 与 API Key例如

配置项 含义 示例
url MCP 端点 http://10.20.30.42:8000/mcp
http_headers.Authorization / headers.Authorization Bearer sto-... Bearer sto-xxx

Agent 通过 MCP 工具访问平台;平台进程由质量检测平台项目或共享内网服务负责。兼容环境变量名 AI_TEST_API_KEY 仅适用于旧 HTTP 脚本MCP 客户端请用请求头传 Key。

2.2 调用鉴权

类型 工具示例 无 Key 时
只读 catalog_snapshotworkflow_getworkflow_run_list 以 superadmin 读全库(不推荐生产暴露)
写入 api_upsertworkflow_upsertfolder_ensure 401
执行 workflow_runworkflow_batch_runssh_script_runworkflow_run_replay 401

环境变量 MCP_REQUIRE_API_KEY=true 时,所有工具(含 GET /mcp/tools)均需 Key。

写操作与执行类工具必须使用有效 Key。不要把 Key 写入文档、日志或对话输出;只允许放在 MCP 配置、环境变量或请求头中。


3. 按场景选工具(决策表)

用户意图 推荐工具链
我不知道项目里有什么 catalog_snapshot
客户端看不到某个工具 GET /mcp/tools → 重启 MCP 客户端 / 会话 → 再调用
从 Apifox/文档批量建接口 folder_ensure → 多次 api_upsert(或 invoke-batch
新建/改流程图 workflow_validate(可选)→ workflow_upsert
只改流程里某几个字段 workflow_patch_json
跑一条流程 workflow_runbase_url + workflow_id
只调试一个节点 workflow_run_node
版本/回归一次跑多条流程 workflow_batch_createworkflow_batch_updateworkflow_batch_runworkflow_batch_get
看某次执行详情 workflow_run_getrun_id
看历史列表 workflow_run_listworkflow_id / batch_id
失败后续跑 workflow_run_replayrun_id
查服务端日志 workflow_run_loki_linkrun_id + node_id
看节点上次结果 workflow_node_statusworkflow_get
快速看上次成败统计 workflow_analyze_last_run
准备 Mock 数据 mock_upsert
运维脚本 ssh_treessh_script_upsertssh_script_run

4. 工具清单(按分类)

下文参数均为各工具的 arguments 对象MCP tools/call 直接传该对象)。仅在使用 HTTP 网关时,外层再包一层 {"tool":"<名称>","arguments":{...}},见 mcp_quickstart.md

4.1 发现与目录

catalog_snapshot

  • 用途:一次拉取 apis、workflows、mocks、workflow_batches、folders、ssh_tree。
  • 参数:无。
  • 何时用:任务开始、批量导入前、避免重复 api_upsert

folder_ensure

  • 用途:登记 apis 或 workflows 目录(空目录也可)。
  • 参数targetapis | workflowspath:如 auth/login(不要前导 /)。
  • 需 Key:是。

folder_list

  • 用途:列出已登记目录。
  • 参数:可选 target

api_move_folder / workflow_move_folder

  • 用途移动资源到目录workflow 目标目录须已 folder_ensure

4.2 接口API

api_upsert

  • 用途:创建或更新接口定义。
  • 必填namemethodurl
  • 常用可选api_id(更新)、folder_pathheadersbodyquerypath_paramstimeout_seconds
  • 需 Key:是。
  • 示例
{
  "tool": "api_upsert",
  "arguments": {
    "name": "用户登录",
    "folder_path": "auth",
    "method": "POST",
    "url": "/api/login",
    "headers": { "Content-Type": "application/json" },
    "body": { "username": "admin", "password": "{{password}}" },
    "query": {},
    "path_params": {}
  }
}

4.3 工作流Workflow

workflow_upsert

  • 用途:创建/更新完整 definitionDrawflow JSON
  • 必填namedefinitionnodesedgesvariables)。
  • 需 Key:是。
  • 注意:非空 folder_path 须先 folder_ensureworkflows

workflow_get

  • 用途:读取流程及各节点 last_run

workflow_patch_json

  • 用途:对 definition / variables 等深度合并 patch小改动优先于全量 upsert。

workflow_validate

  • 用途:检查节点 id、边是否引用合法upsert 前建议调用。

workflow_move_folder

  • 用途:移动工作流到已登记目录。

workflow_node_status

  • 用途:单节点最近 last_run

workflow_analyze_last_run

  • 用途:上次执行汇总(成功/失败节点 id细节不足时再 workflow_get

4.4 执行

workflow_run

  • 用途:执行整条工作流。
  • 必填workflow_id
  • 可选base_url(环境根地址)、fail_fast(默认 true
  • 需 Key:是。
  • 返回statusvariablesresults[](含每节点 request/responserun_id

workflow_run_node

  • 用途:只跑一个节点(调试参数)。
  • 必填workflow_idnode_id
  • 需 Key:是。

workflow_run_replay

  • 用途:按历史 run 内保存的 definition 快照重放。
  • 必填run_id
  • 需 Key:是。

4.5 跑批Batch

步骤 工具 说明
1 workflow_batch_create 建草稿,可带 namebase_urlfail_fast
2 workflow_batch_update 必填 batch_id;设置 workflow_ids: [1,2,3]
3 workflow_batch_run 执行,仅 draft 可跑
4 workflow_batch_get 查看结果及关联 run_id

辅助:workflow_batch_liststatus 过滤draft|running|success|failed|partial

需 Keycreate/update/run 需 Keyget/list 只读。


4.6 执行历史与日志

workflow_run_list

  • 参数:可选 workflow_idbatch_idlimitafter_id
  • 返回items[] 摘要(无完整 body 时用 workflow_run_get)。

workflow_run_get

  • 参数run_id
  • 返回:含 payloadresultsvariablesworkflow_snapshot)。
  • 参数run_idnode_idHTTP 节点)。
  • 返回explore_urllogql、时间窗;未配 GENERAL_LOKI_EXPLORE_URLenabled=false

4.7 Mock 与其它

mock_upsert

  • 用途:按 name 创建/更新 Mock 数据集(data 对象)。
  • 需 Key:是。

mcp_tool_upsert

  • 用途:平台内「自定义 MCP 工具配置」表,不是 Codex / Claude / Cursor 所见的内置 MCP 工具列表本身。

SSH 系列

工具 用途
ssh_tree 主机与脚本树
ssh_script_get 读脚本内容
ssh_script_upsert 创建/更新内联 bashprofile_id+name+content
ssh_script_run 远端执行(需 password,需 Key

5. 工作流 definition 约定(简版)

{
  "nodes": [
    { "id": "n1", "position": {"x": 0, "y": 0}, "data": { "type": "http", "api_id": 1, "save_as": "resp1" } },
    { "id": "n2", "data": { "type": "extract", "source_var": "resp1", "field": "json.token", "save_as": "token" } }
  ],
  "edges": [
    { "id": "e1", "source": "n1", "target": "n2", "data": { "branch": "success" } }
  ],
  "variables": {}
}
data.type 说明
start / end 透传
http 引用 api_id 或内联 method/url/headers/body/query/path_params支持 mock、expect
extract source_varfield 写入 save_as
condition 出边 branch: true / false;支持 left_mode=json_path
loop BODY 边进入子图;while_* 控制下一轮DONE 边退出

变量替换:字符串中的 {{token}}variables 注入。工作流级 default_headers 与节点 headers 合并,节点覆盖同名 key


6. 调用协议

6.1 Codex / MCP 客户端(推荐)

  • 端点http://10.20.30.42:8000/mcpStreamable HTTP
  • 鉴权:请求头 Authorization: Bearer sto-...Codex 配置在个人 config.tomlmcp_servers.<name>.http_headers
  • 工具发现MCP 方法 tools/list(与 MCP_TOOL_SPECS 一致)
  • 工具调用MCP 方法 tools/callname + arguments)→ content[0].text 为 JSON 字符串,解析后字段为 ok / tool / data / error;失败时 isError 可能为 true

6.2 HTTP 网关curl / CI

  • 发现GET /mcp/tools{ tools, require_api_key, ai_guide }
  • 单次POST /mcp/invoke{ ok, tool, data, error }
  • 批量POST /mcp/invoke-batch{ results: [...] }stop_on_error: true 时任一步失败即停

ok=false 时读 error,修正参数后重试;不要臆造未在 tools/list 中出现的工具名。


7. 推荐 Recipe

R1新建接口并跑通单接口流程

catalog_snapshot → folder_ensure(apis) → api_upsert
→ workflow_upsert → workflow_run → workflow_analyze_last_run

R2Apifox 迁移一批接口

catalog_snapshot → folder_ensure(apis, 模块路径)
→ invoke-batch: N × api_upsert → 核对 catalog

R3版本回归跑批

workflow_batch_create → workflow_batch_update(workflow_ids)
→ workflow_batch_run → workflow_batch_get
→ 对失败项 workflow_run_get + workflow_run_loki_link

R4失败节点最小修复

workflow_analyze_last_run → workflow_patch_json(只改变量/单节点 data)
→ workflow_run → 仍失败则 workflow_run_get 看 payload

8. 常见错误

error / 现象 处理
401 MCP requires API Key Codex个人 config.toml 中配置 Authorization: Bearer sto-...curl请求头或 body api_key
workflow folder not registered folder_ensure workflows
仅 draft 批次可执行 已对 running/success 的 batch 再 run
unknown mcp tool GET /mcp/tools 刷新名称
Loki enabled=false 配置 GENERAL_LOKI_EXPLORE_URL
重复接口 同 method+url 视为同一接口,更新时传 api_id

9. 文档索引

文件 受众
本文 docs/mcp_tools_for_ai.md AI Agent首选
docs/mcp_quickstart.md 人类 + curl 示例
docs/mcp_install.md MCP Server 安装、Codex/内网/远程环境
项目根 AGENTS.md Codex 自动加载的短指引

文档版本:与 MCP_TOOL_SPECS28 个工具)同步;接入方式为内置 Streamable HTTP /mcp,见 docs/mcp_install.md