关于 Weave MCP Server + Client Linked Traces:
该示例项目演示 MCP 客户端与服务端的端到端追踪,并调整为将追踪导出到 wandb/weave。它面向需要排查 MCP 组件间请求流和延迟的开发者,可在客户端与服务端之间关联追踪上下文。
主要功能
- 01在 MCP 边界间传播 OpenTelemetry 上下文
- 02关联客户端与服务端跨度
- 03跟踪请求流程和延迟
- 04将追踪导出到 wandb/weave
适用场景
- 01跨客户端和服务端追踪 MCP 请求
- 02检查请求各阶段的延迟
- 03排查跨服务边界的问题
MCP 相关
该示例为 MCP 客户端和服务端组件添加插桩,以传播 OpenTelemetry 追踪上下文,形成跨边界的连贯请求视图。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Weave MCP 服务 + 客户端关联追踪:
此仓库取自 Arize-ai/phoenix 中的示例,并经过调整以导出到 wandb/weave。 注意:存在一个竞争条件,有时会导致工具在 OpenAI 调用步骤运行失败。原始版本中也存在此错误,并非 weave 引入的。
设置环境:
首先运行 cp .env.example .env
按照说明,在新建的 env 文件中设置相关密钥。
安装依赖项:
- uv:
uv sync - pip:
pip install -r requirements.txt
运行客户端并导出追踪
- uv:
uv run client.py - python:
python client.py
(摘自 Arize)如何为 MCP 客户端-服务端应用实现端到端追踪
本教程将介绍如何在 MCP 客户端和服务端之间传递 OpenTelemetry(OTEL)上下文,从而实现完整的可观测性。openinference-instrumentation-mcp 包通过为客户端和服务端组件提供插桩来实现这一点。
什么是 MCP?为什么需要分布式追踪?
Anthropic 的 Model Context Protocol(MCP)架构的一项主要优势,是能够将 AI 模型与不同服务、机器和编程语言中的信息连接起来。这种分布式方式有以下几项优势:
- 拓展 AI 能力:将模型连接到训练数据之外的专业知识和数据源
- 即插即用组件:无需重新训练模型即可添加新的上下文提供方
- 多语言支持:使用任何编程语言实现上下文提供方,同时保持兼容性
挑战是什么?当请求流经多个服务时,调试会变得困难。如何追踪请求的完整流程,以确定问题发生的位置?
如何使用 OpenTelemetry 进行 MCP 追踪
OpenTelemetry 通过以下方式解决跨服务追踪难题:
- 跨服务保留上下文:在不同组件之间维护追踪 ID 和关联关系
- 跨越网络边界:自动处理网络请求中的上下文
- 支持多种语言:使用兼容任何编程语言的标准化格式
当客户端通过正确的插桩调用服务端时:
- 客户端创建一个 span 来追踪该操作
- OTEL 上下文会随 MCP 请求自动传递
- 服务端继续同一条追踪,不会中断
- 所有上下文提供方都会继承此追踪上下文
- 你可以在 Phoenix 中将完整交互作为一条关联追踪查看
这种可见性对于排查复杂 AI 系统的问题、优化性能瓶颈,以及了解不同组件如何影响应用行为至关重要。
设置
完成正确的插桩后,追踪上下文会自动跨越 MCP 客户端-服务端边界传递,从而让你能够:
- 在一条追踪中跟踪从客户端到服务端的请求
- 观察请求生命周期不同阶段的延迟
- 调试跨越服务边界的问题
环境设置
-
导航到此目录:
cd tutorials/mcp/tracing_between_mcp_client_and_server -
安装所需依赖项:
pip install -r requirements.txt
运行示例
-
在本地运行 Phoenix,或连接到在线实例
-
在 .env 文件中设置
OPENAI_API_KEY和PHOENIX_COLLECTOR_ENDPOINT。如果使用在线 Phoenix 实例或启用了身份验证,也请设置PHOENIX_API_KEY。 -
运行 MCP 客户端。客户端代码会在运行时于单独进程中启动服务端。
python client.py -
向 Agent 提问。
-
在 Phoenix 中查看追踪:

工作原理
openinference-instrumentation-mcp 软件包会自动:
- 为 MCP 客户端操作创建 span
- 将跟踪上下文注入 MCP 请求
- 在服务端提取并延续跟踪上下文
- 将上下文与服务端创建的任何 OTEL span 关联起来
这样,即使请求流跨越了服务边界,你也能将其作为一条完整的跟踪记录查看。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。