MCP-native server for Datadog API with tools, resources, prompts, and schema-based generation
npm install mcp-datadog-server> Servidor MCP (Model Context Protocol) completo e robusto para integração com APIs do Datadog
Um servidor MCP de produção que oferece 351 tools para interagir com todas as APIs do Datadog através de LLMs, incluindo operações CRUD completas, tools curadas e ferramentas geradas automaticamente do schema.



bash
npm install -g mcp-datadog-server
`$3
`bash
git clone https://github.com/ClaudioLazaro/mcp-datadog-server.git
cd mcp-datadog-server
npm install
`⚙️ Configuração
$3
#### Obrigatórias
`bash
DD_API_KEY=your_api_key # Chave da API Datadog
DD_APP_KEY=your_app_key # Chave da aplicação Datadog
`#### Opcionais
`bash
DD_SITE=datadoghq.com # Site Datadog (padrão: datadoghq.com)
DD_SUBDOMAIN=api # Subdomínio (padrão: api)
MCP_DD_FOLDERS=Dashboards,Logs # Categorias permitidas (padrão: todas)
MCP_DD_SCHEMA_PATH=./schema.json # Caminho do schema (padrão: incluído)
MCP_DD_MAX_RETRIES=3 # Máximo de tentativas (padrão: 3)
MCP_DD_RETRY_BASE_MS=1000 # Base para retry em ms (padrão: 1000)
MCP_DD_TIMEOUT_MS=30000 # Timeout das requisições (padrão: 30000)
MCP_DD_USER_AGENT=mcp-datadog # User agent customizado
`$3
`bash
.env
DD_SITE=\"us3.datadoghq.com\"
DD_API_KEY=\"xxxxxxxxxxxxxxxxxxxxxxxx\"
DD_APP_KEY=\"xxxxxxxxxxxxxxxxxxxxxxxxxxxx\"
MCP_DD_FOLDERS=\"Dashboards,Monitors,Logs\"
`$3
- datadoghq.com (US1)
- datadoghq.eu (EU)
- us3.datadoghq.com (US3)
- us5.datadoghq.com (US5)
- ap1.datadoghq.com (AP1)
- ddog-gov.com (US Gov)🎮 Uso
$3
`bash
Iniciar servidor MCP
mcp-datadog-server serve
ou
npm startCom filtros
mcp-datadog-server serve --folders=Dashboards,Monitors
`$3
#### Listar Tools
`bash
Lista básica
mcp-datadog-server list-toolsLista detalhada ordenada
mcp-datadog-server list-tools --detailedJSON output
mcp-datadog-server list-tools --json
`#### Inspeção de Tools
`bash
Ver detalhes de uma tool
mcp-datadog-server get-tool create_monitorVer schema completo de uma tool
mcp-datadog-server show-schema create_monitorJSON output
mcp-datadog-server show-schema create_monitor --json
`#### Validação e Análise
`bash
Validar configuração
mcp-datadog-server validateAnalisar schema da API
mcp-datadog-server analyze-schemaAjuda
mcp-datadog-server help
`🔧 Tools CRUD Disponíveis
$3
`bash
create_monitor # Criar novo monitor
get_monitor # Obter monitor por ID
update_monitor # Atualizar monitor existente
delete_monitor # Deletar monitor
list_monitor # Listar todos os monitors
`$3
`bash
create_dashboard # Criar novo dashboard
get_dashboard # Obter dashboard por ID
update_dashboard # Atualizar dashboard existente
delete_dashboard # Deletar dashboard
list_dashboard # Listar todos os dashboards
`$3
`bash
create_downtime # Agendar downtime
get_downtime # Obter downtime por ID
update_downtime # Atualizar downtime
delete_downtime # Cancelar downtime
list_downtime # Listar todos os downtimes
`$3
`bash
create_user # Criar usuário
get_user # Obter usuário por ID
update_user # Atualizar usuário
delete_user # Deletar usuário
list_user # Listar todos os usuários
`$3
`bash
create_team # Criar equipe
get_team # Obter equipe por ID
update_team # Atualizar equipe
delete_team # Deletar equipe
list_team # Listar todas as equipes
`📋 Como o LLM Descobre os Parâmetros
$3
O LLM NÃO precisa saber os parâmetros antecipadamente. Através do protocolo MCP, ele:
1. Lista todas as tools disponíveis
2. Obtém o schema JSON Schema completo de cada tool
3. Entende todos os parâmetros, tipos e validações
4. Constrói chamadas válidas automaticamente
$3
`json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Monitor name"
},
"type": {
"type": "string",
"enum": ["metric alert", "service check", "event alert", "query alert", "composite", "log alert"],
"description": "Monitor type"
},
"query": {
"type": "string",
"description": "Monitor query"
},
"message": {
"type": "string",
"description": "Notification message"
},
"tags": {
"type": "array",
"items": {"type": "string"},
"description": "Monitor tags"
},
"priority": {
"type": "number",
"minimum": 1,
"maximum": 5,
"description": "Priority (1-5)"
},
"options": {
"type": "object",
"properties": {
"thresholds": {
"type": "object",
"properties": {
"critical": {"type": "number"},
"warning": {"type": "number"},
"ok": {"type": "number"}
}
},
"notify_audit": {"type": "boolean"},
"require_full_window": {"type": "boolean"}
}
}
},
"required": ["name", "type", "query"]
}
`$3
Input do usuário:
> "Create a monitor to alert when CPU usage is above 90%"
Chamada automática do LLM:
`javascript
await use_tool("create_monitor", {
"name": "High CPU Usage Alert",
"type": "metric alert",
"query": "avg(last_5m):avg:system.cpu.user{*} > 0.9",
"message": "CPU usage is high! Please investigate @ops-team",
"tags": ["alert", "cpu", "infrastructure"],
"priority": 3,
"options": {
"thresholds": {
"critical": 0.9,
"warning": 0.8
},
"notify_audit": true,
"require_full_window": false
}
})
`O LLM automaticamente:
- ✅ Descobriu todos os parâmetros disponíveis
- ✅ Preencheu campos obrigatórios (name, type, query)
- ✅ Adicionou campos opcionais relevantes
- ✅ Estruturou objetos complexos (options.thresholds)
- ✅ Validou tipos e constraints
🎯 Tools Curadas Especiais
$3
`bash
list_dashboards # Lista com filtros avançados e paginação
`$3
`bash
search_logs # Busca avançada de logs com filtros
`$3
`bash
query_metrics # Query de métricas timeseries
`$3
`bash
manage_incidents # Gerenciamento completo de incidentes
`$3
`bash
manage_synthetics # Testes sintéticos completos
`🏗️ Integração com LLMs
$3
Adicione ao arquivo de configuração do Claude:
`json
{
"mcpServers": {
"datadog": {
"command": "mcp-datadog-server",
"args": ["serve"],
"env": {
"DD_API_KEY": "your_api_key",
"DD_APP_KEY": "your_app_key",
"DD_SITE": "datadoghq.com"
}
}
}
}
`$3
`json
{
"mcpServers": {
"datadog": {
"command": "npx",
"args": ["-y", "mcp-datadog-server", "serve"],
"env": {
"DD_API_KEY": "your_api_key",
"DD_APP_KEY": "your_app_key"
}
}
}
}
`$3
`json
{
"mcpServers": {
"datadog": {
"command": "node",
"args": ["/path/to/mcp-datadog-server/src/index.js", "serve"],
"env": {
"DD_API_KEY": "your_api_key",
"DD_APP_KEY": "your_app_key"
}
}
}
}
`🛠️ Desenvolvimento
$3
`bash
npm test # Executar testes
npm run serve # Iniciar servidor
npm run list-tools # Listar tools
npm run validate # Validar configuração
npm run analyze-schema # Analisar schema da API
`$3
`bash
make install # Instalar dependências
make start # Iniciar servidor
make test # Executar testes
make list-tools # Listar tools
make validate # Validar configuração
`$3
`
src/
├── index.js # CLI principal
├── server.js # Servidor MCP principal
├── core/
│ ├── config.js # Sistema de configuração
│ ├── http-client.js # Cliente HTTP com retry
│ ├── schema-parser.js # Parser do schema Datadog
│ └── validation.js # Validações robustas
└── tools/
├── core-tools.js # Ferramentas base
├── curated-tools.js # Tools curadas otimizadas
└── crud-tools.js # Tools CRUD automáticas
`🔍 Debugging e Troubleshooting
$3
`bash
Ver resumo
mcp-datadog-server list-toolsVer lista completa ordenada
mcp-datadog-server list-tools --detailedVer schema de uma tool específica
mcp-datadog-server show-schema create_monitor
`$3
`bash
Validar tudo
mcp-datadog-server validateVer configuração resumida
mcp-datadog-server validate --json
`$3
`bash
Analisar schema carregado
mcp-datadog-server analyze-schemaTestar servidor básico
timeout 5s mcp-datadog-server serve
`$3
`bash
O servidor gera logs estruturados:
[2025-01-20T10:30:00.000Z] [INFO] Starting server with config: {...}
[2025-01-20T10:30:01.000Z] [INFO] Registered 9 curated tools
[2025-01-20T10:30:02.000Z] [INFO] Registered 25 CRUD tools
[2025-01-20T10:30:03.000Z] [INFO] Registered 319 generated tools
[2025-01-20T10:30:04.000Z] [INFO] Registered 351 tools total
`🚨 Solução de Problemas Comuns
$3
`bash
Verificar se a tool existe
mcp-datadog-server list-tools --detailed | grep nome_da_toolVer todas as categorias disponíveis
mcp-datadog-server analyze-schema
`$3
`bash
Validar credenciais
mcp-datadog-server validateVerificar variáveis de ambiente
echo $DD_API_KEY
echo $DD_APP_KEY
`$3
`bash
Verificar se o schema existe
mcp-datadog-server analyze-schemaForçar recarregamento
rm -f datadog-api-collection-schema.json
mcp-datadog-server serve
`$3
`bash
Filtrar apenas categorias necessárias
export MCP_DD_FOLDERS="Dashboards,Monitors,Logs"
mcp-datadog-server list-tools
`📈 Performance e Limites
$3
- ✅ Automático - Respeita headers retry-after
- ✅ Configurável - Ajuste via MCP_DD_MAX_RETRIES
- ✅ Inteligente - Backoff exponencial$3
- ✅ Padrão: 30 segundos por requisição
- ✅ Configurável via MCP_DD_TIMEOUT_MS
- ✅ Progress Tracking para operações longas$3
- ✅ Otimizado - Schema carregado uma vez na inicialização
- ✅ Streaming - Não mantém responses grandes em memória
- ✅ Filtros - Use MCP_DD_FOLDERS para reduzir footprint🔐 Segurança
$3
- ✅ Environment Only - Chaves apenas via variáveis de ambiente
- ✅ No Logging - Credentials nunca aparecem em logs
- ✅ Validation - Formato das chaves validado na inicialização$3
- ✅ TLS Only - Todas as chamadas via HTTPS
- ✅ Corporate Proxy - Suporte via NODE_EXTRA_CA_CERTS
- ✅ Headers Security - User-Agent e headers apropriados$3
- ✅ Zod Schemas - Validação rigorosa de entrada
- ✅ Sanitization - Limpeza automática de inputs
- ✅ Type Safety - TypeScript + runtime validation📊 Monitoramento
$3
`bash
Status do servidor
mcp-datadog-server validateAnálise das tools
mcp-datadog-server list-tools --json | jq '.total'
`$3
- ✅ Tools Count - Total de tools carregadas
- ✅ API Calls - Tracking de chamadas por tool
- ✅ Error Rate - Rate de erros por categoria
- ✅ Response Time - Tempos de resposta médios🎓 Exemplos Práticos
$3
O LLM pode automaticamente executar:
`javascript
await use_tool("create_monitor", {
name: "High CPU Alert",
type: "metric alert",
query: "avg(last_5m):avg:system.cpu.user{*} > 0.9",
message: "CPU high @ops-team"
});
`$3
`javascript
await use_tool("list_dashboard", {
filter_shared: false,
count: 50
});
`$3
`javascript
await use_tool("create_downtime", {
scope: ["host:web-server-01"],
start: Math.floor(Date.now() / 1000),
end: Math.floor(Date.now() / 1000) + 3600,
message: "Planned maintenance window"
});
`📚 Documentação Adicional
- 🔍 SCHEMA_DISCOVERY.md - Como o LLM descobre parâmetros
- 📋 REFACTOR_CHECKPOINT.md - Histórico da refatoração
- ⚙️ TOOLS.md - Documentação completa das tools
🤝 Contribuição
$3
`bash
Gerar relatório de debug
mcp-datadog-server validate --json > debug-info.json
mcp-datadog-server list-tools --json >> debug-info.json
`$3
1. Edite src/tools/curated-tools.js
2. Adicione schema Zod completo
3. Implemente função execute
4. Teste com npm test$3
1. Edite src/tools/crud-tools.js
2. Adicione novos recursos ao DATADOG_RESOURCES`Apache License 2.0 - Veja LICENSE para detalhes.
- Model Context Protocol - Framework base
- Datadog - APIs e documentação
- Zod - Schema validation
- Undici - HTTP client
---
🎉 Pronto para usar com qualquer LLM compatível com MCP!
Para suporte e discussões, veja as Issues do repositório.