Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans cet article, vous allez découvrir quelles données de télémétrie Gestion des API Azure émet pour le trafic vers les serveurs MCP, comment activer la journalisation des charges utiles pour les arguments et les résultats de l’outil et comment interroger les données dans Azure Monitor.
Conditions préalables
Instance gestion des API avec au moins un serveur MCP. Consultez Exposer une API REST en tant que serveur MCP ou Exposer un serveur MCP existant.
Ressource Application Insights liée à votre instance Gestion des API. Pour plus d’informations, consultez Configurer Application Insights pour Gestion des API Azure.
Données de télémétrie par défaut pour les serveurs MCP
Pour chaque requête MCP, Gestion des API écrit une ligne de requêtes Application Insights avec des dimensions spécifiques à MCP et définit le champ de durée standard. Vous pouvez graphiquer la latence par outil sans modifier de configuration. Pour plus d’informations, consultez la section de référence sur les données de télémétrie MCP , plus loin dans cet article.
Note
La télémétrie MCP suit les conventions sémantiques OpenTelemetry pour l’IA générative, qui définissent des noms d’attributs de télémétrie standard (par exemple) gen_ai.*afin que les données soient cohérentes entre les outils.
Activer la journalisation des charges utiles pour les arguments et les résultats
Par défaut, gestion des API ne capture pas les arguments et les résultats des appels d’outils. Pour activer la capture pour un serveur MCP :
Dans le portail Azure, accédez à votre instance Gestion des API.
Sélectionnez API>Serveurs MCP, puis sélectionnez le serveur MCP que vous souhaitez consigner.
Sélectionnez Paramètres>Journaux de diagnostic.
Activez la journalisation des charges utiles du front-end et du back-end. Cliquez sur Enregistrer.
Caution
Les arguments et les résultats des outils peuvent contenir des invites, des données client ou des secrets. Activez la journalisation de charge utile uniquement pour les serveurs et environnements MCP où vous en avez besoin. Appliquez un nettoyage ou des listes d'autorisation de revendications avant un déploiement à grande échelle.
Interroger le trafic MCP avec KQL
Voici des exemples de requêtes Kusto que vous pouvez exécuter dans Azure Monitor pour analyser le trafic MCP. Dans ces exemples, remplacez sales-mcp par le nom de votre serveur MCP le cas échéant.
Répertorier les 50 derniers appels d’outil sur un serveur MCP donné
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
Principaux clients MCP par volume d’appel d’outils
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
latence p50 et p95 par outil au cours des dernières 24 heures
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
Taux d’erreur par outil au fil du temps
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
Inspecter les arguments envoyés à un outil spécifique
Pour ce scénario, vérifiez que la journalisation des charges utiles est activée pour le serveur 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"]
Ajouter des dimensions personnalisées avec la stratégie de traçage
Pour capturer des données qui ne se trouve pas dans le schéma intégré , par exemple, un en-tête personnalisé x-agent-id , une revendication JWT ou un ID de corrélation, utilisez la stratégie de trace au niveau de l’étendue du serveur MCP.
Warning
N'accédez pas à context.Response.Body depuis des stratégies attachées à l'étendue MCP. Les réponses MCP sont transmises en flux, et la lecture du corps de la réponse rompt ce flux.
Informations de référence sur les données de télémétrie MCP
Les dimensions suivantes s’affichent sur chaque requête MCP :
| Propriété | Description |
|---|---|
gen_ai.operation.name |
méthode JSON-RPC (`tools/list` ou `tools/call`). |
gen_ai.conversation.id |
ID de session MCP. |
network.protocol.name |
Nom du protocole (MCP). |
network.protocol.version |
Version du protocole. |
auth.type |
Méthode d’authentification entrante. |
user_agent.name |
Nom du client MCP (par exemple, vscode ou claude-desktop). |
user_agent.version |
Version du client MCP. |
service.name |
Nom du serveur MCP. |
service.version |
Version du serveur MCP. |
api.type |
Indicateur de type d’API (Mcp). |
error.message |
Chaîne d’erreur, en cas d’échec. |
error.type |
Catégorie d’erreur, en cas d’échec. |
Champs supplémentaires sur les outils/listes
| Metric | Description |
|---|---|
ToolCount |
Nombre d’outils retournés dans la réponse. |
Champs supplémentaires dans tools/call
| Propriété | Description |
|---|---|
gen_ai.tool.name |
Outil appelé par l’agent. |
gen_ai.tool.type |
Type d’outil. |
gen_ai.tool.call.arguments |
Arguments JSON. Présente uniquement lorsque la journalisation de charge utile est activée. |
gen_ai.tool.call.result |
Résultat JSON. Présente uniquement lorsque la journalisation de charge utile est activée. |