JSONMend × MCP — 执行门接入

MCP 让 agent 发现工具;真正的价值是宿主在执行工具参数之前过闸。 `jsonmend_analyze` 返回 executable;为 false 时把 retry.prompt 原样回灌模型。

1. 一行配置

Claude Code

claude mcp add jsonmend -- jsonmend mcp

mcp.json(Cursor / Cline / Windsurf 等)

{"mcpServers":{"jsonmend":{"command":"jsonmend","args":["mcp"]}}}

装 pip 包时命令是 jsonmend-mcp(它解析二进制并替换进程)。 四个工具:jsonmend_analyze / repair / validate / readiness。

2. 模型给出坏参数,门怎么回答

模型输出(被 max_tokens 截断)

schema 就是工具已有的 inputSchema;这里用 JSON Schema 子集直接传给 analyze。

jsonmend_analyze 的回答

decision— executable— exactness— error— schema—
—

3. 这三个数就是全部故事

  1. 截断 → E010。补全会发明内容;执行档不允许,返回 lossy_repair,executable: false。
  2. 重试提示是 API 的一部分。retry.prompt 带位置、原因、片段,模型可以直接照着改。
  3. 重发 → safe。同一份声明、同一个调用;这次 executable: true,宿主才执行。

4. 会话实录

→ tools/call  jsonmend_analyze
← decision: lossy_repair      executable: false
  error: E010  CloseContainer at 1:31
  retry: "JSONMend refused the arguments: E010 ..."

→ tools/call  jsonmend_analyze
← decision: safe              executable: true
OK  execute create_invoice({"amount":100,"currency":"USD"})