Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, aprenderás qué datos de telemetría emite Azure API Management para el tráfico hacia los servidores MCP, cómo habilitar el registro de la carga útil para los argumentos y resultados de las herramientas, y cómo consultar los datos en Azure Monitor.
Prerequisites
Una instancia de API Management con al menos un servidor MCP. Consulte Exponer una API REST como un servidor MCP o Exponer un servidor MCP existente.
Un recurso de Application Insights vinculado a la instancia de API Management. Para obtener más información, consulte Configuración de Application Insights para Azure API Management.
Telemetría predeterminada para servidores MCP
Para cada solicitud de MCP, API Management escribe una fila de solicitudes de Application Insights con dimensiones específicas de MCP y establece el campo de duración estándar. Puede trazar la latencia por herramienta sin cambiar ninguna configuración. Para obtener más información, consulte la sección referencia de telemetría de MCP , más adelante en este artículo.
Note
La telemetría de MCP sigue las convenciones semánticas de OpenTelemetry para la inteligencia artificial generativa, que definen nombres de atributos de telemetría estándar (por ejemplo, gen_ai.*), por lo que los datos son coherentes entre herramientas.
Habilita el registro de la carga útil para los argumentos y resultados
De forma predeterminada, API Management no captura los argumentos y los resultados de las llamadas a herramientas. Para habilitar la captura de un servidor MCP:
En Azure Portal, vaya a la instancia de API Management.
Seleccione API>servidores MCP y, a continuación, seleccione el servidor MCP que desea registrar.
Seleccione Configuración>Registros de diagnóstico.
Active el registro de la carga útil del frontend y del backend. Seleccione Guardar.
Caution
Los argumentos y los resultados de la herramienta pueden incluir mensajes, datos de clientes o secretos. Habilite el registro de carga solo para los servidores y entornos de MCP en los que lo necesite. Aplica el depurado o las listas de permitidos de reclamaciones antes de un despliegue generalizado.
Consultar el tráfico de MCP con KQL
A continuación se muestran las consultas de Kusto de ejemplo que puede ejecutar en Azure Monitor para analizar el tráfico MCP. En estos ejemplos, reemplace por sales-mcp el nombre del servidor MCP cuando corresponda.
Enumerar las últimas 50 llamadas de herramienta en un servidor MCP determinado
requests
| where customDimensions["api.type"] == "Mcp"
and customDimensions["service.name"] == "sales-mcp"
and customDimensions["gen_ai.operation.name"] == "tools/call"
| project timestamp,
tool = customDimensions["gen_ai.tool.name"],
session = customDimensions["gen_ai.conversation.id"],
client = strcat(customDimensions["user_agent.name"], "/",
customDimensions["user_agent.version"]),
durationMs = duration,
success
| order by timestamp desc
| take 50
Principales clientes de MCP por volumen de llamadas a herramientas
requests
| where customDimensions["api.type"] == "Mcp"
and customDimensions["gen_ai.operation.name"] == "tools/call"
| summarize calls = count()
by client = strcat(customDimensions["user_agent.name"], "/",
customDimensions["user_agent.version"])
| top 10 by calls desc
latencia p50 y p95 por herramienta en las últimas 24 horas
requests
| where customDimensions["api.type"] == "Mcp"
and customDimensions["gen_ai.operation.name"] == "tools/call"
and timestamp > ago(24h)
| summarize p50 = percentile(duration, 50),
p95 = percentile(duration, 95),
calls = count()
by tool = tostring(customDimensions["gen_ai.tool.name"])
| order by p95 desc
Tasa de errores por herramienta a lo largo del tiempo
requests
| where customDimensions["api.type"] == "Mcp"
and customDimensions["gen_ai.operation.name"] == "tools/call"
| summarize total = count(),
failures = countif(success == false)
by bin(timestamp, 5m),
tool = tostring(customDimensions["gen_ai.tool.name"])
| extend errorRate = todouble(failures) / total
| render timechart
Inspeccionar los argumentos enviados a una herramienta específica
En este escenario, asegúrese de que el registro de carga está habilitado para el servidor MCP.
requests
| where customDimensions["api.type"] == "Mcp"
and customDimensions["service.name"] == "sales-mcp"
and customDimensions["gen_ai.tool.name"] == "create_quote"
and timestamp > ago(1h)
| project timestamp,
session = customDimensions["gen_ai.conversation.id"],
args = customDimensions["gen_ai.tool.call.arguments"],
result = customDimensions["gen_ai.tool.call.result"]
Añade dimensiones personalizadas con la directiva de rastreo
Para capturar datos que no están en el esquema integrado (por ejemplo, un encabezado personalizado x-agent-id , una notificación JWT o un identificador de correlación), use la directiva de seguimiento en el ámbito del servidor MCP.
Warning
No acceda a context.Response.Body desde las directivas asociadas al ámbito de MCP. Las respuestas MCP se transmiten en flujo continuo, y la lectura del cuerpo interrumpe el flujo.
Referencia de telemetría de MCP
Las siguientes dimensiones aparecen en cada solicitud MCP:
| Property | Descripción |
|---|---|
gen_ai.operation.name |
método JSON-RPC (tools/list o tools/call). |
gen_ai.conversation.id |
Identificador de sesión de MCP. |
network.protocol.name |
Nombre del protocolo (MCP). |
network.protocol.version |
Versión del protocolo. |
auth.type |
Método de autenticación de entrada. |
user_agent.name |
Nombre de cliente MCP (por ejemplo, vscode o claude-desktop). |
user_agent.version |
Versión del cliente MCP. |
service.name |
Nombre del servidor MCP. |
service.version |
Versión del servidor MCP. |
api.type |
Discriminador de tipo de API (Mcp). |
error.message |
Cadena de error, en caso de fallo. |
error.type |
Categoría de error, en caso de error. |
Campos adicionales en herramientas o lista
| Métrica | Descripción |
|---|---|
ToolCount |
Número de herramientas devueltas en la respuesta. |
Campos adicionales en tools/call
| Property | Descripción |
|---|---|
gen_ai.tool.name |
Herramienta que invocó el agente. |
gen_ai.tool.type |
Tipo de herramienta. |
gen_ai.tool.call.arguments |
Argumentos en JSON. Solo está presente cuando el registro de la carga útil está habilitado. |
gen_ai.tool.call.result |
JSON del resultado. Solo está presente cuando el registro de la carga útil está habilitado. |