Serveur MCP Dynatrace

Ce serveur MCP local permet d'interagir avec la plateforme d'observabilité Dynatrace. Apportez des données d'observabilité en temps réel directement dans votre flux de développement.

Cas d'utilisation

  • Observabilité en temps réel - Récupérer des données au niveau de la production pour une détection précoce et une surveillance proactive
  • Débogage contextuel - Corrigez les problèmes avec un contexte complet à partir des exceptions, des journaux et des anomalies surveillées
  • Informations sur la sécurité - Analyse détaillée des vulnérabilités et suivi des problèmes de sécurité
  • Requêtes en langage naturel - Utilisez la génération et l'explication DQL pilotées par l'IA

Capacités

  • Liste et obtention des détails des problèmes de vos services (par exemple Kubernetes)
  • Lister et obtenir les détails des problèmes de sécurité / vulnérabilités
  • Exécuter DQL (Dynatrace Query Language) et récupérer des logs, des événements, des périodes et des métriques
  • Envoyer des messages Slack (via Slack Connector)
  • Configurer un workflow de notification (via Dynatrace AutomationEngine)
  • Obtenir plus d'informations sur une entité surveillée
  • Obtenir la propriété d'une entité

Assistance assistée par l'IA (Aperçu)

  • Natural Language to DQL - Convertir des requêtes en anglais simple en Dynatrace Query Language
  • Explication DQL - Obtenir des explications en anglais simple sur des requêtes DQL complexes
  • AI Chat Assistant - Obtenir de l'aide contextuelle et des conseils pour les questions sur Dynatrace
  • Système de retour d'information - Fournir un retour d'information pour améliorer les réponses de l'IA au fil du temps

Note : Alors que Davis CoPilot AI est généralement disponible (GA), les API de Davis CoPilot sont actuellement en avant-première. Pour plus d'informations, visitez la communauté de prévisualisation de Davis CoPilot.

Démarrage rapide

Vous pouvez ajouter ce serveur MCP (utilisant STDIO) à votre client MCP comme VS Code, Claude, Cursor, Amazon Q Developer CLI, Windsurf Github Copilot via le paquet @dynatrace-oss/dynatrace-mcp-server.

Nous recommandons de toujours le configurer pour votre espace de travail actuel plutôt que de l'utiliser globalement.

VS Code

{ "servers" : { "npx-dynatrace-mcp-server" : { "command" : "npx", "cwd" : "${workspaceFolder}", "args" : ["-y", "@dynatrace-oss/dynatrace-mcp-server@latest"], "envFile" : "${workspaceFolder}/.env" } } }

Remarque : dans cette configuration, la variable ${workspaceFolder} est utilisée, ce qui ne fonctionne que si la configuration est stockée dans l'espace de travail courant, par exemple, <votre-repo>/.vscode/mcp.json. Alternativement, cela peut aussi être stocké dans les paramètres de l'utilisateur, et vous pouvez définir env comme suit :

{ "servers" : { "npx-dynatrace-mcp-server" : { "command" : "npx", "args" : ["-y", "@dynatrace-oss/dynatrace-mcp-server@latest"], "env" : {"OAUTH_CLIENT_ID" : "", "OAUTH_CLIENT_SECRET" : "", "DT_ENVIRONMENT" : "" } } } }

Claude Desktop

{ "mcpServers" : { "mobile-mcp" : { "command" : "npx", "args" : ["-y", "@dynatrace-oss/dynatrace-mcp-server@latest"], "env" : {"OAUTH_CLIENT_ID" : "", "OAUTH_CLIENT_SECRET" : "", "DT_ENVIRONMENT" : "" } } } }

CLI du développeur Amazon Q

L'interface de programmation Amazon Q Developer CLI offre une expérience de chat interactive directement dans votre terminal. Vous pouvez poser des questions, obtenir de l'aide sur les services AWS, résoudre des problèmes et générer des extraits de code sans quitter votre environnement de ligne de commande.

{ "mcpServers" : { "mobile-mcp" : { "command" : "npx", "args" : ["-y", "@dynatrace-oss/dynatrace-mcp-server@latest"], "env" : {"OAUTH_CLIENT_ID" : "", "OAUTH_CLIENT_SECRET" : "", "DT_ENVIRONMENT" : "" } } } }

Cette configuration doit être stockée dans <votre-répo>/.amazonq/mcp.json.

Variables d'environnement

Vous pouvez configurer l'authentification via OAuth Client ou Platform Tokens (v0.5.0 et plus récent) via les variables d'environnement suivantes :

  • DT_ENVIRONMENT (string, e.g., https://abc12345.apps.dynatrace.com)- URL de votre plateforme Dynatrace (n'utilisez pas les URLs classiques de Dynatrace comme abc12345.live.dynatrace.com)
  • OAUTH_CLIENT_ID (string, e.g., dt0s02.SAMPLE) - ID du client Dynatrace OAuth
  • OAUTH_CLIENT_SECRET (string, e.g., dt0s02.SAMPLE.abcd1234) - Secret du client OAuth Dynatrace
  • Avec la v0.5.0 et les versions plus récentes : DT_PLATFORM_TOKEN (string, e.g., dt0s16.SAMPLE.abcd1234) - Token de la plateforme Dynatrace (support limité, car tous les champs d'application ne sont pas disponibles ; voir ci-dessous)

Pour plus d'informations, veuillez consulter la documentation sur lacréation d'un client Oauth dans Dynatrace, ainsi que sur lacréation d'un jeton de plateforme dans Dynatrace.

De plus, en fonction des fonctionnalités que vous utilisez, les variables suivantes peuvent être configurées :

Champs d'application pour l'authentification

En fonction des fonctionnalités que vous utilisez, les champs d'application suivants sont nécessaires :

  • app-engine:apps:run - nécessaire pour presque tous les outils

  • app-engine:functions:run - nécessaire pour presque tous les outils

  • environment-api:security-problems:read - nécessaire pour lire les problèmes de sécurité(actuellement non disponible pour les jetons de plate-forme)

  • environment-api:entities:read - lecture des entités surveillées(actuellement non disponible pour les jetons de plate-forme)

  • automation:workflows:read - Lecture des flux de travail

  • automation:work flows:write - Créer et mettre à jour des workflows

  • automation:work flows:run - Exécuter des flux de travail

  • storage:buckets:read - nécessaire à l'outil execute_dql pour lire toutes les données système stockées sur Grail

  • storage:logs:read - nécessaire à l'outil execute_dql pour lire les logs pour les validations des gardiens de la fiabilité

  • storage:metrics:read - nécessaire à l'outil execute_dql pour lire les métriques pour les validations du gardien de la fiabilité

  • storage:bizevents:read - nécessaire pour que l'outil execute_dql lise les bizevents pour les validations du gardien de fiabilité

  • storage:spans:read - nécessaire pour que l'outil execute_dql puisse lire les spans de Grail

  • storage:entities:read - nécessaire pour que l'outil execute_dql puisse lire les entités de Grail

  • storage:events:read - nécessaire à l'outil execute_dql pour lire les événements de Grail

  • storage:security.events:read - nécessaire à l'outil execute_dql pour lire les événements de sécurité de Grail

  • storage:system:read - nécessaire à l'outil execute_dql pour lire les données système de Grail

  • storage:user.events:read - nécessaire à l'outil execute_dql pour lire les événements utilisateur de Grail

  • storage:user.sessions:read - nécessaire à l'outil execute_dql pour lire les sessions utilisateur de Grail

  • davis-copilot:conversations:execute - exécute la compétence conversationnelle (chat avec Copilot)

  • davis-copilot:nl2dql:execute - exécute la compétence Davis Copilot Natural Language (NL) vers DQL

  • davis-copilot:dql2nl:execute - exécute la compétence DQL vers le langage naturel (NL)

  • settings:objects:read - nécessaire pour lire les informations sur la propriété et les gardiens (SRG) dans les paramètres

    Note: Veuillez vous assurer que settings:objects:read est utilisé, et non pas le scope app-settings:objects:read qui porte le même nom.

✨ Exemples d'invites ✨

Utilisez ces exemples d'invites comme point de départ. Copiez-les dans votre IDE ou votre agent, adaptez-les à vos services/stack/architecture, et étendez-les si nécessaire. Ils sont là pour vous aider à imaginer comment l'observabilité en temps réel et l'automatisation fonctionnent ensemble dans le contexte MCP dans votre IDE.

Écrire une requête DQL en langage naturel :

Montrez-moi les taux d'erreur pour le service de paiement au cours de la dernière heure

Expliquer une requête DQL :

Que fait cette requête DQL ? fetch logs | filter dt.source_entity == 'SERVICE-123' | summarize count(), by:{severity} | trier count() desc

Chat avec Davis CoPilot :

Comment puis-je enquêter sur les requêtes de base de données lentes dans Dynatrace ?

Trouver des vulnérabilités ouvertes sur la production, mettre en place une alerte :

J'ai cet extrait de code ici dans mon IDE, où j'obtiens un avertissement de vulnérabilité de dépendance pour mon code. Vérifier si je vois une vulnérabilité ouverte/cve sur la production. Analyser un problème de production spécifique. Mettre en place un workflow qui envoie des alertes Slack au canal #devops-alerts lorsque des problèmes de disponibilité se produisent

Déboguer les erreurs 503 intermittentes :

Notre équilibreur de charge renvoie par intermittence des erreurs 503 lors des pics de trafic. Récupérer tous les problèmes récents détectés pour nos services frontaux et lancer une requête pour corréler les taux d'erreur avec les indicateurs de santé des instances de service. Je soupçonne que nous avons des disjoncteurs qui se déclenchent, mais j'ai besoin d'une confirmation à partir des données de télémétrie

Corréler le problème de mémoire avec les journaux :

Il y a un problème d'utilisation élevée de la mémoire sur l'un de nos hôtes. Obtenir les détails du problème et ensuite récupérer les journaux associés pour aider à comprendre ce qui cause le pic de mémoire ? A quel fichier de ce repo le problème est-il lié ?

Analyse du flux des requêtes de traçage :

Nos utilisateurs sont confrontés à des processus de paiement lents. Pouvez-vous exécuter une requête DQL pour me montrer la trace complète des requêtes pour notre flux de paiement, afin que je puisse identifier le service à l'origine du goulot d'étranglement ?

Analyser les événements du cluster Kubernetes :

Nos déploiements d'applications semblent échouer par intermittence. Pouvez-vous récupérer les événements récents de notre "cluster de production" pour aider à identifier ce qui pourrait être à l'origine de ces problèmes de déploiement ?

Résolution des problèmes

Problèmes d'authentification

Dans la plupart des cas, il y a un problème avec le client OAuth. Veuillez vous assurer que vous avez ajouté tous les scopes comme demandé ci-dessus et que votre utilisateur a également toutes les permissions nécessaires sur votre environnement Dynatrace.

En cas de problème, vous pouvez résoudre les problèmes de SSO/OAuth en vous basant sur la documentation du développeur Dynatrace et en fournissant la liste des scopes.

Il est recommandé d'essayer d'accéder à l'API suivante (qui nécessite les scopes minimaux app-engine:apps:run et app-engine:functions:run) :

  1. Utilisez l'ID et le secret du client OAuth pour récupérer un jeton de porteur (valable uniquement pendant quelques minutes) :
curl --request POST 'https://sso.dynatrace.com/sso/oauth2/token' \ --header 'Content-Type : application/x-www-form-urlencoded' \N--data-urlencode 'grant_type=client_credentials' \N--data-urlencode 'client_id={votre-identifiant-client}' \N--data-urlencode 'client_secret={votre-secret-client}' \N--data-urlencode 'scope=app-engine:apps:run app-engine:functions:run'
  1. Utiliser l'access_token de la réponse à l'appel ci-dessus comme bearer-token dans l'appel suivant :
curl -X GET https://abc12345.apps.dynatrace.com/platform/management/v1/environment \N -H 'accept : application/json' \N -H 'Authorization : Bearer {votre-bearer-token}'
  1. Vous devriez obtenir un résultat comme celui-ci :
{"environmentId" : "abc12345", "createTime" : "2023-01-01T00:10:57.123Z", "blockTime" : "2025-12-07T00:00:00Z", "state" : "ACTIVE" }

Problème d'accès aux données sur Grail

Grail dispose d'une section dédiée aux permissions dans la documentation Dynatrace. Veuillez vous référer à https://docs.dynatrace.com/docs/discover-dynatrace/platform/grail/data-model/assign-permissions-in-grail pour plus de détails.

Développement

Pour le développement local, vous pouvez utiliser VSCode et GitHub Copilot.

Tout d'abord, activez Copilot pour votre espace de travail .vscode/settings.json:

{ "github.copilot.enable" : { "*" : true } }

et assurez-vous que vous utilisez le Mode Agent dans Copilot.

Deuxièmement, ajoutez le MCP à .vscode/mcp.json:

{ "servers" : { "my-dynatrace-mcp-server" : { "command" : "node", "args" : ["--watch", "${workspaceFolder}/dist/index.js"], "envFile" : "${workspaceFolder}/.env" } } }

Troisièmement, créez un fichier .env dans ce référentiel (vous pouvez le copier à partir de .env.template) et configurez les variables d'environnement comme décrit ci-dessus.

Enfin, apportez des modifications à votre code et compilez-le avec npm run build ou exécutez simplement npm run watch et il se compilera automatiquement.

Remarques

Ce produit n'est pas officiellement supporté par Dynatrace. Veuillez nous contacter via GitHub Issues si vous avez des demandes de fonctionnalités, des questions, ou si vous avez besoin d'aide.

Liés dans Service en nuage - MCP Servers sécurisés

ServeurRésuméActions
APISIX-MCPVoir
CMP MCP ServeurUn serveur MCP (Model Context Protocol) pour l'intégration de l'API CMP (Connectivity Management Pla...Voir
Démonstration de géolocalisationCe projet montre comment utiliser EdgeOne Pages Functions pour récupérer les informations de géoloca...Voir
Sécurité RADUn serveur de protocole de contexte de modèle (MCP) pour RAD Security, fournissant des informations...Voir
Alpha Ticker MCPAucune documentation n'est disponible.Voir
Slide MCP ServerUne mise en œuvre du serveur MCP qui s'intègre à l'API Slide, offrant des capacités complètes de ges...Voir