Skip to main content
Glama
techskies11

datadog-mcp

by techskies11

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DD_SITENoDatadog site (e.g., datadoghq.com, us3.datadoghq.com, etc.)datadoghq.com
DD_API_KEYYesYour Datadog API key
DD_APP_KEYYesYour Datadog Application key

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_logsA

Search and VIEW log entries. Returns paginated results.

IMPORTANT: Use this ONLY when you need to VIEW log content for debugging. For COUNTING logs or unique values, use count_logs or count_unique_values instead - they are much faster and lighter since they never fetch raw log content.

Use this when:

  • Need to view actual log messages and details

  • Debugging specific issues

  • Investigating error details

DO NOT use for:

  • Counting logs (use count_logs)

  • Counting unique sessions/users (use count_unique_values)

  • Statistical analysis (use aggregate_logs_by_field)

get_log_detailsA

Get complete details of a specific log entry.

Use this when: need full information about a particular log (after searching).

count_logsA

Count logs matching a query WITHOUT fetching all data (fast & lightweight).

PREFERRED for counting events - much faster than search_logs, which should never be used just to count results.

Use this when:

  • "How many errors happened?"

  • "Count logs for a service"

  • Need a number, not log content

count_unique_valuesA

Count UNIQUE values of a field (distinct count / cardinality).

PERFECT for counting unique sessions, users, IPs, etc. Much more efficient than fetching all logs with search_logs and counting distinct values client-side.

Use this when:

  • "How many unique users/sessions?"

  • "Count distinct values"

  • "How many different X?"

aggregate_logs_by_fieldA

Aggregate and group logs by a field with statistics (fast, no raw data transfer).

PERFECT for analytics, charts, and dashboards. Set interval to get a timeseries per group instead of a single scalar per group - this covers timeseries use cases without needing a separate tool.

Use this when:

  • "Group errors by service"

  • "Top 10 services by request count"

  • "Average duration per endpoint, per hour" (set interval="1h")

query_metricsA

Query and visualize time series metrics.

Use this when: need to check system performance, resource usage, or custom metrics.

Common queries:

  • CPU: "avg:system.cpu.user{*}"

  • Memory: "avg:system.mem.used{*}"

  • By host: "avg:system.load.1{host:web-01}"

  • By tag: "sum:requests.count{env:prod}"

list_available_metricsA

List all metrics available in Datadog.

Use this when: don't know the exact metric name, or want to discover what's available. For metric metadata (description, unit, type) and tags on a specific metric, use describe_metric instead.

send_custom_metricA

Send custom metric data points to Datadog.

Use this when: need to track custom application metrics or business KPIs.

Metric types:

  • gauge: Point-in-time value (temperature, queue size)

  • count: Count of events in interval

  • rate: Events per second

list_active_metricsA

List metrics that have reported data since a given time.

Use this when: you want to know what's actually emitting data recently, as opposed to list_available_metrics which lists every metric name Datadog knows about (including ones that stopped reporting long ago).

describe_metricA

Get metadata (description, unit, type) and known tags for a metric.

Use this when: you need to understand what a metric means or what tags you can group/filter by before writing a query_metrics or monitor query. Consolidates metric metadata and tag discovery into a single call.

search_apm_tracesA

Search distributed traces and spans for performance analysis (paginated).

Use this when: debugging slow requests, finding errors in services, or analyzing latency. For statistics (latency percentiles, error rates) without fetching raw spans, use aggregate_spans instead - it is much lighter for dashboards/analytics.

Common queries:

  • Find errors: "service:api @error.message:*"

  • By status: "service:checkout @http.status_code:500"

  • Custom tags: "@airline_name:aeromexico @session_id:*"

get_full_traceA

Get complete trace with all spans and timing information.

Use this when: need to see full request flow across services (after finding a trace ID).

list_apm_servicesA

List services sending APM data in the last hour.

Use this when: want to see what services are instrumented or find service names.

aggregate_spansA

Aggregate spans by a field for latency/error statistics (no raw span data transfer).

PERFECT for "what's slow" or "what's erroring" questions without paying the cost of fetching and reading raw spans with search_apm_traces.

Use this when:

  • "p95 latency by service"

  • "Error count by endpoint"

  • "Average duration per operation"

list_all_dashboardsA

Browse all Datadog dashboards.

Use this when: want to see what dashboards exist or find a specific dashboard.

get_dashboard_detailsA

Get complete dashboard configuration and widgets.

Use this when: need to see what's in a dashboard or copy its configuration. Large dashboards may have their widget list truncated (see the truncated/ warning/total_available fields) to stay within the response size budget.

create_new_dashboardA

Create a new dashboard with custom widgets and layout.

Use this when: user wants to visualize metrics, create a monitoring view, or track KPIs. See the datadog://widget-templates resource for ready-to-use widget definitions for the most common widget types (timeseries, query_value, toplist).

Layout types:

  • "ordered": Timeline view (widgets stacked vertically)

  • "free": Free-form placement (drag anywhere)

update_existing_dashboardA

Modify an existing dashboard. Overwrites the given fields; anything omitted is unchanged.

Use this when: need to add widgets, change layout, or update dashboard config. There is no undo tool for dashboard updates - the previous widget/config state is not recoverable through this server once overwritten.

list_all_monitorsA

Browse all monitors and their current alert states.

Use this when: want to see what's being monitored or check alert status. For a faceted/full-text search instead of exact filters, use search_monitors.

get_monitor_detailsA

Get complete monitor configuration and current status.

Use this when: need to see monitor details, thresholds, or notification settings.

create_alert_monitorA

Create a new monitor to alert on metrics, logs, or APM data.

Use this when: user wants to get notified about issues, set up alerting, or monitor SLAs. Consider validate_monitor first to check the query syntax before creating.

Query examples:

  • Metric: "avg(last_5m):avg:system.cpu.user{*} > 80"

  • Log: 'logs("status:error").index("*").rollup("count").last("5m") > 100'

  • APM: "avg(last_10m):trace.web.request{service:api}.errors.rate > 5"

update_alert_monitorA

Modify an existing monitor's configuration. Overwrites given fields; rest is unchanged.

Use this when: need to adjust thresholds, change notifications, or update alert logic. There is no undo tool - the previous configuration is not recoverable once overwritten.

silence_monitorA

Temporarily mute/silence monitor notifications.

Use this when: performing maintenance, testing, or a known issue doesn't need alerts right now, for a single monitor. For muting many monitors on a schedule by scope (e.g. "all monitors in this env, this weekend"), use schedule_downtime instead - it is Datadog's purpose-built tool for scheduled, scoped silencing.

unsilence_monitorA

Resume notifications from a muted monitor.

Use this when: maintenance is complete or ready to receive alerts again.

search_monitorsA

Full-text/faceted search across monitors (e.g. by tag, status, or text in the query/name).

Use this when: list_all_monitors's exact-match filters aren't enough - e.g. searching monitor names/queries by substring across facets at once.

validate_monitorA

Validate a monitor query's syntax without creating anything.

Use this when: want to check a monitor definition is well-formed before calling create_alert_monitor, especially for hand-built queries. This never creates, modifies, or persists a monitor - it is a pure syntax/semantics check.

Note: validating a "log alert" monitor may additionally require the app key to have log data read access without further scoping; if that's missing you will see a permission error here specifically for log-type queries even though other monitor types validate fine.

list_downtimesA

Browse scheduled/active downtimes (scoped monitor mutes).

Use this when: want to see what's currently muted org-wide, or audit upcoming maintenance windows.

get_downtimeA

Get complete details of a specific downtime.

Use this when: need to see a downtime's exact scope, schedule, or status.

schedule_downtimeA

Schedule a downtime to mute a scope of monitors (or one monitor) over a time window.

Use this when: silencing many monitors at once by scope/tag (e.g. "mute all alerts for env:staging this weekend"), or muting on a schedule with a known end time. For muting exactly one already-known monitor with no scheduling needs, silence_monitor is simpler. At most one of monitor_id/monitor_tags should be set; if neither is set, the downtime applies to all monitors matching scope.

update_downtimeA

Modify an existing downtime's scope, schedule, or message.

Use this when: need to extend/shorten a downtime's window, change its scope, or end it early (set end to "now"). There is no undo tool - the previous downtime configuration is not recoverable once overwritten.

Prompts

Interactive templates invoked by user choice

NameDescription
investigate_errorsTemplate for investigating error logs and traces in production. Use this when: user asks about errors, issues, or problems in production.
performance_analysisTemplate for analyzing system performance and latency issues. Use this when: user asks about performance, slowness, or latency.
triage_alerting_monitorsTemplate for triaging monitors that are currently in an alert state. Use this when: user asks "what's alerting?", "what's broken right now?", or wants a prioritized look at active incidents.
create_monitoringTemplate for guiding the user through setting up new monitors and dashboards. Use this when: user wants to create monitors, alerts, or dashboards.

Resources

Contextual data attached and managed by the client

NameDescription
widget_templatesReady-to-use widget definitions for `create_new_dashboard`/`update_existing_dashboard`. Covers the widget types most commonly requested (timeseries, query_value, toplist, heatmap). `timeseries`/`query_value`/`toplist` widgets are pre-flight validated server-side (missing `requests` or a `type` typo is rejected before the API call); other widget types are passed straight through to Datadog. See Datadog's dashboard widgets API documentation for the full list of ~40 widget types and every optional field.
get_datadog_statusCurrent Datadog account status: monitor alert counts and recent monitors. Use this when you need a quick health snapshot before deciding what to investigate further. This makes exactly one Datadog API call (list_monitors, capped at 10 results) to avoid burning rate limit budget on every read of this resource.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/techskies11/datadog-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server