Servidor MCP de Dynatrace
Este servidor MCP local permite la interacción con la plataforma de observabilidad de Dynatrace. Traiga datos de observabilidad en tiempo real directamente a su flujo de trabajo de desarrollo.
Casos de uso
- Observabilidad en tiempo real - Obtenga datos a nivel de producción para detección temprana y monitoreo proactivo
- Depuración contextual - Solucione problemas con el contexto completo de las excepciones, registros y anomalías monitorizadas
- Información sobre seguridad: obtenga análisis detallados de vulnerabilidades y seguimiento de problemas de seguridad
- Consultas en lenguaje natural: utilice la generación y explicación de DQL mediante IA
Capacidades
- Enumerar y obtener detalles de problemas de sus servicios (por ejemplo, Kubernetes)
- Enumerar y obtener detalles de problemas de seguridad / vulnerabilidades
- Ejecutar DQL (Dynatrace Query Language) y recuperar logs, eventos, spans y métricas
- Enviar mensajes Slack (vía Slack Connector)
- Configure el flujo de trabajo de notificación (a través de Dynatrace AutomationEngine)
- Obtener más información sobre una entidad monitorizada
- Obtenga la propiedad de una entidad
Asistencia Potenciada por IA (Vista previa)
- Lenguaje Natural a DQL - Convierta consultas en inglés simple a Lenguaje de Consulta Dynatrace
- Explicación DQL - Obtenga explicaciones en inglés sencillo de consultas DQL complejas
- AI Chat Assistant - Obtenga ayuda contextual y orientación para preguntas sobre Dynatrace
- Sistema de retroalimentación - Proporcione retroalimentación para mejorar las respuestas de la IA con el tiempo
Nota: Mientras que Davis CoPilot AI está disponible de forma general (GA), las API de Davis CoPilot están actualmente en fase de vista previa. Para obtener más información, visite la Comunidad de Vista Previa de Davis CoPilot.
Inicio rápido
Puede añadir este servidor MCP (utilizando STDIO) a su cliente MCP como VS Code, Claude, Cursor, Amazon Q Developer CLI, Windsurf Github Copilot a través del paquete @dynatrace-oss/dynatrace-mcp-server
.
Recomendamos configurarlo siempre para su espacio de trabajo actual en lugar de utilizarlo globalmente.
Código VS
{ "servidores": { "npx-dynatrace-mcp-server": { "command": "npx", "cwd": "${workspaceFolder}", "args": ["-y", "@dynatrace-oss/dynatrace-mcp-server@latest"], "envFile": "${workspaceFolder}/.env" } }
Nota: En esta configuración, se utiliza la variable ${workspaceFolder}
. Esto sólo funciona si la configuración se almacena en los espacios de trabajo actuales, por ejemplo, <su-repo>/.vscode/mcp.json
. Alternativamente, esto también se puede almacenar en user-settings, y se puede definir env
de la siguiente manera:
{ "servidores": { "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 para desarrolladores de Amazon Q
La CLI para desarrolladores de Amazon Q proporciona una experiencia de chat interactiva directamente en su terminal. Puede hacer preguntas, obtener ayuda con los servicios de AWS, solucionar problemas y generar fragmentos de código sin salir de su entorno de línea de comandos.
{ "mcpServers": { "mobile-mcp": { "command": "npx", "args": ["-y", "@dynatrace-oss/dynatrace-mcp-server@latest"], "env": { "OAUTH_CLIENT_ID": "", "OAUTH_CLIENT_SECRET": "", "DT_ENVIRONMENT": "" } } } }
Esta configuración debe almacenarse en <your-repo>/.amazonq/mcp.json
.
Variables de entorno
Puedes configurar la autenticación a través de OAuth Client o Platform Tokens (v0.5.0 y posteriores) a través de las siguientes variables de entorno:
DT_ENVIRONMENT
(string, e.g., https://abc12345.apps.dynatrace.com)- URL a su Plataforma Dynatrace (no utilice URLs clásicas de Dynatrace comoabc12345.live.dynatrace.com
)OAUTH_CLIENT_ID
(string, e.g.,dt0s02.SAMPLE
) - ID del Cliente OAuth de DynatraceOAUTH_CLIENT_SECRET
(string, e.g.,dt0s02.SAMPLE.abcd1234
) - Secreto del Cliente OAuth de Dynatrace- Con v0.5.0 y posteriores:
DT_PLATFORM_TOKEN
(string, e.g.,dt0s16.SAMPLE.abcd1234
) - Dynatrace Platform Token (soporte limitado, ya que no todos los ámbitos están disponibles; ver más abajo)
Para más información, por favor consulte la documentación sobre lacreación de un Cliente Oauth en Dynatrace, así como lacreación de un Token de Plataforma en Dynatrace.
Además, dependiendo de las características que utilice, las siguientes variables pueden ser configuradas:
SLACK_CONNECTION_ID
(string) - ID de conexión de una conexión Slack
Ámbitos para la Autenticación
Dependiendo de las características que utilices, se necesitan los siguientes ámbitos:
app-engine:apps:run
- necesario para casi todas las herramientasapp-engine:functions:run
- necesario para casi todas las herramientasenvironment-api:security-problems:read
- necesario para leer problemas de seguridad(actualmente no disponible para los tokens de plataforma)environment-api:entities:read
- lectura de entidades supervisadas(actualmente no disponible para los tokens de plataforma)automation:workflows:read
- leer flujos de trabajoautomation:workflows:write
- crear y actualizar flujos de trabajoautomation:workflows:run
- ejecutar flujos de trabajostorage:buckets:read
- necesario para que la herramientaexecute_dql
lea todos los datos del sistema almacenados en Grailstorage:logs:read
- necesario para que la herramientaexecute_dql
lea los registros para las validaciones del tutor de fiabilidadstorage:metrics:read
- necesario para que la herramientaexecute_dql
lea las métricas para las validaciones del guardián de fiabilidadstorage:bizevents:read
- necesario para que la herramientaexecute_dql
lea bizevents para las validaciones del guardián de fiabilidadstorage:spans:read
- necesario para que la herramientaexecute_dql
lea spans de Grailstorage:entities:read
- necesario para que la herramientaexecute_dql
lea entidades de Grailstorage:events:read
- necesario para que la herramientaexecute_dql
lea eventos de Grailstorage:security.events:read -
necesario para que la herramientaexecute_dql
lea eventos de seguridad de Grailstorage:system:read
- necesario para que la herramientaexecute_dql
lea datos de sistema de Grailstorage:user.events:read
- necesario para que la herramientaexecute_dql
lea los eventos de usuario de Grailstorage:user.sessions:read
- necesario para que la herramientaexecute_dql
lea las sesiones de usuario de Graildavis-copilot:conversations:execute
- ejecutar habilidad conversacional (chat con Copilot)davis-copilot:nl2dql:execute
- ejecuta la habilidad de Lenguaje Natural (NL) a DQL de Davis Copilotdavis-copilot:dql2nl:execute
- ejecuta la habilidad DQL a Lenguaje Natural (NL)settings:objects:read
- necesario para leer información de propiedad y Guardianes (SRG) desde settingsNota: Por favor, asegúrese de que se utiliza
settings:objects:read
, y no el ámbito de nombre similarapp-settings:objects:read
.
✨ Avisos de ejemplo ✨
Utilice estos avisos de ejemplo como punto de partida. Simplemente cópialos en tu IDE o configuración de agente, adáptalos a tus servicios/pila/arquitectura, y extiéndelos según sea necesario. Están aquí para ayudarte a imaginar cómo la observabilidad en tiempo real y la automatización trabajan juntas en el contexto MCP en tu IDE.
Escriba una consulta DQL a partir del lenguaje natural:
Muéstrame las tasas de error para el servicio de pago en la última hora
Explicar una consulta DQL:
¿Qué hace este DQL? fetch logs | filter dt.source_entity == 'SERVICE-123' | summarize count(), by:{severity} | ordenar count() desc
Chat con Davis CoPilot:
¿Cómo puedo investigar consultas lentas a bases de datos en Dynatrace?
Encontrar vulnerabilidades abiertas en producción, configurar alerta:
Tengo este fragmento de código aquí en mi IDE, donde obtengo una advertencia de vulnerabilidad de dependencia para mi código. Comprobar si veo alguna vulnerabilidad/cve abierta en producción. Analizar un problema específico de producción. Configurar un flujo de trabajo que envíe alertas de Slack al canal #devops-alerts cuando se produzcan problemas de disponibilidad
Depurar errores 503 intermitentes:
Nuestro equilibrador de carga está devolviendo errores 503 de forma intermitente durante los picos de tráfico. Extraiga todos los problemas recientes detectados para nuestros servicios front-end y ejecute una consulta para correlacionar las tasas de error con los indicadores de estado de la instancia de servicio. Sospecho que tenemos disyuntores que se activan, pero necesito confirmación de los datos de telemetría
Correlacionar el problema de memoria con los registros:
Hay un problema de uso elevado de memoria en uno de nuestros hosts. Obtenga los detalles del problema y, a continuación, recupere los registros relacionados para ayudar a comprender qué está causando el pico de memoria ¿Con qué archivo de este repositorio está relacionado?
Análisis del flujo de solicitudes de rastreo:
Nuestros usuarios están experimentando procesos de pago lentos. ¿Puedes ejecutar una consulta DQL para mostrarme el rastreo de solicitudes completo de nuestro flujo de pago, para que pueda identificar qué servicio está causando el cuello de botella?
Analizar los eventos del clúster Kubernetes:
Los despliegues de nuestras aplicaciones parecen fallar de forma intermitente. ¿Puede recuperar los eventos recientes de nuestro "clúster de producción" para ayudar a identificar qué podría estar causando estos problemas de despliegue?
Solución de problemas
Problemas de autenticación
En la mayoría de los casos, algo va mal con el cliente OAuth. Por favor, asegúrese de que ha añadido todos los ámbitos como se solicita más arriba. Además, asegúrese de que su usuario también tiene todos los permisos necesarios en su entorno Dynatrace.
En caso de cualquier problema, puede solucionar los problemas de SSO/OAuth basándose en nuestra Documentación para Desarrolladores de Dynatrace y proporcionando la lista de ámbitos.
Se recomienda intentar acceder a la siguiente API (que requiere ámbitos mínimos app-engine:apps:run
y app-engine:functions:run
):
- Utiliza OAuth Client ID y Secret para recuperar un Bearer Token (sólo válido durante un par de minutos):
curl --request POST 'https://sso.dynatrace.com/sso/oauth2/token' --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'client_id={your-client-id}' \ --data-urlencode 'client_secret={your-client-secret}' \ --data-urlencode 'scope=app-engine:apps:run app-engine:functions:run'
- Utiliza
el access_token
de la respuesta de la llamada anterior como el bearer-token en la siguiente llamada:
curl -X GET https://abc12345.apps.dynatrace.com/platform/management/v1/environment \ -H 'accept: application/json' \ -H 'Authorization: Bearer {your-bearer-token}'
- Deberías recuperar un resultado como este
{"environmentId": "abc12345", "createTime": "2023-01-01T00:10:57.123Z", "blockTime": "2025-12-07T00:00:00Z", "state": "ACTIVE" }
Problemas de acceso a los datos en Grail
Grail tiene una sección dedicada a los permisos en los documentos de Dynatrace. Por favor, consulte https://docs.dynatrace.com/docs/discover-dynatrace/platform/grail/data-model/assign-permissions-in-grail para más detalles.
Desarrollo
Para fines de desarrollo local, puede utilizar VSCode y GitHub Copilot.
En primer lugar, habilite Copilot para su espacio de trabajo .vscode/settings.json
:
{ "github.copilot.enable": { "*": true } }
y asegúrese de que está utilizando el Modo Agente en Copilot.
En segundo lugar, añada el MCP a .vscode/mcp.json
:
{ "servers": { "my-dynatrace-mcp-server": { "command": "node", "args": ["--watch", "${workspaceFolder}/dist/index.js"], "envFile": "${carpeta_del_espacio_de_trabajo}/.env" } } }
En tercer lugar, cree un archivo .env
en este repositorio (puede copiarlo de .env.template
) y configure las variables de entorno como se ha descrito anteriormente.
Finalmente, haz cambios en tu código y compílalo con npm
run
build
o simplemente ejecuta npm run watch
y se autocompila.
Notas
Este producto no está soportado oficialmente por Dynatrace. Por favor, contacte con nosotros a través de GitHub Issues si tiene peticiones de características, preguntas o necesita ayuda.