Dynatrace Managed

Um servidor MCP para a plataforma Dynatrace Managed auto-hospedada

Documentação

Servidor MCP Dynatrace Managed

Latest Dynatrace Managed MCP Server releases Dynatrace Managed MCP Server is released under the Apache 2.0 License npm Dynatrace Managed MCP Server Contributors on GitHub Dynatrace Managed MCP Server Stars on GitHub

Casos de uso
  1. Seu(s) ambiente(s) Dynatrace Managed é/são o sistema primário de Observabilidade, contendo todos os dados ao vivo; ou
  2. Houve uma migração de um ambiente Dynatrace Managed para um ambiente Dynatrace SaaS; no entanto, os dados históricos de observabilidade não foram migrados e ainda podem ser acessados por meio de um ambiente Dynatrace Managed. O MCP Dynatrace Managed é usado para acessar dados históricos, e um MCP Dynatrace SaaS separado é usado para acessar dados ao vivo e mais recentes.

Casos de uso específicos para o MCP Dynatrace Managed incluem:

  • Observabilidade em tempo real - Busque dados de nível de produção para detecção precoce e monitoramento proativo
  • Depuração contextual - Corrija problemas com contexto completo de exceções monitoradas, logs e anomalias
  • Insights de segurança - Obtenha análise detalhada de vulnerabilidades e rastreamento de problemas de segurança. Isso pode incluir avaliação de conformidade em multicloud com investigação baseada em evidências.
  • Consultas em linguagem natural - Consultas são mapeadas para o uso de ferramentas MCP e, portanto, consultas de API, com orientação para o próximo passo
  • Investigação de incidentes em múltiplas fases - Avaliação sistemática de impacto e solução de problemas
  • Suporte a múltiplos ambientes - Consulte vários ambientes Dynatrace Managed a partir do mesmo servidor MCP
Recursos
  • Problemas - Liste e obtenha detalhes de problemas dos seus serviços (por exemplo, Kubernetes)
  • Segurança - Liste e obtenha problemas de segurança / detalhes de vulnerabilidades
  • Entidades - Obtenha mais informações sobre uma entidade monitorada, incluindo mapeamentos de relacionamento
  • SLO - Liste e obtenha detalhes de Objetivos de Nível de Serviço, incluindo avaliação e orçamentos de erro
  • Rastreamento de eventos - Liste e obtenha eventos do sistema
  • Investigação de logs - Pesquise e filtre logs com consultas avançadas de conteúdo e baseadas em tempo
  • Análise de métricas - Consulte e analise métricas de desempenho usando a API de Métricas V2

O servidor MCP Dynatrace Managed local permite que Assistentes de IA interajam com uma ou mais implantações Dynatrace Managed auto-hospedadas, trazendo dados de observabilidade diretamente para o seu fluxo de trabalho assistido por IA.

Este servidor MCP suporta dois modos:

  • Modo local: Executa na sua máquina para desenvolvimento e testes.
  • Modo remoto: Conecta via HTTP/SSE para configurações distribuídas ou semelhantes a produção.

[!TIP] Este servidor MCP é projetado especificamente para implantações Dynatrace Managed (auto-hospedadas). Para ambientes Dynatrace SaaS, use o Dynatrace MCP.

[!NOTE] Este produto de código aberto é suportado pela comunidade. Para solicitações de recursos, dúvidas ou assistência, use GitHub Issues.

Início rápido no modo stdio (local)

Você pode adicionar este servidor MCP ao seu Assistente de IA, como VSCode, Claude, Cursor, Kiro, Windsurf, ChatGPT ou GitHub Copilot.

Para executar este servidor MCP, você precisa configurar quatro coisas:

  • Token da API Dynatrace Managed
  • Arquivo de configuração: arquivo dt-config.yaml ou dt-config.json responsável por definir a lista de ambientes que você pretende usar
  • Arquivo de configuração de conexão do servidor MCP: configuração MCP local, que depende das ferramentas que você está usando
  • Defina DT_CONFIG_FILE para o caminho do seu arquivo dt-config.yaml ou dt-config.json no ambiente do servidor MCP.

Token da API Dynatrace Managed

Para obter informações sobre como criar tokens de API em implantações Managed, consulte a documentação do Dynatrace Managed. Seu token de API deve incluir os seguintes escopos para funcionalidade completa:

  • Acessar feed de problemas e eventos, métricas e topologia (DataExport)
  • Ler entidades (entities.read)
  • Ler eventos (events.read)
  • Ler logs (logs.read)
  • Ler métricas (metrics.read)
  • Ler problemas (problems.read)
  • Ler problemas de segurança (securityProblems.read)
  • Ler SLO (slo.read)

Arquivo de configuração

Parâmetros de configuração

ParâmetroObrigatórioDescriçãoValor de exemplo
apiEndpointUrlSimURL base para a API do cluster Dynatrace Managedhttps://dmz123.dynatrace-managed.com
environmentIdSimID do ambiente gerenciado01234567-89ab-cdef-abcd-ef0123456789
aliasSimNome amigável do ambienteMyEnvironment
apiTokenSomente no modo stdioToken de API do cluster com os escopos necessários criados usando a instrução acimadt0s01.ABCDEFGHIJK0123
httpProxyUrlNãoURL do servidor proxy para solicitações. Não use com o outro parâmetro de proxyhttp://proxy.company.com:8080
httpsProxyUrlNãoURL do servidor proxy para solicitações. Não use com o outro parâmetro de proxyhttps://proxy.company.com:8080

Existem duas maneiras de configurar seus ambientes Dynatrace Managed.

Método 1: Arquivo de configuração (recomendado para desenvolvimento local)

Exemplo: dt-config.yaml

# Production environment
- apiEndpointUrl: https://my-api.company.com/
  environmentId: abc-123
  alias: production
  # Token is injected from an environment variable at runtime
  apiToken: ${DT_PROD_TOKEN}
  # You can also use the token directly
  # apiToken: dt0s01.ABCDEFGHIJK0123

# Staging environment
- apiEndpointUrl: https://staging-api.company.com/
  environmentId: xyz-789
  alias: staging
  apiToken: ${DT_STAGING_TOKEN}

Exemplo: dt-config.json

[
  {
    "apiEndpointUrl": "https://my-api.company.com/",
    "environmentId": "abc-123",
    "alias": "production",
    "apiToken": "${DT_PROD_TOKEN}"
  }
]

Método 2: Variável de ambiente (Docker/Kubernetes)

Para implantações Kubernetes ou se você preferir variáveis de ambiente, você pode definir DT_ENVIRONMENT_CONFIGS com uma string JSON em seu arquivo .env ou diretamente no arquivo de configuração de conexão do servidor MCP

DT_ENVIRONMENT_CONFIGS='[{"apiEndpointUrl":"https://api.example.com/","environmentId":"abc-123","alias":"production","apiToken":"dt0s01.ABCDEFGHIJK0123"}]'

Arquivo de configuração de conexão do servidor MCP

Para realmente conectar ao servidor MCP, você precisa configurar sua conexão MCP no seu Assistente de IA

Recomendamos sempre configurá-lo para seu espaço de trabalho atual em vez de usá-lo globalmente.

VS Code

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

Alternativamente, isso também pode ser armazenado nas configurações do usuário, e você pode definir env da seguinte forma:

{
  "servers": {
    "npx-dynatrace-managed-mcp": {
      "command": "npx",
      "args": ["-y", "@dynatrace-oss/dynatrace-managed-mcp-server@latest"],
      "env": {
        "DT_PROD_TOKEN": "dt0s01.ABCDEFGHIJK0123",
        "DT_CONFIG_FILE": "dt-config.yaml"
      }
    }
  }
}

Claude Code

O Claude Code pode instalar este servidor como um plugin, o que dispensa a configuração manual do MCP abaixo e adiciona uma habilidade que cobre seleção de ambiente e seletores de entidade. Ele é publicado através do marketplace de plugins da comunidade da Anthropic:

/plugin marketplace add anthropics/claude-plugins-community
/plugin install dynatrace-managed-mcp@claude-community

[!IMPORTANT] A listagem do marketplace da comunidade está pendente de revisão. Até que seja aprovada, a instalação acima relata Plugin "dynatrace-managed-mcp" not found in marketplace "claude-community" - use as instruções em Instalando diretamente deste repositório abaixo enquanto isso.

O Claude Code solicita a configuração do cluster durante a instalação - seja o array JSON para um único cluster, ou um caminho para um arquivo dt-config.yaml / dt-config.json para vários. Consulte docs/claude-code-plugin.md para detalhes.

[!NOTE] Marketplaces de terceiros não atualizam automaticamente por padrão. Execute /plugin marketplace update claude-community para obter uma nova versão do plugin.

Instalando diretamente deste repositório em vez disso

Este repositório também é um marketplace de plugins por si só, que é como você instala o plugin antes da listagem da comunidade ser aprovada, tenta uma alteração não publicada ou fixa uma branch específica:

/plugin marketplace add dynatrace-oss/dynatrace-managed-mcp
/plugin install dynatrace-managed-mcp@dynatrace

Para configurar o servidor manualmente, use o trecho do Claude Desktop abaixo - ele se aplica ao .mcp.json do Claude Code também.

Claude Desktop

{
  "mcpServers": {
    "dynatrace-managed-mcp": {
      "command": "npx",
      "args": ["-y", "@dynatrace-oss/dynatrace-managed-mcp-server@latest"],
      "env": {
        "DT_PROD_TOKEN": "dt0s01.ABCDEFGHIJK0123",
        "DT_CONFIG_FILE": "dt-config.yaml"
      }
    }
  }
}

Kiro

{
  "mcpServers": {
    "dynatrace-managed-mcp": {
      "command": "npx",
      "args": ["-y", "@dynatrace-oss/dynatrace-managed-mcp-server@latest"],
      "env": {
        "DT_PROD_TOKEN": "dt0s01.ABCDEFGHIJK0123",
        "DT_CONFIG_FILE": "dt-config.yaml"
      }
    }
  }
}

Esta configuração deve ser armazenada em <project-root>/.kiro/settings/mcp.json, ou nas configurações de nível de usuário (~/.kiro/settings/mcp.json).

Google Gemini CLI

Usando a CLI gemini diretamente (recomendado):

gemini extensions install https://github.com/dynatrace-oss/dynatrace-managed-mcp
export DT_ENVIRONMENT_CONFIGS="[{\"apiEndpointUrl\":\"https://my-api-endpoint.com/\",\"environmentId\":\"my-env-id-1\",\"alias\":\"alias-env\",\"apiToken\":\"my-api-token\"},{\"apiEndpointUrl\":\"https://my-api2-endpoint.com/\",\"environmentId\":\"my-env-id-2\",\"alias\":\"alias-env-2\",\"apiToken\":\"my-api-token-2\"}]"

e verifique se o servidor está em execução via

gemini mcp list

Ou manualmente em seu ~/.gemini/settings.json ou .gemini/settings.json:

{
  "mcpServers": {
    "dynatrace-managed-mcp": {
      "command": "npx",
      "args": ["@dynatrace-oss/dynatrace-managed-mcp-server@latest"],
      "env": {
        "DT_ENVIRONMENT_CONFIGS": "[{\"apiEndpointUrl\":\"https://my-api-endpoint.com/\",\"environmentId\":\"my-env-id-1\",\"alias\":\"alias-env\",\"apiToken\":\"my-api-token\"},{\"apiEndpointUrl\":\"https://my-api2-endpoint.com/\",\"environmentId\":\"my-env-id-2\",\"alias\":\"alias-env-2\",\"apiToken\":\"my-api-token-2\"}]",
        "DT_CONFIG_FILE": "dt-config.yaml"
      },
      "timeout": 30000,
      "trust": false
    }
  }
}

Modo de servidor HTTP (alternativa)

O modo padrão para este MCP local usa stdio para transporte.

Para cenários onde você precisa executar o servidor MCP como um serviço HTTP, você pode usar o modo de servidor HTTP (por exemplo, para balanceamento de carga ou integração com clientes web):

Executando como servidor HTTP

Certifique-se de ter o Arquivo de configuração na mesma pasta. Você não precisa definir tokens de API para configurações executadas no modo HTTP.

# Get help and see all available options
npx -y @dynatrace-oss/dynatrace-managed-mcp-server@latest --help

# Run with HTTP server on default port 3000
npx -y @dynatrace-oss/dynatrace-managed-mcp-server@latest --http

# Run with custom port
npx -y @dynatrace-oss/dynatrace-managed-mcp-server@latest --http --port 3001

# Run with custom host/IP
npx -y @dynatrace-oss/dynatrace-mcp-server@latest --http --host 127.0.0.1   # recommended for local computers
npx -y @dynatrace-oss/dynatrace-mcp-server@latest --http --host 0.0.0.0     # recommended for container
npx -y @dynatrace-oss/dynatrace-mcp-server@latest --http --host 192.168.0.1 # recommended when sharing connection over a local network

[!WARNING] No modo HTTP, o servidor valida o cabeçalho Host para proteger contra ataques de rebinding de DNS. Com --host 0.0.0.0 (ou --host ::) apenas hostnames de loopback são aceitos por padrão, então clientes remotos recebem 403 Forbidden até que você defina DT_MCP_ALLOWED_HOSTS para os hostnames que eles usam. Consulte Proteção contra rebinding de DNS.

Arquivo de configuração de conexão do servidor MCP:

Como explicado anteriormente, o modo HTTP não armazena tokens de API em sua configuração. A autenticação é feita pelo usuário preenchendo o cabeçalho X-Dynatrace-Tokens.

{
  "mcpServers": {
    "dynatrace-managed-mcp": {
      "url": "http://localhost:3000",
      "transport": "http",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json,text/event-stream",
        "X-Dynatrace-Tokens": "alias1=token1;alias2=token2"
      }
    }
  }
}

Considerações de desempenho

Importante: Este servidor MCP faz chamadas de API para o(s) ambiente(s) Dynatrace Managed. Ele é projetado para uso eficiente (por exemplo, limitando os tamanhos de resposta), mas deve-se ter cuidado para não sobrecarregar o(s) ambiente(s) Dynatrace Managed com consultas grandes.

Melhores práticas:

  1. Use intervalos de tempo específicos (por exemplo, 1-2 horas) em vez de grandes consultas históricas.
  2. Use filtros específicos para limitar o escopo das consultas tanto quanto possível, por exemplo, seletores de entidade que especificam o ID da entidade.
  3. Se estiver usando vários ambientes, seja específico sobre qual consultar, quando aplicável. Se consultar vários ao mesmo tempo, esteja ciente de quantos dados serão retornados ao LLM, por exemplo, top 10 problemas de 2 ambientes = 20 problemas, versus top 10 problemas de 10 ambientes = 100 problemas.

Proteção contra rebinding de DNS (modo HTTP)

  • DT_MCP_ALLOWED_HOSTS (opcional): Lista separada por vírgulas de hostnames que o servidor aceita no cabeçalho Host. Portas são ignoradas, então liste apenas hostnames (use a forma entre colchetes para IPv6, por exemplo, [::1]).

Quando esta variável não está definida, a lista de permissões é derivada de --host: o endereço vinculado mais localhost, 127.0.0.1 e [::1]. Solicitações cujo cabeçalho Host não está na lista são rejeitadas com 403 Forbidden, assim como solicitações que carregam um cabeçalho Origin para um hostname que não está na lista. Isso é o que previne ataques de rebinding de DNS.

A validação está sempre ativa: não há configuração na qual ela seja silenciosamente ignorada.

[!IMPORTANT] Quando vinculado a um endereço curinga (--host 0.0.0.0 ou --host ::), o endereço vinculado não identifica quais hostnames são legítimos, então o servidor aceita apenas hostnames de loopback e registra um aviso na inicialização. O rebinding de DNS é bloqueado neste modo, mas também é bloqueado todo cliente remoto. Se você executar em um contêiner ou expor o servidor em uma rede, você deve definir DT_MCP_ALLOWED_HOSTS para os hostnames que seus clientes usam, ou eles receberão 403 Forbidden.

Exemplo: contêiner vinculado a todas as interfaces, acessado como mcp.internal.example.com:

DT_MCP_ALLOWED_HOSTS=mcp.internal.example.com node dist/index.js --http --host 0.0.0.0

DT_MCP_ALLOWED_HOSTS substitui a lista derivada em vez de estendê-la, então inclua nomes de loopback explicitamente se você também precisar de acesso local:

DT_MCP_ALLOWED_HOSTS=mcp.internal.example.com,localhost,127.0.0.1

Solução de problemas

Problemas de autenticação

Na maioria dos casos, problemas de autenticação vêm de escopos ausentes ou tokens inválidos. Certifique-se de que você adicionou todos os escopos necessários, conforme listado acima.

Ao encontrar erros, você pode perguntar ao AI Assistant pelo erro exato retornado pelo MCP. Para problemas de inicialização, verifique os logs do AI Assistant.

Você também pode tentar executar o MCP diretamente para ver se ele relata erros na inicialização:

```bash
npx @dynatrace-oss/dynatrace-managed-mcp-server@latest
```

O limite de tamanho do cabeçalho é muito pequeno

O cabeçalho X-Dynatrace-Tokens cresce com o número de ambientes. Cada entrada tem aproximadamente alias=dt0s01.ABCDEFGHIJK0123 (~110 caracteres). O Node.js impõe um limite padrão de tamanho de cabeçalho HTTP de 16 KB, que comporta aproximadamente 140–150 ambientes antes que as requisições sejam rejeitadas.

Se você precisar de mais ambientes, aumente o limite na inicialização do servidor com a flag --max-http-header-size:

node --max-http-header-size=65536 ./dist/index.js --http

Se você estiver executando um proxy reverso (como nginx) na frente do servidor MCP, o proxy também impõe seu próprio limite. O nginx usa como padrão 8 KB (large_client_header_buffers), o que comporta aproximadamente 70 ambientes. Aumente isso na sua configuração do nginx:

large_client_header_buffers 4 32k;

Telemetria

O Dynatrace MCP Server inclui o envio de Dados de Telemetria via Dynatrace OpenKit para ajudar a melhorar o produto. Isso inclui:

  • Eventos de início do servidor
  • Uso de ferramentas (quais ferramentas são chamadas, sucesso/falha, duração da execução)
  • Rastreamento de erros para depuração e melhoria

Privacidade e desativação:

  • A telemetria está desativada por padrão, mas pode ser ativada definindo DT_MCP_ENABLE_TELEMETRY=true
  • Nenhum dado sensível do seu ambiente Dynatrace é rastreado
  • Apenas estatísticas de uso anônimas e informações de erro são coletadas
  • Estatísticas de uso e dados de erro são transmitidos para o endpoint de análise da Dynatrace

Opções de configuração:

  • DT_MCP_ENABLE_TELEMETRY (booleano, padrão: false) - Ativar telemetria
  • DT_MCP_TELEMETRY_APPLICATION_ID (string, padrão: dynatrace-managed-mcp) - ID do aplicativo para rastreamento
  • DT_MCP_TELEMETRY_ENDPOINT_URL (string, padrão: endpoint Dynatrace) - URL do endpoint OpenKit
  • DT_MCP_TELEMETRY_DEVICE_ID (string, padrão: gerado automaticamente) - Identificador do dispositivo para rastreamento

Documentação adicional

Uso do servidor MCP

  • Escopos de token da API - tabela contendo informações sobre as ferramentas disponíveis, endpoints que elas chamam e escopos de token da API necessários para acessá-las corretamente
  • Arquitetura - diagramas detalhados representando a arquitetura do ambiente Dynatrace ao usar o servidor MCP no modo stdio ou http
  • Variáveis de ambiente - informações detalhadas sobre as variáveis de ambiente disponíveis
  • Arquivo de regras - determine regras para o seu AI Assistant para garantir o uso tranquilo do cluster Managed

Desenvolvimento

  • Formato de changelog - instrução para desenvolvedores sobre como escrever changelogs consistentes e estruturados
  • Desenvolvimento - informações gerais sobre como executar o projeto e seu conteúdo