这次问题不是 cxxmcp 自己的单点 bug,而是 conformance、spec 和多个 SDK 之间的互操作问题。

SEP-2243 要求 MCP HTTP POST 请求带这些 header:

  • Mcp-Method:每个 POST 都要带,值来自 JSON-RPC method
  • Mcp-Name:当请求里有 params.nameparams.uri 时带上。

跑 cxxmcp conformance 时出现了一个矛盾:http-header-validation / ServerRejectsMissingMethodHeader 测试要求服务器拒绝缺失 Mcp-Method 的请求;但 conformance 里其他场景用的 TypeScript SDK StreamableHTTPClientTransport 本身没有发送这个 header。

所以结果会变成两难:

  • 如果服务器严格实现 SEP-2243,很多 SDK-backed 场景会失败。
  • 如果服务器为了兼容 TypeScript SDK 放宽校验,ServerRejectsMissingMethodHeader 又会失败。

我把这个问题拆成了几组 issue:

这件事对 cxxmcp 的意义是:conformance 不是“跑过就完了”。当测试、reference client 和 spec 互相打架时,SDK 要么把问题记录清楚,要么就在实现里留下一个说不清的兼容分支。

我现在更倾向于把这类问题写进 release evidence:哪些失败来自自己,哪些来自上游,哪些是 spec/SDK 之间的行为差异。否则 109/110、447/447 这种数字看起来很清楚,实际解释成本仍然很高。