最终版标准轨道
| 字段 | 值 |
|---|---|
| SEP | 414 |
| 标题 | 记录 OpenTelemetry 跟踪上下文传播约定 |
| 状态 | 最终版 |
| 类型 | 标准轨道 |
| 创建日期 | 2025-04-25 |
| 作者 | Adrian Cole (@codefromthecrypt) |
| 发起人 | Marcelo Trylesinski (@Kludex) |
| PR | #414 |
摘要
本 SEP 记录了 MCP 中 OpenTelemetry (OTel) 跟踪上下文传播的约定。 MCP 的 OTel 语义约定 指定使用_meta 作为 W3C 跟踪上下文键的载体。这已经在 C# SDK 和其他实现中实践。
本规范记录了 _meta 中键的 DNS 前缀约定的一个例外。
这使得现有和新实现之间能够互操作,并为相关的 SEP(例如 SEP-2028)奠定基础。
规范
本 SEP 向 MCP 规范添加了文档,注明:-
当 OTel 跟踪上下文通过
_meta传播时,键traceparent、tracestate和baggage遵循 W3C 跟踪上下文 和 W3C Baggage 值格式。 -
一个展示
_meta中跟踪上下文的非规范性示例。 -
一条说明,澄清为何这是
_meta中 DNS 前缀键的例外:为了与现有实现和 OpenTelemetry 语义约定保持兼容。
非规范性示例
理由
为什么要记录这个?
目前这在其他地方有记录,但不是作为 MCP 规范。这样做可以确保依赖此模式的 SEP 能够完成,以及 MCP 组织内外的其他 SDK 也能完成,例如 Logfire 和 ToolHive。 如果我们不记录这个共同关注点,可能会出现不同的解释,例如将 traceparent 命名空间化为io.modelcontextprotocol.traceparent,这将破坏跟踪和日志关联。
相关的 SEP
- SEP-1788 -
_meta中的保留键;当此 SEP 实施时,应使用traceparent、tracestate和baggage进行更新 - SEP-2028 - 在此 SEP 基础上构建,用于将
_meta值转发到 HTTP 头
向后兼容性
本 SEP 记录了现有约定,并且是向后兼容的。安全影响
_meta 中的跟踪上下文可能包含关联 ID。实现应遵循适用于其环境的现有数据处理指南。