MCP Java 2.2.0-M2:缺能力码 -32021 未进 handler
MCP Java SDK 2.2.0-M2 modern 工具声明 requiredCapabilities 后,客户端缺 elicitation.form 时 tools/call 在 handler 前返回 -32021;putAll 后写键覆盖。本次未调用外部模型。
围绕 智能体 的技术文章与经验分享。
共 28 篇文章MCP Java SDK 2.2.0-M2 modern 工具声明 requiredCapabilities 后,客户端缺 elicitation.form 时 tools/call 在 handler 前返回 -32021;putAll 后写键覆盖。本次未调用外部模型。
ADK Java 1.14.0 的 SpringAiToolset 把 Spring AI @Tool(returnDirect=true) 映射成 skipSummarization=true;同进程里 getTracking 还能经 adk_tool_context 写入 session state。本次未调用外部模型。
Spring AI 2.0.3-SNAPSHOT(#7212)的 DefaultMcpToolNamePrefixGenerator:tools/list_changed 刷新后冲突工具仍回 alt_1_search;2.0.2 会退回 search。本次未接线 Sync/Async provider,未调用外部模型。
MCP servers v2.1.0 将 server-filesystem 升到 2.0.1:尾引号兄弟目录上 list_directory,2.0.0 读到 secret.txt,2.0.1 返回 Access denied;本次用 MCP Java SDK STDIO 客户端,未调外部模型。
Spring AI 2.0.2 的 StructuredOutputValidationAdvisor:带 tool call 的回复只打模型一次,缺字段 JSON 仍重试到 maxRepeatAttempts+1;本次演示未调用外部模型。
Spring AI 2.1.0-RC1 Session Memory:lastEvents(3) 压缩时带 ToolResponse 的工具轮整段离开活跃视图,全量日志只追加 COMPACTION 边界;本次演示未调用外部模型。
Spring AI 2.1.0-RC1 的 Tool Call Confirmation:同一次回复混有需确认与普通工具时整段暂停,恢复前普通工具也不会先跑。
Google ADK Java 1.13.0 的 Workflow 能从起点跑完整张图,并行、汇合、按路由分流都能走通,两个终点都产出结果时抛 WorkflowConfigurationException。实测两条并行分支的 runNode 都在 main 线程上被调起,节点返回异步结果时总耗时 306ms,节点里阻塞 sleep 时变成 609ms。ADK 工具转 MCP 的 inputSchema 在 1.12.0 报 6 个元模式错误,1.13.0 为 0;开发服务器默认拒绝跨域请求。
Google ADK Java 1.13.0 的 dev 服务器默认只放同源,并新增 DNS rebinding 防护。对照 1.12.0:跨域请求从 200 加 ACAO * 变成 403。dev README 写明 AdkWebServer.start() 不设 server.address,此时 Host 检查不开启,只伪造 Host、不带 Origin 的 GET 仍回 200,设 server.address=127.0.0.1 后被拦。
Claude Code 团队按风险决定人工批准人数:低风险 0 人、中风险 1 人、高风险 2 人,机器人批准不算人,批准只对具体提交有效,审查三轮封顶。我用 Spring Boot 4.1.1 把这些规则写成读真实 git 数据的 CI 关卡,风险判定改用路径规则,并在 5 个样例分支上实测。