MCP 工具参数类型强制转换:为什么模型输出的字符串数字会让服务端校验失败
Agent 调用带数值与布尔参数的 MCP 工具时,模型常把 5 写成 "5"、把 true 写成 "true",服务端按 inputSchema 严格校验就会直接拒绝。本文用一个库存查询工具贯穿全文,梳理类型声明、序列化路径、隐式转换歧义与枚举大小写问题,并对比客户端预校验与服务端宽松解析的取舍。
共 4 篇文章
Agent 调用带数值与布尔参数的 MCP 工具时,模型常把 5 写成 "5"、把 true 写成 "true",服务端按 inputSchema 严格校验就会直接拒绝。本文用一个库存查询工具贯穿全文,梳理类型声明、序列化路径、隐式转换歧义与枚举大小写问题,并对比客户端预校验与服务端宽松解析的取舍。
Agent 自动调用写操作工具时,客户端常靠 readOnlyHint、destructiveHint 决定是否弹窗确认。本文拆解这些注解的语义与来源,说明它们由服务端自述、客户端无从验证的信任假设,对比服务端强制鉴权与人工审批,并给出校验方法与可观测指标。
接入多个 MCP Server 的 Agent 为什么越接越笨?本文从工具名、描述与 JSON Schema 被序列化进系统提示并随每轮请求重复计费讲起,分析工具数量增长带来的上下文挤占与选择准确率下降,对比全量注入、检索式筛选与动态发现三种加载策略的延迟与可靠性权衡,并给出可观测指标与适用边界。
围绕 Agent、RAG 与多轮对话中反复出现的长 System Prompt、工具定义和历史前缀,解释 Prefix Caching 如何复用已计算的 KV Cache,分析 vLLM Block Hash、SGLang RadixAttention、缓存淘汰、多级存储及命中率对 TTFT 与吞吐的影响。