TAG

#MCP

共 21 篇文章

MCP 工具参数类型强制转换:为什么模型输出的字符串数字会让服务端校验失败

Agent 调用带数值与布尔参数的 MCP 工具时,模型常把 5 写成 "5"、把 true 写成 "true",服务端按 inputSchema 严格校验就会直接拒绝。本文用一个库存查询工具贯穿全文,梳理类型声明、序列化路径、隐式转换歧义与枚举大小写问题,并对比客户端预校验与服务端宽松解析的取舍。

MCP 工具调用超时重试:客户端重发请求为何导致写操作重复执行

远程 MCP Server 执行下单类写工具时,客户端超时重发同一 JSON-RPC 请求,服务端却把它当成一次新调用,导致重复扣款或重复下单。本文从 JSON-RPC 请求 ID 的会话内语义出发,解释断线重连后 ID 重置、服务端缺少幂等键存储的机制,并对比幂等键、去重窗口与人工确认三种方案,给出可观测指标与部署边界。

MCP 工具输出校验:structuredContent 与 outputSchema 不一致时客户端为何解析失败

远程 MCP Server 返回结构化工具结果时,outputSchema 声明返回结构,structuredContent 承载实际负载。本文用一个订单查询工具贯穿全文,分析二者不一致、schema 未声明、客户端只读 content 文本分支时各自的解析失败路径,对比纯文本封装与严格校验两种方案,并给出服务端与客户端的校验点和可观测指标。

MCP Streamable HTTP 的 JSON 响应模式:服务端不返回 SSE 流时,工具结果为何会丢失

远程 MCP Server 返回单次工具结果时,服务端可以直接用 application/json 响应,而不必开启 SSE 流。这篇文章解释规范允许的两种响应形态、客户端对 Content-Type 的解析假设、请求与响应的配对方式,以及 JSON 单次响应与 SSE 流式响应在兼容性、可观测性和失败模式上的差异。

MCP Streamable HTTP 的会话绑定:为什么窃取 Mcp-Session-Id 就能冒充客户端

远程 MCP Server 暴露在公网时,Mcp-Session-Id 只负责关联一次有状态会话,并不自动证明请求者是谁。文章解释会话 ID 与会话状态如何建立、为何可预测或未与访问令牌绑定,以及重连后不重新校验如何导致会话劫持,并对比无状态模式与每请求鉴权,给出绑定与轮换的可观测指标。

MCP 远程服务器的 OAuth 令牌受众校验:为什么为 A 服务签发的令牌能调用 B 服务

多台远程 MCP Server 共用同一授权服务器时,为 A 服务签发的访问令牌常能直接调用 B 服务。本文解释 RFC 8707 资源指示器与 aud 绑定机制,分析授权服务器未按资源签发、客户端复用令牌、资源服务器漏校验 aud 三类成因,对比静态 API Key 与逐服务令牌方案,并给出校验逻辑与可观测指标。

MCP Elicitation 中途索要参数:工具执行到一半如何安全地向人类追问

工具跑到一半才发现缺少必填参数,直接报错会让用户重来一遍。本文以订位工具为例,拆解 MCP elicitation/create 如何暂停调用、用受限 JSON Schema 收集结构化输入并恢复执行,分析 accept、decline、cancel 三条路径、schema 校验失败与超时处理、敏感字段为何必须走 URL 模式,并给出可观测指标与适用边界。

MCP 资源订阅与变更通知:客户端订阅后为何仍读到过期资源内容

远程 MCP Server 暴露文件与数据库资源时,客户端调用 resources/subscribe 后仍可能读到旧内容。文章拆解订阅、通知与缓存刷新的完整链路,分析订阅粒度粗、通知丢失、重连后订阅状态不同步等失效原因,并对比轮询与版本校验的取舍,给出可观测指标与部署边界。

MCP 工具列表变更通知:服务端热更新后客户端为何仍在调用已删除的工具

远程 MCP Server 热更新工具后,客户端仍调用已删除工具,问题往往出在 tools/list_changed 通知链路而非服务端。本文拆解通知、重新拉取与缓存刷新的完整流程,分析通知丢失、未订阅、会话重连三类失效路径,对比轮询与版本校验方案,并给出可观测指标与部署边界。

MCP 工具定义注入如何挤占上下文:工具 schema 的 token 开销与按需加载机制

接入多个 MCP Server 的 Agent 为什么越接越笨?本文从工具名、描述与 JSON Schema 被序列化进系统提示并随每轮请求重复计费讲起,分析工具数量增长带来的上下文挤占与选择准确率下降,对比全量注入、检索式筛选与动态发现三种加载策略的延迟与可靠性权衡,并给出可观测指标与适用边界。