Datadog MCP Server logo

Datadog MCP Server

by TANTIOPE

MCP server exposing Datadog observability APIs for AI agents with logs, metrics, traces, monitors, dashboards, and more.

Install Datadog MCP Server

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "tantiope-datadog-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "datadog-mcp"
      ],
      "env": {
        "DD_API_KEY": "YOUR_VALUE_HERE",
        "DD_APP_KEY": "YOUR_VALUE_HERE",
        "DD_SITE": "YOUR_VALUE_HERE",
        "MCP_DEFAULT_LIMIT": "YOUR_VALUE_HERE",
        "MCP_DEFAULT_LOG_LINES": "YOUR_VALUE_HERE",
        "MCP_DEFAULT_METRIC_POINTS": "YOUR_VALUE_HERE",
        "MCP_DEFAULT_TIME_RANGE": "YOUR_VALUE_HERE",
        "MCP_TRANSPORT": "YOUR_VALUE_HERE"
      }
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Values are written into the snippet above so you can paste it as is. They never leave your browser.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

npx -y datadog-mcp

No response to initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 1mo ago.

Overview

This MCP server provides AI assistants comprehensive access to Datadog observability data and management APIs. It supports querying logs with grep-like syntax, filtering APM traces by duration, status, or errors, and cross-correlating logs, traces, and metrics. The server supports both stdio and HTTP transports, enabling local or remote deployment scenarios. Use it to integrate Datadog monitoring, alerting, and observability data into AI workflows or tools.

Use cases

  • Search and filter Datadog logs with complex queries
  • Query and analyze APM traces by status, duration, and errors
  • List and manage monitors, dashboards, and alerts
  • Retrieve and correlate metrics, events, and incidents
  • Inspect log processing pipelines, indexes, and archives

Key features

  • Grep-like log search with filters
  • APM trace filtering with duration/status/error queries
  • Smart sampling modes for token efficiency
  • Cross-correlation of logs, traces, and metrics
  • Supports stdio and HTTP transport modes
  • Extensive coverage of Datadog observability tools

Tools22

What Datadog MCP Server lets your agent do. Expand a tool for its parameters.

Self-reported~305 tokens of context

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 1d ago

Recent health check succeeded.

17/18 checks healthy over the last 79d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 10d ago via OSV.dev · datadog-mcp (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars6Stargazers on the source repository.
npm downloads4.6kPackage downloads in the last 30 days.
Last commit2d agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Tools exposed22Callable tools this server registers over MCP.
Directory activity4 viewsConfig copies, upvotes, and views on AllMCPs.

From the project README

Datadog MCP Server

Quality gate CI/Release npm License Coverage

DISCLAIMER: This is a community-maintained project and is not officially affiliated with, endorsed by, or supported by Datadog, Inc. This MCP server utilizes the Datadog API but is developed independently.

MCP server providing AI assistants with full Datadog observability access. Features grep-like log search, APM trace filtering with duration/status/error queries, smart sampling modes for token efficiency, and cross-correlation between logs, traces, and metrics. Supports both stdio (local) and http (remote/Kubernetes) transports.

Quick Start

Minimal Claude Desktop / VS Code / Cursor config — just the two required keys:

config.json
{
  "mcpServers": {
    "datadog": {
      "command": "npx",
      "args": ["-y", "datadog-mcp"],
      "env": {
        "DD_API_KEY": "your-api-key",
        "DD_APP_KEY": "your-app-key"
      }
    }
  }
}

With optional tuning (EU site, custom default limits, longer log windows):

config.json
{
  "mcpServers": {
    "datadog": {
      "command": "npx",
      "args": ["-y", "datadog-mcp"],
      "env": {
        "DD_API_KEY": "your-api-key",
        "DD_APP_KEY": "your-app-key",
        "DD_SITE": "datadoghq.eu",
        "MCP_DEFAULT_LIMIT": "50",
        "MCP_DEFAULT_LOG_LINES": "200",
        "MCP_DEFAULT_METRIC_POINTS": "1000",
        "MCP_DEFAULT_TIME_RANGE": "24"
      }
    }
  }
}

To run as an HTTP server (e.g. inside a container or Kubernetes pod), add transport variables to the same env block:

json
"env": {
  "DD_API_KEY": "your-api-key",
  "DD_APP_KEY": "your-app-key",
  "MCP_TRANSPORT": "http",
  "MCP_PORT": "3000",
  "MCP_HOST": "0.0.0.0"
}

Configuration

Required environment variables

bash
DD_API_KEY=your-api-key
DD_APP_KEY=your-app-key

Optional environment variables

bash
DD_SITE=datadoghq.com  # Default. Use datadoghq.eu for EU, etc.

# Limit defaults (fallbacks when the AI doesn't specify)
MCP_DEFAULT_LIMIT=50              # General tools default limit
MCP_DEFAULT_LOG_LINES=200         # Logs tool default limit
MCP_DEFAULT_METRIC_POINTS=1000    # Metrics timeseries data points
MCP_DEFAULT_TIME_RANGE=24         # Default time range in hours

# Transport (alternative to CLI flags — useful in Kubernetes)
MCP_TRANSPORT=stdio               # stdio | http
MCP_PORT=3000                     # HTTP port
MCP_HOST=0.0.0.0                  # HTTP host

Optional flags

bash
--site=datadoghq.com     # Datadog site (overrides DD_SITE)
--transport=stdio|http   # Transport mode (default: stdio)
--port=3000              # HTTP port when using http transport
--host=0.0.0.0           # HTTP host when using http transport
--read-only              # Block all write operations
--disable-tools=synthetics,rum,security    # Comma-separated list of tools to disable

Transports

TransportWhen to useEndpoints
stdio (default)Local MCP clients — Claude Desktop, Cursor, VS Coden/a (process stdin/stdout)
httpRemote / container / KubernetesPOST /mcp · GET /mcp (SSE) · DELETE /mcp · GET /health

Select with --transport=http or MCP_TRANSPORT=http.

Deployment

Docker

config.json
{
  "mcpServers": {
    "datadog": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "DD_API_KEY",
        "-e", "DD_APP_KEY",
        "-e", "DD_SITE",
        "ghcr.io/tantiope/datadog-mcp"
      ],
      "env": {
        "DD_API_KEY": "your-api-key",
        "DD_APP_KEY": "your-app-key",
        "DD_SITE": "datadoghq.com"
      }
    }
  }
}

Kubernetes

Use environment variables — not container args — for transport configuration:

yaml
env:
  - name: DD_API_KEY
    value: "your-api-key"
  - name: DD_APP_KEY
    value: "your-app-key"
  - name: MCP_TRANSPORT
    value: "http"
  - name: MCP_PORT
    value: "3000"
  - name: MCP_HOST
    value: "0.0.0.0"

Note: Kubernetes args: replaces the entire Dockerfile CMD, causing Node.js to receive the flags instead of your application. Environment variables avoid this issue.

Tools

ToolActionCategoryDescriptionRequired Scopes
monitorslistAlertingList monitors with optional filtersmonitors_read
monitorsgetAlertingGet monitor by IDmonitors_read
monitorssearchAlertingSearch monitors by querymonitors_read
monitorscreateAlertingCreate a new monitor; config is validated against a typed schema covering documented options (notifyNoData, renotifyInterval, thresholds, …) — unknown keys surface in warnings. Pass dry_run: true to validate without creating (uses /api/v1/monitor/validate, allowed in read-only mode).monitors_write
monitorsupdateAlertingUpdate an existing monitor; same validated schema as create; partial configs accepted; validation errors short-circuit before any HTTP call as EINVALID_MONITOR_CONFIG:monitors_write
monitorspreviewAlertingRender a monitor template (inline message or by monitor_id/id) with optional context of variables and conditionals. Returns {rendered, variablesUsed, variablesMissing, conditionalsResolved, tagConditionalsResolved}. Supports Datadog Mustache subset: variable substitution + six documented conditionals (is_alert, is_warning, is_no_data, is_recovery, is_alert_to_warning, is_warning_to_alert) + tag conditionals {{#is_match "tag" "val"}}/{{#is_exact_match "tag" "val"}} (and ^ negations); {{#each}}/partials throw EUNSUPPORTED_TEMPLATE_SYNTAX. Read-only.monitors_read
monitorstest_notificationAlertingKnown limitation: returns ENOT_SUPPORTED — Datadog has no public REST endpoint for triggering a test notification. Documentation pointer in response.n/a
monitorsdeleteAlertingDelete a monitormonitors_write
monitorsmuteAlertingMute a monitormonitors_write
monitorsunmuteAlertingUnmute a monitormonitors_write
monitorstopAlertingTop N monitors by alert frequency with real monitor names and context breakdown. WARNING: total_count includes renotifies/re-evaluations (Datadog emits a renotify event every renotify_interval minutes while Alert). For real fires use action=history.monitors_read
monitorshistoryAlertingCount and list real state transitions for one monitor over a time window. Filters by transitionType (default ["alert","alert recovery"] — fires+recoveries, excludes renotifies) and optional group. Returns {transitions: [...], count, meta} where count is the number of real transitions (e.g. for one always-Alert burn-rate monitor over 7d: 98 raw events vs 38 real transitions).monitors_read, events_read
dashboardslistVisualizationList all dashboardsdashboards_read
dashboardsgetVisualizationGet dashboard by IDdashboards_read
dashboardscreateVisualizationCreate a new dashboarddashboards_write
dashboardsupdateVisualizationUpdate a dashboarddashboards_write
dashboardsdeleteVisualizationDelete a dashboarddashboards_write
logssearchLogsSearch logs with query syntax and filterslogs_read_data, logs_read_index_data
logsaggregateLogsAggregate log data with groupBylogs_read_data
logs_pipelineslist, getLogs ConfigInspect log processing pipelines and their processorslogs_read_config
logs_pipelinescreate, update, delete, reorderLogs ConfigAuthor pipelines and processor chainslogs_write_config
logs_pipelinesget_orderLogs ConfigRead pipeline evaluation orderlogs_read_config
logs_indexeslist, getLogs ConfigInspect indexes (filter, retention, Flex tier, exclusion filters); create/delete are UI-only per Datadog and not exposedlogs_read_config
logs_indexesupdate, reorderLogs ConfigUpdate index filter/retention/quota and reorder evaluationlogs_write_config
logs_indexesget_orderLogs ConfigRead index evaluation orderlogs_read_config
logs_archiveslist, getLogs ConfigInspect log archives (S3 / GCS / Azure destinations); per-provider credential fields are forwarded unchangedlogs_read_archives
logs_archivescreate, update, delete, reorderLogs ConfigManage archive destinations; destination.type validated against `s3gcs
logs_archivesget_orderLogs ConfigRead archive evaluation orderlogs_read_archives
metricsqueryMetricsQuery timeseries data. Response meta includes rollupRequested (parsed from rollup(method, seconds), with methodInferred flag), rollupEffective (interval derived from returned pointlist intervals + deduped intervalsObserved for multi-series), and rollupOverridden: boolean so callers can detect when Datadog silently downsampled.metrics_read, timeseries_query

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Datadog MCP Server

It requires Datadog API and application keys set via DD_API_KEY and DD_APP_KEY environment variables.

You can run it locally using stdio transport or remotely as an HTTP server with configurable host and port.

Yes, it supports creating and updating monitors, but a read-only mode can disable all write operations.

Set the DD_SITE environment variable (e.g., datadoghq.com or datadoghq.eu) or use the --site CLI flag.

Most observability tools are supported, including monitors, dashboards, logs, metrics, traces, events, incidents, SLOs, synthetics, and more; some write operations like log index creation are UI-only.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewDatadog MCP Server AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/tantiope-datadog-mcp-server?style=directory)](https://allmcps.com/mcp/tantiope-datadog-mcp-server)
HTML Embed
<a href="https://allmcps.com/mcp/tantiope-datadog-mcp-server"><img src="https://allmcps.com/api/badge/tantiope-datadog-mcp-server?style=directory" alt="Datadog MCP Server on AllMCPs" /></a>