Route Claude, Cursor, and Codex to Datadog through wmcp.sh. The query tool translates plain English ("p95 latency for api service last hour") to DQL before execution. Vault-stored API + APP keys, edge routing, audit log. wmcp.sh is not affiliated with Datadog Inc.
Connect at https://wmcp.sh/mcp/datadog · supports US1 / US3 / US5 / EU1 / AP1 sites · default read-only
Datadog Query Language has a specific grammar — aggregations, tags, rollups, arithmetic, function composition. Agents that haven't seen thousands of DQL examples get it wrong, retry, and waste tokens. The few existing Datadog MCP servers expose the raw query endpoint and leave the agent to write DQL itself.
The other pain point is key management. Datadog requires both an API key (for ingestion + read) and an APP key (per-user, finer-grained scopes). Most self-hosted servers ask you to drop both in env vars. Rotating means redeploying.
wmcp.sh fixes both: a query_metrics tool that accepts natural language and outputs the rendered DQL alongside the time series (so the agent can iterate), plus an encrypted per-user vault for API + APP keys with one-click rotation, plus a Datadog-site selector (US1 / US3 / US5 / EU1 / AP1) so multi-region orgs don't need separate connections.
Nine read-focused tools across metrics, monitors, dashboards, and logs.
datadog.query_metricsNatural language → DQL → time series. Returns both.datadog.query_dqlRun a raw DQL query if you already know it.datadog.list_monitorsMonitors with state (OK / Alert / Warn / No Data).datadog.get_monitorFull monitor config including thresholds + tags.datadog.list_dashboardsDashboards with title + author + last-modified.datadog.list_alertsCurrently-triggered alerts org-wide.datadog.search_logsLog search with query + time window + facets.datadog.list_servicesAPM services visible to the APP key.datadog.list_slosSLOs with status + burn rate.# pip install anthropic mcp
import os, asyncio
from anthropic import Anthropic
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
WMCP = "https://wmcp.sh/mcp/datadog"
TOKEN = os.environ["WMCP_TOKEN"]
async def ask():
async with streamablehttp_client(WMCP, headers={"Authorization": f"Bearer {TOKEN}"}) as (r, w, _):
async with ClientSession(r, w) as s:
await s.initialize()
tools = (await s.list_tools()).tools
anthropic = Anthropic()
msg = anthropic.messages.create(
model="claude-opus-4-5",
max_tokens=2048,
tools=[{"name": t.name, "description": t.description, "input_schema": t.inputSchema} for t in tools],
messages=[{"role": "user", "content": "Show me p95 request latency for the checkout service in production over the last 6 hours."}],
)
return msg
asyncio.run(ask())
| Capability | Self-hosted / community server | wmcp.sh-routed |
|---|---|---|
| NL → DQL translation | Agent writes DQL itself | Built-in translator, returns both DQL + data |
| Multi-site (US1/EU1/etc.) | One server per site | Site selector per connection |
| API + APP key storage | Plaintext env vars | Encrypted vault, rotatable |
| Monitor + alert visibility | Subset / per-server | Org-wide via APP key scopes |
| Log search | Sometimes omitted | Built-in with facets |
| Default mode | Read-write | Read-only; writes opt-in |
| Audit log | None | Per-call: who, when, tool, args, latency |
Production Datadog MCP: scoped APP key with metric/log read perms only, NL-DQL tuning for your service taxonomy, audit retention, SSO, on-call escalation suppression flags. Starter $499 one-time, Managed Retainer $999/mo, Enterprise $4,999+/mo.