ClaudioLazaro/mcp-datadog-servert
If you are the rightful owner of mcp-datadog-servert and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The MCP Datadog Server is a Model Context Protocol server designed to interface with Datadog's APIs, allowing for automated tool generation and HTTP API calls using Datadog keys.
MCP Datadog Server
- Servidor MCP (Model Context Protocol) para Datadog.
- Gera tools automaticamente a partir do Postman Collection
datadog-api-collection-schema.json. - Faz chamadas HTTP às APIs do Datadog usando suas chaves (API/Application) via headers.
Instalação
- Requisitos: Node.js 18+
- Instalar deps:
npm installoumake install
Execução
- Padrão (stdio):
node src/index.jsoumake start - Integre no seu host MCP apontando para esse comando (protocolo stdio).
- O Makefile carrega variáveis de um arquivo
.envautomaticamente (se existir).
Configuração no Host MCP (LLM)
- Exemplos de configuração JSON do host MCP para adicionar servidores (Github e Datadog):
Exemplo 1 (Github, referência):
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
Exemplo 2 (Datadog via arquivo local):
{
"mcpServers": {
"datadog": {
"command": "node",
"args": ["/path/to/mcp-datadog-server/src/index.js"],
"env": {
"DATADOG_API_KEY": "<YOUR_API_KEY>",
"DATADOG_APP_KEY": "<YOUR_APP_KEY>",
"DATADOG_SITE": "<YOUR_SITE>" // opcional, ex.: datadoghq.com / datadoghq.eu
}
}
}
}
Exemplo 3 (Datadog via npx do pacote publicado):
{
"mcpServers": {
"datadog": {
"command": "npx",
"args": ["-y", "mcp-datadog-server"],
"env": {
"DATADOG_API_KEY": "<YOUR_API_KEY>",
"DATADOG_APP_KEY": "<YOUR_APP_KEY>",
"DATADOG_SITE": "<YOUR_SITE>" // opcional
}
}
}
}
Observações:
- O servidor aceita variáveis
DD_API_KEY/DD_APP_KEYouDATADOG_API_KEY/DATADOG_APP_KEY. - O site pode ser configurado com
DD_SITEouDATADOG_SITE(ex.:datadoghq.com,datadoghq.eu,us3.datadoghq.com). - Você também pode usar
MCP_DD_FOLDERSpara reduzir as tools carregadas (ex.:Logs,Monitors).
Variáveis de Ambiente
DD_API_KEYeDD_APP_KEY(obrigatórias)DD_SITE(opcional, padrãodatadoghq.com)DD_SUBDOMAIN(opcional, padrãoapi)MCP_DD_SCHEMA_PATH(opcional, caminho do JSON do Postman Collection; padrão édatadog-api-collection-schema.jsonno repositório)MCP_DD_FOLDERS(opcional, CSV de pastas topo da coleção para filtrar tools, ex.:Logs,Monitors,Metrics,Incidents,Dashboards)NODE_EXTRA_CA_CERTS(opcional) caminho para um certificado CA adicional (PEM/CRT) quando sua rede corporativa usa interceptação TLS. Ex.:NODE_EXTRA_CA_CERTS=/etc/ssl/certs/zscaler.pem(Linux) ouNODE_EXTRA_CA_CERTS="C:\\Users\\seu.usuario\\Devops\\zscaler.cer"(Windows)
Exemplo .env:
DD_API_KEY=xxxx
DD_APP_KEY=yyyy
DD_SITE=datadoghq.eu
MCP_DD_FOLDERS=Logs,Monitors,Metrics
# Para redes corporativas com CA própria (ex.: Zscaler)
# Linux/macOS
# NODE_EXTRA_CA_CERTS=/etc/ssl/certs/zscaler.pem
# Windows (atenção às barras invertidas e aspas)
# NODE_EXTRA_CA_CERTS="C:\\Users\\claudio.lazaro\\Devops\\zscaler.cer"
Capacidades
- Listar tools (MCP
list_tools) com nomes amigáveis, ex.:- Monitors:
get_monitors,get_monitor,create_monitor,update_monitor,delete_monitor,mute_monitor,unmute_monitor,search_monitors,search_monitor_groups,can_delete_monitors,validate_monitor. - Logs:
send_logs,search_logs_events,get_logs_events,aggregate_logs_analytics. - Metrics:
get_metrics_v1,get_metrics_v2,get_metric,get_metric_tags,update_metric,submit_series,submit_distribution_points,query_timeseries,query_scalars,estimate_metric.
- Monitors:
- Executar tools (MCP
call_tool) para qualquer endpoint da coleção. - Geração dinâmica de tools a partir do Postman Collection, com:
- Naming amigável por heurística (ver
src/schema.js). - Overrides de nomes para rotas populares (Monitors, Logs intake, Métricas de envio).
- Desambiguação por versão automática (
_v1,_v2) quando necessário. - Filtro por pastas de alto nível com
MCP_DD_FOLDERS(ex.:Logs,Monitors,Metrics).
- Naming amigável por heurística (ver
- Suporte a variáveis de path/query/body/headers por tool.
- Resolução de
{{baseUrl}},{{site}},{{subdomain}}conforme seu ambiente.
Como as Tools Funcionam
- Cada tool aceita:
path: parâmetros de caminho (ex.:{ "monitor_id": 123 }).query: parâmetros de querystring.body: corpo da requisição (objeto/array ou string JSON bruta).headers: headers adicionais (chaves do Datadog são adicionadas automaticamente).site/subdomain: sobrescreveDD_SITE/DD_SUBDOMAINsó nessa chamada.
Exemplos Práticos
- Monitors
get_monitors→ GET/api/v1/monitor(filtros viaquery).get_monitor→ GET/api/v1/monitor/:monitor_id(path.monitor_id).create_monitor→ POST/api/v1/monitor(bodycom a definição do monitor).mute_monitor/unmute_monitor→ POST/api/v1/monitor/:monitor_id/mute|unmute.
- Logs
send_logs→ POSThttps://http-intake.logs.{{site}}/api/v2/logs(corpo: array de eventos de log).search_logs_events→ POST/api/v2/logs/events/search(corpo comfilter,page, etc.).
- Métricas
submit_series→ POST/api/v2/series(envio de métricas v2).submit_distribution_points→ POST/api/v1/distribution_points.query_timeseries/query_scalars→ POST/api/v2/query/*.
Segurança
- Lê chaves apenas das variáveis de ambiente e envia em headers (
DD-API-KEY,DD-APPLICATION-KEY). Não registra chaves em logs.
Dicas
- Muitas tools? Use
MCP_DD_FOLDERS="Logs,Monitors,Metrics"para reduzir o escopo. - Quando houver endpoints v1 e v2 equivalentes, os nomes terão sufixos (
*_v1,*_v2). - Ajuste nomes exatos via overrides em
src/schema.js(procuregetOverrideName).
Makefile
- Use
makepara tarefas comuns:make install→ instala dependênciasmake start→ inicia o servidor MCP (stdio)make list-tools→ lista tools geradas (useFOLDERS=Logs,Monitorspara filtrar)make test→ roda testes unitários e valida o JSON da coleçãomake smoke→ executa um teste funcional real contra a API do Datadog (usa.env)
Teste Funcional (Live) com a API do Datadog
- Configure
.envcom suas chaves:
DD_API_KEY=xxxx
DD_APP_KEY=yyyy
DD_SITE=datadoghq.com
- Rode o teste de fumaça:
make smoke
O script executa:
GET /api/v1/validatepara validar as chavesGET /api/v1/monitor?page_size=1para listar monitores (pode falhar se a conta/escopo não tiver permissão; o teste segue mesmo assim)
Saída esperada (exemplo):
Smoke test: Validate API key
Validate: 200 true { valid: true, ... }
Smoke test: List monitors (page_size=1)
Monitors: 200 true
{ "...": "..." }
Observação: chamadas reais podem incorrer em custos/limites e dependem das permissões dos tokens.