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 commeabc12345.live.dynatrace.com
)OAUTH_CLIENT_ID
(string, e.g.,dt0s02.SAMPLE
) - ID du client Dynatrace OAuthOAUTH_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 :
SLACK_CONNECTION_ID
(string) - ID de connexion d'une connexion Slack
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 outilsapp-engine
:functions:run
- nécessaire pour presque tous les outilsenvironment-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 travailautomation:work
flows:write
- Créer et mettre à jour des workflowsautomation:work
flows:run
- Exécuter des flux de travailstorage:buckets:read
- nécessaire à l'outilexecute_dql
pour lire toutes les données système stockées sur Grailstorage:logs:read
- nécessaire à l'outilexecute_dql
pour lire les logs pour les validations des gardiens de la fiabilitéstorage:metrics:read
- nécessaire à l'outilexecute_dql
pour lire les métriques pour les validations du gardien de la fiabilitéstorage:bizevents:read
- nécessaire pour que l'outilexecute_dql
lise les bizevents pour les validations du gardien de fiabilitéstorage:spans:read
- nécessaire pour que l'outilexecute_dql
puisse lire les spans de Grailstorage:entities:read
- nécessaire pour que l'outilexecute_dql
puisse lire les entités de Grailstorage:events:read
- nécessaire à l'outilexecute_dql
pour lire les événements de Grailstorage:security.events:read -
nécessaire à l'outilexecute_dql
pour lire les événements de sécurité de Grailstorage:system:read
- nécessaire à l'outilexecute_dql
pour lire les données système de Grailstorage:user.events:read
- nécessaire à l'outilexecute_dql
pour lire les événements utilisateur de Grailstorage:user.sessions:read
- nécessaire à l'outilexecute_dql
pour lire les sessions utilisateur de Graildavis-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 DQLdavis-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ètresNote: Veuillez vous assurer que
settings:objects:read
est utilisé, et non pas le scopeapp-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
) :
- 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'
- 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}'
- 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.