MCP验证容易被错过,因为注释看起来像普通的JSON Schema元数据.
在2026-07-28可流式HTTP运输上,这是一个有线合同:客户端将选定的工具参数复制成头头,中间人可以对这些头头采取行动,服务器对照JSON-RPC机构进行检查.
我将合同视为在工具到达之前测试的东西。
不良后缀,不支持的类型,或无法获取的注释使得整个工具定义无效.
沉默地接受它只会把失败转移到更难诊断的地方.
为何同值钱要花两次 最终可流取的 HTTP 规格镜像请求将元数据输入 HTTP 头部,所以一个负载平衡器,网关,或WAF 不需要解析 JSON-RPC.
服务器可以添加到工具属性中: 带有下列内容的呼叫: 官方的 C# SDK 可以从参数属性中生成该 schema : 当前 C# SDK v2 工具文档同时描述 schema 生成和自动头投影.
该特征位于平稳的v2线上;不需要给更早的预览或发布候选.
MCP x- mcp- header 验证规则 最后的工具定义规则是故意收缩的.
注释值必须是非空的 HTTP 字段名符号,并且必须是独一无二的,而不考虑具体情况.
并因此相撞, 控制字符,空格等分隔符不是有效的后缀字符.
只有,和属性可以被镜像。
JSON Schema被排除在外,整数值必须处于两者之间,因此每个符合的实现都能准确代表值.
可达性是最让我惊讶的规则 附加注释的属性可以被嵌入,但是从 schema root 的路径只能通过 .
下方的注释, , , , , 或另一种构成或有条件的关键词无效 。
一个可流的HTTP客户端必须从返回的结果中排除一个无效的工具,并应登录原因. stdio客户端可能忽略了这些说明,因为它没有HTTP头来投影.
价值观有自己的编码规则。
平地可见的ASCII可以作为-is出行.
非 ASCII 文本,控制字符,引导或跟踪的白空间,以及已经看起来像"哨"的字符串,必须在"哨"内部被编码为UTF-8/Base64.
布尔值变为小写或;数学上集成的JSON形式,如正态到小数.
如果一个可选参数不存在或明确存在,客户端会省略其标题.
使计划漂流失效离线 PR样本草案将这些要求变成无依赖的.NET 10可执行文件。
它扫描了相关的JSON Schema subschema位置,忽略了关键词下有注释形状的文字数据,记录了有效的属性路径,在任何网络请求之前都失败了错误的策略.
确定性验证器涵盖12个案例,包括嵌入式原始属性,缺席和辩证,非ASCII和sentinel编码,对大小写不敏感重复,被禁类型,下面的说明和.
字面上的例子数据,无效的HTTP符号,整体活化符号,以及两种安全整齐的边界.
我喜欢这种测试方式 因为它会遇到两种不同的倒退 服务器重构器可以意外地将注释移动到 ;客户端重构器可以停止编码加码或Unicode值.
两项修改都汇编成文,但都违反了运输合同。
在运行时间,服务器还有另一个工作.
它必须解码公认的价值,并将其与身体作比较。
一个缺失,畸形,或不同的值是带有JSON-RPC错误的HTTP 400 (.
当这种不匹配表明有僵硬的策略时,客户端在重新尝试新定义之前,应该先刷新.
限制: 路由元数据不是授权 这些信头可以帮助基础设施的路线、仪表和观察请求。
它们不能证明来电者可以使用价值中标明的区域、租户或资源。
能够选择机体的攻击者通常也可以选择匹配头,因此应用程序仍然需要正常的认证和授权检查.