使用 Trace 调查 MCP 调用

借助 Cloud Trace,您可以分析调用远程 Google Cloud MCP 服务器的智能体应用的运行情况和性能。您可以对应用进行插桩,以记录提示、回答和方法调用,而远程 MCP 服务器则会为工具调用生成 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_entries。 arguments 字段包含操作完成请求所需的信息。

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 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 参考文档
Identity and Access Management Identity and Access Management MCP 参考文档
Organization Policy Service Organization Policy Service MCP 参考文档
Spanner Spanner MCP 参考文档
Security Command Center Security Command Center 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。此命名惯例由 MCP 的 OpenTelemetry 语义惯例定义。

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

插桩示例

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

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