Dynatrace MCP server: remote setup, tools and limits
Dynatrace hosts its MCP server inside your SaaS environment. Its 20 documented tools read or analyze data, and a DQL query returns at most 1,000 records.
Checked 7 October 2026 · from Dynatrace's MCP documentation and Hub listing, the retired repository, and that server's own tools/list response
One of 91 guides to monitoring and developer tools. Each covers what an AI coding agent can get out of the tool through MCP, the protocol that lets the agent query the tool directly.
Summary
Dynatrace runs an official MCP server inside each Dynatrace SaaS environment. The Remote MCP Server is generally available and hosted by Dynatrace. A client connects by URL with a bearer token.
Its reference documents 20 tools as of 7 October 2026. They write and explain DQL, run queries, read problems and security findings, and run Davis AI analyzers. Every one of them reads or analyzes data.
The open-source server it replaced is archived. Version 2.1.2, released 20 July 2026, was its final release. Its setup is documented below for teams still running it.
What is the Dynatrace MCP server?
It is Dynatrace's server for the Model Context Protocol. The agent gains tools for querying Grail, reading problems and vulnerabilities, and running Davis AI analyzers. Davis AI is Dynatrace's own causal and predictive AI.
Grail is Dynatrace's data store and DQL is the query language over it. Grail Query Agent writes a DQL query from English, and DQL Explanation Agent explains one. Data Analysis Agent runs the query.
Dynatrace offers three routes. The Remote MCP Server is the MCP route. `dtctl` is a command-line tool that Dynatrace pairs with it for management tasks. The open-source server is archived and receives no further updates.
Dynatrace has two MCP servers, and one is current:
| Server | Tools | State |
|---|---|---|
| Remote MCP Server · hosted in your Dynatrace environment | 20 documented | Current. Generally available and supported by Dynatrace |
dynatrace-oss/dynatrace-mcp · @dynatrace-oss/dynatrace-mcp-server on npm | 18, captured 19 August 2026 | Archived. Final release v2.1.2 on 20 July 2026 |
dtctl is the third first-party route. It is a command-line tool, so it appears under the alternatives below.
Dynatrace covers production observability broadly and reaches part of the way into release through deployment events. It reaches nothing in code review, agent observability or cost.
| Part of the work | What Dynatrace has here | Can an agent reach it |
|---|---|---|
| Code, tests & review | None | No code-review product |
| CI & release | Deployment events in Grail | Partial. An agent can query ingested deployment events with DQL. The remote tools only read, so they cannot send events |
| Production observability | Grail: logs, metrics, spans, events, entities | Yes. Core strength, queried through DQL, with Davis AI analysis on top |
| Agent observability & evals | None in this connector | Traces, evaluations and prompt versioning for your own agents sit outside these 20 tools |
| AI cost management | None | Token and model spend sit outside these tools |
In practice, Dynatrace answers questions about the running system in depth, and nothing about the code that produced it or the agents you operate. An agent connected here can find a problem, query the logs around it and run a Davis analyzer on the metric. It cannot see the pull request that caused it, so this connector pairs with a source-control one.
What can an AI agent do with Dynatrace?
| Task | Tools | Works | Watch out for |
|---|---|---|---|
| Find what is broken right now | Root Cause Agent Root Cause Details Agent | Yes | Problems are Dynatrace's own detections. The list can be filtered to active or closed problems |
| Query logs, metrics or spans | Data Analysis Agent | Yes | Returns at most 1,000 records. See the limits below |
| Write DQL from an English question | Grail Query Agent DQL Explanation Agent | Yes | Both are Early Access. Generation returns a query and leaves running it to Data Analysis Agent |
| Investigate a Kubernetes issue | Kubernetes Agent Smartscape Agent | Yes | Smartscape Agent turns an entity name into its ID and back, which other tools need |
| Check exposure to a vulnerability | Runtime Vulnerability Agent Security Posture Agent | Yes | Reads Dynatrace's own findings from its latest report or scan run |
| Forecast a metric or find an anomaly | Forecasting Agent Changepoint Agent Seasonal Baseline Agent | Yes | Needs davis:analyzers:read and davis:analyzers:execute on both the user and the token |
| Notify a team about an incident | No | Every documented tool reads or analyzes. The retired server could send email and Slack messages |
Tool names follow Dynatrace's tool reference, read 7 October 2026. The last row is the main change from the retired open-source server, which could also send email and Slack messages.
20 tools documented on the Remote MCP Server, all of which read or analyze data
- DQL3
Grail Query AgentDQL Explanation AgentData Analysis Agent- Problems3
Root Cause AgentRoot Cause Details AgentTroubleshooting Agent- Entities and Kubernetes2
Smartscape AgentKubernetes Agent- Davis AI analyzers6
Forecasting AgentChangepoint AgentStatic Threshold Analysis AgentSeasonal Baseline AgentAuto-adaptive Threshold Analysis AgentLog Pattern Agent- Security4
Security Posture AgentRuntime Vulnerability AgentSecurity Event Details AgentSecurity Summary Agent- Documents and help2
Document AgentHelp Agent
Names and states from Dynatrace's tool reference, read 7 October 2026. Grail Query Agent, DQL Explanation Agent and Help Agent are Early Access, and Troubleshooting Agent is Preview. The retired open-source server registered 18 tools, and four of them acted: send_email, send_slack_message, send_event and reset_grail_budget.
What the tool definitions cost in context
A client that loads every tool definition at the start of a session spends this much context before the first question. Claude Code defers definitions by default through tool search, and loads a tool's definition when the agent needs it. The method below gives the version and date measured.
A context window is the amount of text a model can hold at once. A client that loads every tool definition upfront sends each tool's name, description and input schema to the model when the session starts. That list is charged whether or not a single tool is called.
The figures below were measured on the retired open-source server on 19 August 2026. Its 18 tools cost about 3,909 tokens. The Remote MCP Server answers tools/list only inside an authenticated environment, so its 20 tools are unmeasured.
| Tool set | Tools | Tokens (GPT-5.6, GPT-5.5) | Tokens (GPT-4, GPT-3.5) | Tokens (Claude Haiku 4.5 to Opus 5) | Share of a 200,000-token window |
|---|---|---|---|---|---|
| Retired open-source server, every tool, 19 August 2026 | 18 | 3,909 to 5,103 | 3,867 to 5,106 | 5,521 to 7,328 | 1.9% to 3.7% |
Encodings: GPT-5.6, GPT-5.5 o200k_base; GPT-4, GPT-3.5 cl100k_base; Claude Haiku 4.5 to Opus 5 count_tokens. Counted 19 August 2026 from tools/list on the retired @dynatrace-oss/dynatrace-mcp-server package, at its final version 2.1.2. It was run locally with a placeholder environment and token.
Registration is static, so no Dynatrace tenant was involved. Figures cover name, description and input schema. The two models in column one share the o200k_base encoding, so they get one count. The spread is formatting, about 31%. Reasoning tokens are output, spent per request. This count is billed as input whenever the client loads it.
The Claude figures are measured rather than encoded. Anthropic publishes no local tokenizer. The definitions were sent to the API's count_tokens endpoint, and a no-tools baseline was subtracted. The range covers two tokenizer generations rather than two serializations. Haiku 4.5 and Opus 4.6 sit at the low end. Opus 5 and Sonnet 5 sit at the high end. The gap between them is about a third.
Dynatrace MCP server limits: where answers come back incomplete
The first two limits below return answers that look complete. The third applies to setups still running the retired open-source server.
The agent says: “These are all the matching logs.” The tool stops at 1,000 records.
Data Analysis Agent runs any valid DQL query and limits Grail responses to 1,000 records, per Dynatrace's tool reference. A broad query that matches more returns 1,000 records, and the answer reads as complete.
Guard: Have the agent aggregate in DQL, with summarize or a tighter time range, and state when a result holds exactly 1,000 records.
The agent says: “There are no logs for that service.” The token cannot read logs.
Each tool runs within both the token's scopes and the user's permissions. Data Analysis Agent needs storage:buckets:read, plus a scope for each data type, such as storage:logs:read.
Dynatrace notes that both the user and the token need storage:logs:read before any logs appear. A missing scope returns an empty result that reads like an answer.
Guard: Grant the storage scope for every data type the agent should read, on both the user and the token.
The agent says: “Dynatrace is connected.” It is connected to the retired server.
The open-source server still connects. Version 2.1.2 was its final release, published 20 July 2026, and the repository is now archived. Deprecation does not break a connector, so the agent's behavior gives no sign of it.
That server also carries four tools that act: send_email, send_slack_message, send_event and reset_grail_budget. The Remote MCP Server documents none of them.
Guard: Move to the Remote MCP Server. Until then, leave the four acting tools off the client's allowlist.
How to configure Dynatrace MCP for agents
- 1
Use the Remote MCP Server
Dynatrace hosts it in your SaaS environment and supports it officially. The open-source server is archived, with v2.1.2 as its final release.
- 2
Choose how you authenticate
Dynatrace recommends a platform token. A client stops working when that token expires. A confidential OAuth client with its secret lets the client refresh tokens automatically.
- 3
Grant a scope for each data type
A tool runs within both the token's scopes and the user's permissions. Add
storage:logs:read,storage:metrics:readand the others for each data type the agent should query. - 4
Plan for the 1,000-record cap
Data Analysis Agent returns at most 1,000 records per query. Ask for aggregates in DQL when a question spans more records than that.
- 5
Add
dtctlfor management tasksDynatrace pairs its command-line tool with the remote server. It handles workflows, dashboards and other changes the MCP tools leave out.
Paste this into your agent’s instructions
Two Dynatrace limits look like a complete answer. One is a query cut off at 1,000 records. The other is an empty result from a token that lacks a scope. The block makes the agent separate them.
When you answer using Dynatrace MCP tools, state: - The DQL you ran and the time range it covered. - Whether the result held 1,000 records. That is the tool's cap, so the full result may be larger. - Which data types you queried. A token that lacks a storage scope returns nothing for that type. Report an empty result as "none returned under the constraints above". Write your answer in ASD-STE100 Simplified Technical English. Use short sentences with one idea in each.
Do you need the MCP server at all?
Partly. The Dynatrace platform APIs cover Grail queries and problem lists, and a coding agent can call them directly with a platform token.
dtctl is the other first-party route. It is a command-line tool for Dynatrace SaaS, built for people and agents, and ships its own agent skill. It also manages workflows and dashboards, which the MCP tools can only find.
The MCP server adds the DQL authoring tools and the Davis analyzers as ready-made tools, with Dynatrace's own descriptions. An agent can use them before it knows DQL.
Use the Remote MCP Server for questions about the running system. Add dtctl when the agent also has to change workflows or dashboards.
Dynatrace MCP server setup
The Remote MCP Server runs inside your Dynatrace SaaS environment, so there is nothing to install. The endpoint is https://<environment-id>.apps.dynatrace.com/platform-reserved/mcp-gateway/v0.1/servers/dynatrace-mcp/mcp.
Every request needs a bearer token from a platform token or a confidential OAuth client. Both the user and the token need mcp-gateway:servers:invoke and mcp-gateway:servers:read, plus the scopes each tool lists.
Claude Code
Dynatrace publishes a Claude Code plugin that bundles the remote server configuration and its agent skills. Set both variables before you start a session.
export DT_ENVIRONMENT=https://abc12345.apps.dynatrace.com export DT_PLATFORM_TOKEN=<your-platform-token> claude plugin install dynatrace@claude-plugins-official
Cursor
In ~/.cursor/mcp.json. Dynatrace also lists a plugin on the Cursor Marketplace that reads the same two variables.
{"mcpServers":{"dynatrace":{
"url":"https://abc12345.apps.dynatrace.com/platform-reserved/mcp-gateway/v0.1/servers/dynatrace-mcp/mcp",
"headers":{"Authorization":"Bearer <your-platform-token>"}}}}Codex CLI
Codex reads TOML, so the JSON blocks above will not transfer. bearer_token_env_var names the variable that holds the token, which keeps it out of the file.
[mcp_servers.dynatrace] url = "https://abc12345.apps.dynatrace.com/platform-reserved/mcp-gateway/v0.1/servers/dynatrace-mcp/mcp" bearer_token_env_var = "DT_PLATFORM_TOKEN"
Every other client
Each block below is the configuration for one client, with the file path and the key that client expects.
Claude Desktop
macOS ~/Library/Application Support/Claude/claude_desktop_config.json. Windows %APPDATA%\Claude\claude_desktop_config.json. There is no CLI. Edit through Settings, Developer, Edit Config.
Quit and restart fully for changes to load. This route proxies through mcp-remote to send the bearer header. Logs at ~/Library/Logs/Claude/mcp.log.
{"mcpServers":{"dynatrace":{"command":"npx",
"args":["-y","mcp-remote",
"https://abc12345.apps.dynatrace.com/platform-reserved/mcp-gateway/v0.1/servers/dynatrace-mcp/mcp",
"--header","Authorization:${AUTH_HEADER}"],
"env":{"AUTH_HEADER":"Bearer <your-platform-token>"}}}}Gemini CLI
~/.gemini/settings.json globally, or .gemini/settings.json per project. Key mcpServers, using httpUrl. CLI: gemini mcp add.
{"mcpServers":{"dynatrace":{
"httpUrl":"https://abc12345.apps.dynatrace.com/platform-reserved/mcp-gateway/v0.1/servers/dynatrace-mcp/mcp",
"headers":{"Authorization":"Bearer <your-platform-token>"}}}}VS Code Copilot
.vscode/mcp.json per workspace, or your user profile. CLI: code --add-mcp. Dynatrace documents this exact shape. With an OAuth client, drop the headers and VS Code prompts for the client ID and secret.
{"servers":{"dynatrace-mcp":{
"url":"https://abc12345.apps.dynatrace.com/platform-reserved/mcp-gateway/v0.1/servers/dynatrace-mcp/mcp",
"headers":{"Authorization":"Bearer <your-platform-token>"}}}}`.vscode/mcp.json` uses the key `servers`. VS Code's portable files, .mcp.json at the project root and ~/.copilot/mcp-config.json, use mcpServers. VS Code recommends them for new servers.
Windsurf
~/.codeium/windsurf/mcp_config.json, which is the path Windsurf documents. Key mcpServers, the same JSON shape as Cursor, carrying the same bearer header.
Zed
~/.config/zed/settings.json, carrying the same bearer header as the blocks above.
The key is `context_servers`. Zed does not call them MCP servers in config, so searching its settings for mcp finds nothing.
Google Antigravity
~/.gemini/config/mcp_config.json globally, or .agents/mcp_config.json per project. Key mcpServers. There is no CLI. Use the /mcp overlay in the editor. Supports stdio, streamable HTTP, SSE and websocket.
{"mcpServers":{"dynatrace":{"type":"http",
"url":"https://abc12345.apps.dynatrace.com/platform-reserved/mcp-gateway/v0.1/servers/dynatrace-mcp/mcp",
"headers":{"Authorization":"Bearer <your-platform-token>"}}}}Amp (Sourcegraph)
~/.config/amp/settings.json or .amp/settings.json, carrying the same bearer header. The amp mcp CLI covers approve, doctor and oauth.
The key is `amp.mcpServers`, namespaced. A bare mcpServers block is ignored.
Cline
~/.cline/mcp.json per the docs. The source also reads ~/.cline/data/settings/cline_mcp_settings.json. Key mcpServers, standard JSON shape, carrying the same bearer header. Supports stdio, streamable HTTP and SSE.
Goose (Block)
~/.config/goose/config.yaml, carrying the same bearer header.
YAML, and servers are called `extensions`. Goose does not use the MCP vocabulary in config at all. Add one interactively with goose configure, or per session with goose session --with-extension.
Kiro (AWS)
.kiro/settings/mcp.json per workspace, or ~/.kiro/settings/mcp.json globally. Key mcpServers, standard JSON shape, carrying the same bearer header.
Warp
~/.warp/.mcp.json or .warp/.mcp.json. Key mcpServers, standard shape, carrying the same bearer header. Also addable through the /agent-add-mcp skill.
JetBrains Junie
.junie/mcp/mcp.json per project, or ~/.junie/mcp/mcp.json. Key mcpServers, carrying the same bearer header. Use /mcp in the CLI to manage.
Roo Code
.roo/mcp.json per project. The global file is mcp_settings.json, opened from the Roo Code MCP settings view with Edit Global MCP. Key mcpServers, carrying the same bearer header.
Continue
.continue/mcpServers/*.yaml, one file per server, carrying the same bearer header.
YAML, and `mcpServers` is a list. Every JSON client keys servers by name. Continue takes an array, so a converted config will not parse.
Trae
.trae/mcp.json per project, or paste into the UI under Raw Config (JSON). Key mcpServers, standard shape, carrying the same bearer header.
Devin
Devin has no config file to edit. Servers are added through a web form in the settings UI, and Devin's documentation states you do not need to write or paste JSON. Enter the endpoint URL and the same bearer header there.
Retired open-source server, archived
Archived. @dynatrace-oss/dynatrace-mcp-server had its final release, v2.1.2, on 20 July 2026. Its README states no further updates will be made, and npm marks the package as no longer supported. Dynatrace's migration guide maps its tools to the Remote MCP Server.
For a setup still running it: the package needs Node.js 24 or newer and DT_ENVIRONMENT. With only that variable set, it opens a browser for Dynatrace SSO. DT_PLATFORM_TOKEN skips the browser. From 1.0.0 it ignores .env files.
claude mcp add-json "dynatrace" '{"command":"npx",
"args":["-y","@dynatrace-oss/dynatrace-mcp-server"],
"env":{"DT_ENVIRONMENT":"https://abc12345.apps.dynatrace.com"}}'Four of its 18 tools act. send_email and send_slack_message reach people, send_event ingests events that can trigger alerting, and reset_grail_budget clears the query budget. Leave all four off the client's allowlist.
Retired open-source server, with a query budget
DT_GRAIL_QUERY_BUDGET_GB caps how many gigabytes the retired server's Grail queries may scan before it stops running them.
DT_ENVIRONMENT=https://abc12345.apps.dynatrace.com \ DT_PLATFORM_TOKEN=<your-token> \ DT_GRAIL_QUERY_BUDGET_GB=10 \ npx -y @dynatrace-oss/dynatrace-mcp-server
Read-only access, permissions and security
Every documented tool reads or analyzes
The Remote MCP Server documents query, problem, entity, security and analyzer tools. Its reference lists nothing that sends email, posts to Slack or ingests events.
The token carries your permissions
A tool runs within both the token's scopes and the user's permissions. Scope the token to the data types the agent needs.
Keep the token out of shared files
A platform token is a bearer credential. Load it from a variable, as the Dynatrace plugin does with
DT_PLATFORM_TOKEN.The retired server could act
Four of its 18 tools sent email, posted to Slack, ingested events or reset the query budget. A setup still running it needs those four off the allowlist.
Troubleshooting
- The client cannot connect to the endpoint
- Every request needs a bearer token. Both the user and the token need
mcp-gateway:servers:invokeandmcp-gateway:servers:read. - A query returns no logs
- The token or the user likely lacks
storage:logs:read. Dynatrace notes that both need it before any logs appear. Other data types need their ownstoragescopes. - The connection worked yesterday and fails today
- The bearer token has probably expired. VS Code and similar clients keep sending an expired token until you replace it. A confidential OAuth client with its secret refreshes automatically.
- A result holds exactly 1,000 records
- That is the cap. Data Analysis Agent limits Grail responses to 1,000 records. Aggregate in DQL or narrow the time range.
- An unexpected email or Slack message went out
- That came from the retired open-source server, where
send_emailandsend_slack_messageare on by default. Remove both from the allowlist, or move to the Remote MCP Server.
Dynatrace MCP server: Reference
| Item | Value |
|---|---|
| Status | Remote MCP Server generally available · open-source server archived, final release v2.1.2 on 20 July 2026 |
| Endpoint | https://<environment-id>.apps.dynatrace.com/platform-reserved/mcp-gateway/v0.1/servers/dynatrace-mcp/mcp |
| Transport | Streamable HTTP |
| Auth | Platform token, or a confidential OAuth client with its secret |
| Scopes | mcp-gateway:servers:invoke and mcp-gateway:servers:read, plus each tool's own scopes |
| Tools | 20 documented as of 7 October 2026, all read or analyze · 3 Early Access, 1 Preview |
| Result cap | 1,000 records per Data Analysis Agent query |
| Packaging | Claude Code plugin dynatrace@claude-plugins-official · Cursor Marketplace · MCP registry io.github.Dynatrace/dynatrace-for-ai |
| Retired server | @dynatrace-oss/dynatrace-mcp-server on npm, marked unsupported · 18 tools, 4 of which act |
What engineers report
Dynatrace hosts the Remote MCP Server, so its record is Dynatrace's own documentation and changelog. The public repository belongs to the retired server, with 137 stars as of 7 October 2026.
| What was checked | What it shows |
|---|---|
| Remote MCP Server tools documented | 20, as of 7 October 2026 |
| Retired repository stars | 137, archived |
| Retired server final release | v2.1.2, 20 July 2026 |
| Retired server license | MIT |
dtctl stars | 194, latest release v0.41.0 on 1 October 2026 |
“MCP Server starts, but copilot never uses the MCP server. Any prompts about the exposed tools bring nothing from the MCP server.”
Repository facts from the GitHub API, retrieved 7 October 2026. Remote tool names and states from Dynatrace's tool reference, read 7 October 2026. The retired server's tool counts come from its own tools/list response on 19 August 2026.
Should you connect an agent to Dynatrace?
Yes. Best for dynatrace SaaS teams connecting the Remote MCP Server with a scoped token, plus dtctl for workflow and dashboard changes.
- Strongest fit
- Dynatrace SaaS teams who want an agent querying Grail, reading problems and security findings, and running Davis analyzers.
- Main advantage
- Hosted and supported by Dynatrace, with DQL authoring tools, and every documented tool limited to reading or analysis.
- Main weakness
- Query results stop at 1,000 records, and the DQL authoring and help tools are still Early Access.
- Operational risk
- A token that lacks a data scope returns empty results that read like real answers. Bearer tokens in a client config also expire.
From Oodle
One platform for agent traces and infrastructure
Agent traces usually sit in a different product from the rest of your telemetry, so when a slow database makes an agent slow the symptom is in one tool and the cause is in another. Oodle keeps both in one query surface.
See agent observabilityFrequently asked questions
Does Dynatrace have an official MCP server?
Yes. The Dynatrace Remote MCP Server is hosted in your Dynatrace SaaS environment and generally available. A client connects by URL with a platform token or a confidential OAuth client.
Is the Dynatrace MCP server deprecated?
The open-source one is. Its README states that v2.1.2, released 20 July 2026, was the final release, and the repository is archived. The hosted Remote MCP Server replaces it.
How many tools does it have?
The Remote MCP Server documents 20 tools as of 7 October 2026, and all of them read or analyze data. The retired open-source server registered 18.
Can an agent send messages to my team?
Through the Remote MCP Server, the documented tools only read and analyze. The retired open-source server could send email and Slack messages with send_email and send_slack_message.
Why did a query return exactly 1,000 records?
Data Analysis Agent limits Grail responses to 1,000 records. Ask for an aggregate in DQL, or narrow the time range.
What is DQL and does the agent need to know it?
DQL is Dynatrace Query Language, used to query the Grail data store. Grail Query Agent writes a query from English and DQL Explanation Agent explains one, so the agent can start without knowing DQL.
What is dtctl?
A first-party command-line tool for Dynatrace SaaS, built for people and agents. Dynatrace pairs it with the Remote MCP Server for workflows, dashboards and other management tasks.