- 状态(Status): Final
- 类型(Type): Standards Track
- 创建(Created): 2025-04-25
- 作者(Author(s)): Adrian Cole (@codefromthecrypt)
- 担保人(Sponsor): Marcelo Trylesinski (@Kludex)
- PR: https://github.com/modelcontextprotocol/modelcontextprotocol/pull/414
摘要
本 SEP 记录了 MCP 中 OpenTelemetry(OTel)跟踪上下文传播的约定。 面向 MCP 的 OTel 语义约定规定使用_meta 作为 W3C Trace Context 键的载体。这在 C# SDK 和其他实现中已经付诸实践。
本规范记录了对 _meta 中键的 DNS 前缀约定的一个例外。这使得既有和新的实现之间能够互操作,并为相关 SEP(如 SEP-2028)奠定基础。
规范
本 SEP 向 MCP 规范添加文档,指出:-
当 OTel 跟踪上下文通过
_meta传播时,键traceparent、tracestate和baggage遵循 W3C Trace Context 和 W3C Baggage 的值格式。 -
一个展示
_meta中跟踪上下文的非规范性示例。 -
一条说明,澄清为何这是
_meta中键 DNS 前缀的一个例外:为了与既有实现以及 OpenTelemetry 语义约定保持兼容。
非规范性示例
理由
为何记录这一点?
这目前记录在别处,但并未作为 MCP 规范。将其纳入规范可确保依赖此模式的 SEP 能够完成,同时也让 MCP 组织内外的其他 SDK 得以完成,例如 Logfire 和 ToolHive。 如果我们不记录这一共同关切,可能会出现不同的解释,例如将 traceparent 命名空间化为io.modelcontextprotocol.traceparent,这会破坏跟踪(trace)和日志关联。
相关 SEP
- SEP-1788 ——
_meta中的保留键;本 SEP 实现时应更新,加入traceparent、tracestate和baggage - SEP-2028 —— 在本 SEP 基础上,将
_meta值转发到 HTTP 头部
向后兼容性
本 SEP 记录既有约定,向后兼容。安全影响
_meta 中的跟踪上下文可能包含关联 ID(correlation ID)。实现应遵循适合其环境的既有数据处理指南。