使用 Trace 调查 MCP 调用

您可以配置调用远程 Google Cloud MCP 服务器的代理应用,以使这些服务器能够生成记录调用状态的 span。然后,您可以使用 Cloud Trace(用于存储和分析记录工具调用、方法调用以及提示和回答的 span)来帮助您了解代理应用的运行情况。

span 记录的是一个函数或操作,它是更大的端到端操作的一部分。轨迹表示单个端到端操作,由 span 组成。因此,轨迹可提供有关所调用函数序列和总体延迟时间的信息,而 span 可提供特定函数的状态和延迟时间信息。

工具简介

借助工具,智能体可以收集训练数据之外的信息,通常是通过与外部 API 互动来实现。借助 Google Cloud MCP 服务器,智能体应用可以调用可调用 Google Cloud API 方法的工具。例如,您的应用可以调用 list_log_entries 工具来提取最近的日志数据。

Model Context Protocol (MCP) 是一种规范,用于定义 AI 智能体与外部工具、数据源和资源进行通信和交互的标准化方式。如需查看提供 MCP 服务器的产品的完整列表以及指向其参考文档的链接,请参阅支持的产品

如何将跟踪上下文传递到 MCP 服务器

MCP 参考页面(例如 list_log_entries 的文档)提供了一个示例 curl 命令,您可以使用该命令向工具发送 HTTP 请求。请求中发送的 JSON 载荷类似于以下内容:

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "NAME",
    "arguments": {
      // provide these details according to the tool's MCP specification
    }
  },
  "id": 1
}

name 字段的值列出了工具名称,例如 list_log_entriesarguments 字段包含操作完成请求所需的信息。

MCP 标准定义了一个 _meta 字段,可让客户端和服务器将元数据附加到其互动中。客户端和服务器可以使用此字段传递跟踪上下文

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "NAME",
    "arguments": {
      // provide these details according to the tool's MCP specification
    },
    "_meta": {
        "traceparent": "00-TRACE_ID-PARENT_SPAN_ID-SAMPLED_FLAG",
        "tracestate": "Vendor specific information."
      },
  },
  "id": 1
}

_meta 数据包含 traceparent 字段。此字段的值的格式由万维网联盟 (W3C) traceparent 标头定义。该值包括以下内容:

  • traceparent 规范的版本 (00)。
  • 轨迹的 ID (TRACE_ID)。
  • 调用 span 的 ID (PARENT_SPAN_ID)。
  • 调用 span 是否对请求进行了抽样 (SAMPLED_FLAG)。如果进行了抽样,此字段的值为 01;如果未进行抽样,此字段的值为 00

tracestate 字段包含特定于供应商的跟踪信息。

限制

  • 跟踪记录上下文必须遵循 W3C 跟踪记录上下文标准,并且 sampled 标志必须设置为 1。

  • 远程 Google Cloud MCP 服务器可以为 tools/call 操作生成单个 span,但不会为其他类型的操作生成 span,也不会为 tools/call 操作生成子 span。

  • 远程 Google Cloud MCP 服务器仅在请求通过身份验证、授权和其他内部检查时生成 span。

支持跟踪的 MCP 服务器

本部分列出了支持跟踪的远程 Google 和 Google Cloud MCP 服务器。本文还介绍了自托管 MCP 服务器如何生成轨迹 span。

自托管式服务器

我们建议您对自行托管的 MCP 服务器进行插桩处理,以将遥测数据发送到您的 Google Cloud 项目。如果您使用 Python,插桩可以为 tools/call 操作生成 span。如需了解详情,请参阅使用 OpenTelemetry 为自托管 MCP 服务器插桩

支持跟踪的远程 Google 和 Google Cloud MCP 服务器

以下产品包含一项集成,可让其远程 MCP 服务器为 tools/call 操作生成轨迹 span:

产品 参考文档
Cloud Logging Cloud Logging MCP 参考文档
Cloud Monitoring Cloud Monitoring MCP 参考
Maps Grounding Lite Maps Grounding Lite MCP 参考文档
GKE GKE MCP 参考文档
Cloud Run Cloud Run MCP 参考
Compute Engine Compute Engine MCP 参考
Google Security Operations Google SecOps MCP 参考
AlloyDB for PostgreSQL AlloyDB for PostgreSQL MCP 参考
Agent Search Agent Search MCP 参考文档
Cloud SQL
BigQuery BigQuery MCP 参考
Personalized Service Health Personalized Service Health MCP 参考
Cloud Billing Cloud Billing MCP 参考文档
政策问题排查工具 政策问题排查工具 MCP 参考文档
Managed Service for Apache Airflow Managed Service for Apache Airflow MCP 参考文档
Datastream Datastream MCP 参考信息
Policy Analyzer Policy Analyzer MCP 参考文档
Unified Maintenance Unified Maintenance MCP 参考文档

配置您的应用

您可以使用任何通过 _meta 字段传递轨迹上下文的框架或 SDK。这些框架和 SDK 包括支持 MCP 的 OpenTelemetry 语义惯例的框架和 SDK。

例如,您可以使用智能体开发套件 (ADK) 框架。 如需了解详情,请参阅使用 OpenTelemetry 对 ADK 应用进行插桩

查看 span

如需查看跟踪记录数据,请使用 Trace 探索器。在此页面上,您可以查看有关跟踪记录数据的汇总信息,并探索各个跟踪记录和 span。如需了解详情,请参阅查找和探索轨迹

如需查看由 MCP 服务器写入的 span,请按 span 名称过滤跟踪记录数据。例如,某些远程 Google Cloud MCP 服务器在收到 tools/call 操作时可以生成轨迹 span。这些 span 采用以下命名惯例:

tools/call NAME

在上述表达式中,NAME 指的是调用的工具,例如 list_keys。此命名惯例由 OpenTelemetry MCP 语义惯例定义。

如需查找这些 span,请使用过滤栏并添加 mcp.method.name 的属性过滤条件。将过滤条件的值设置为 tools/call。如需详细了解这些步骤,请参阅查看对远程 MCP 服务器的调用

插桩示例

如需了解插桩建议,请参阅选择插桩方法

我们提供的插桩示例使用 OpenTelemetry