Dynatrace Managed
Um servidor MCP para a plataforma Dynatrace Managed auto-hospedada
Documentação
Servidor MCP Dynatrace Managed
Casos de uso
- Seu(s) ambiente(s) Dynatrace Managed é/são o sistema primário de Observabilidade, contendo todos os dados ao vivo; ou
- 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.yamloudt-config.jsonresponsá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_FILEpara o caminho do seu arquivodt-config.yamloudt-config.jsonno 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âmetro | Obrigatório | Descrição | Valor de exemplo |
|---|---|---|---|
| apiEndpointUrl | Sim | URL base para a API do cluster Dynatrace Managed | https://dmz123.dynatrace-managed.com |
| environmentId | Sim | ID do ambiente gerenciado | 01234567-89ab-cdef-abcd-ef0123456789 |
| alias | Sim | Nome amigável do ambiente | MyEnvironment |
| apiToken | Somente no modo stdio | Token de API do cluster com os escopos necessários criados usando a instrução acima | dt0s01.ABCDEFGHIJK0123 |
| httpProxyUrl | Não | URL do servidor proxy para solicitações. Não use com o outro parâmetro de proxy | http://proxy.company.com:8080 |
| httpsProxyUrl | Não | URL do servidor proxy para solicitações. Não use com o outro parâmetro de proxy | https://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-communitypara 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
Hostpara 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 recebem403 Forbiddenaté que você definaDT_MCP_ALLOWED_HOSTSpara 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:
- Use intervalos de tempo específicos (por exemplo, 1-2 horas) em vez de grandes consultas históricas.
- 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.
- 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çalhoHost. 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.0ou--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 definirDT_MCP_ALLOWED_HOSTSpara os hostnames que seus clientes usam, ou eles receberão403 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 telemetriaDT_MCP_TELEMETRY_APPLICATION_ID(string, padrão:dynatrace-managed-mcp) - ID do aplicativo para rastreamentoDT_MCP_TELEMETRY_ENDPOINT_URL(string, padrão: endpoint Dynatrace) - URL do endpoint OpenKitDT_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