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. 这三个数就是全部故事
- 截断 → E010。补全会发明内容;执行档不允许,返回
lossy_repair,executable: false。 - 重试提示是 API 的一部分。
retry.prompt带位置、原因、片段,模型可以直接照着改。 - 重发 → 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"})