



MCP server for the Datadog API, enabling incident management and more.
Features
- Observability Tools: Provides a mechanism to leverage key Datadog monitoring features, such as incidents, monitors, logs, dashboards, and metrics, through the MCP server.
- Extensible Design: Designed to easily integrate with additional Datadog APIs, allowing for seamless future feature expansion.
-
list_incidents
-
Retrieve a list of incidents from Datadog.
- Inputs:
filter
(optional string): Filter parameters for incidents (e.g., status, priority).
pagination
(optional object): Pagination details like page size/offset.
-
Returns: Array of Datadog incidents and associated metadata.
-
get_incident
-
Retrieve detailed information about a specific Datadog incident.
- Inputs:
incident_id
(string): Incident ID to fetch details for.
-
Returns: Detailed incident information (title, status, timestamps, etc.).
-
get_monitors
-
Fetch the status of Datadog monitors.
- Inputs:
groupStates
(optional array): States to filter (e.g., alert, warn, no data, ok).
name
(optional string): Filter by name.
tags
(optional array): Filter by tags.
-
Returns: Monitors data and a summary of their statuses.
-
get_logs
-
Search and retrieve logs from Datadog.
- Inputs:
query
(string): Datadog logs query string.
from
(number): Start time in epoch seconds.
to
(number): End time in epoch seconds.
limit
(optional number): Maximum number of logs to return (defaults to 100).
-
Returns: Array of matching logs.
-
list_dashboards
-
Get a list of dashboards from Datadog.
- Inputs:
name
(optional string): Filter dashboards by name.
tags
(optional array): Filter dashboards by tags.
-
Returns: Array of dashboards with URL references.
-
get_dashboard
-
Retrieve a specific dashboard from Datadog.
- Inputs:
dashboard_id
(string): ID of the dashboard to fetch.
-
Returns: Dashboard details including title, widgets, etc.
-
get_metrics
-
Retrieve metrics data from Datadog.
- Inputs:
query
(string): Metrics query string.
from
(number): Start time in epoch seconds.
to
(number): End time in epoch seconds.
-
Returns: Metrics data for the queried timeframe.
-
list_traces
-
Retrieve a list of APM traces from Datadog.
- Inputs:
query
(string): Datadog APM trace query string.
from
(number): Start time in epoch seconds.
to
(number): End time in epoch seconds.
limit
(optional number): Maximum number of traces to return (defaults to 100).
sort
(optional string): Sort order for traces (defaults to '-timestamp').
service
(optional string): Filter by service name.
operation
(optional string): Filter by operation name.
-
Returns: Array of matching traces from Datadog APM.
-
list_hosts
-
Get list of hosts from Datadog.
- Inputs:
filter
(optional string): Filter string for search results.
sort_field
(optional string): Field to sort hosts by.
sort_dir
(optional string): Sort direction (asc/desc).
start
(optional number): Starting offset for pagination.
count
(optional number): Max number of hosts to return (max: 1000).
from
(optional number): Search hosts from this UNIX timestamp.
include_muted_hosts_data
(optional boolean): Include muted hosts status and expiry.
include_hosts_metadata
(optional boolean): Include host metadata (version, platform, etc).
-
Returns: Array of hosts with details including name, ID, aliases, apps, mute status, and more.
-
get_active_hosts_count
- Get the total number of active hosts in Datadog.
- Inputs:
from
(optional number): Number of seconds from which you want to get total number of active hosts (defaults to 2h).
- Returns: Count of total active and up hosts.
-
mute_host
- Mute a host in Datadog.
- Inputs:
hostname
(string): The name of the host to mute.
message
(optional string): Message to associate with the muting of this host.
end
(optional number): POSIX timestamp for when the mute should end.
override
(optional boolean): If true and the host is already muted, replaces existing end time.
- Returns: Success status and confirmation message.
-
unmute_host
- Unmute a host in Datadog.
- Inputs:
hostname
(string): The name of the host to unmute.
- Returns: Success status and confirmation message.
-
list_downtimes
- List scheduled downtimes from Datadog.
- Inputs:
currentOnly
(optional boolean): Return only currently active downtimes when true.
monitorId
(optional number): Filter by monitor ID.
- Returns: Array of scheduled downtimes with details including scope, monitor information, and schedule.
-
schedule_downtime
- Schedule a downtime in Datadog.
- Inputs:
scope
(string): Scope to apply downtime to (e.g. 'host:my-host').
start
(optional number): UNIX timestamp for the start of the downtime.
end
(optional number): UNIX timestamp for the end of the downtime.
message
(optional string): A message to include with the downtime.
timezone
(optional string): The timezone for the downtime (e.g. 'UTC', 'America/New_York').
monitorId
(optional number): The ID of the monitor to mute.
monitorTags
(optional array): A list of monitor tags for filtering.
recurrence
(optional object): Recurrence settings for the downtime.
type
(string): Recurrence type ('days', 'weeks', 'months', 'years').
period
(number): How often to repeat (must be >= 1).
weekDays
(optional array): Days of the week for weekly recurrence.
until
(optional number): UNIX timestamp for when the recurrence ends.
- Returns: Scheduled downtime details including ID and active status.
-
cancel_downtime
- Cancel a scheduled downtime in Datadog.
- Inputs:
downtimeId
(number): The ID of the downtime to cancel.
- Returns: Confirmation of downtime cancellation.
Setup
Datadog Credentials
You need valid Datadog API credentials to use this MCP server:
DATADOG_API_KEY
: Your Datadog API key
DATADOG_APP_KEY
: Your Datadog Application key
DATADOG_SITE
(optional): The Datadog site (e.g. datadoghq.eu
)
Export them in your environment before running the server:
export DATADOG_API_KEY="your_api_key"
export DATADOG_APP_KEY="your_app_key"
export DATADOG_SITE="your_datadog_site"
Installation
Installing via Smithery
To install Datadog MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @winor30/mcp-server-datadog --client claude
Manual Installation
pnpm install
pnpm build
pnpm watch # for development with auto-rebuild
Usage with Claude Desktop
To use this with Claude Desktop, add the following to your claude_desktop_config.json
:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
{
"mcpServers": {
"datadog": {
"command": "/path/to/mcp-server-datadog/build/index.js",
"env": {
"DATADOG_API_KEY": "<YOUR_API_KEY>",
"DATADOG_APP_KEY": "<YOUR_APP_KEY>",
"DATADOG_SITE": "<YOUR_SITE>" // Optional
}
}
}
}
Or specify via npx
:
{
"mcpServers": {
"mcp-server-datadog": {
"command": "npx",
"args": ["-y", "@winor30/mcp-server-datadog"],
"env": {
"DATADOG_API_KEY": "<YOUR_API_KEY>",
"DATADOG_APP_KEY": "<YOUR_APP_KEY>",
"DATADOG_SITE": "<YOUR_SITE>" // Optional
}
}
}
}
Debugging
Because MCP servers communicate over standard input/output, debugging can sometimes be tricky. We recommend using the MCP Inspector. You can run the inspector with:
npm run inspector
The inspector will provide a URL you can open in your browser to see logs and send requests manually.
Contributing
Contributions are welcome! Feel free to open an issue or a pull request if you have any suggestions, bug reports, or improvements to propose.
License
This project is licensed under the Apache License, Version 2.0.