Prerequisites
- A Dynatrace SaaS environment on the Dynatrace Platform (Grail), with the data you want agents to read. Dynatrace Managed and classic environments with no
apps.dynatrace.comaddress can’t connect. - A Dynatrace user (or service user) in that environment’s account who can read the data agents should query. Any account member can create a platform token, but the token only gets that user’s permissions.
- Your environment URL in the Platform format:
https://<environment-id>.apps.dynatrace.com.
Setup
1
Find your environment URL
Sign in to Dynatrace and copy the address from your browser up to
.apps.dynatrace.com, for example https://abc12345.apps.dynatrace.com.Use the apps.dynatrace.com address, not a classic live.dynatrace.com one. The MCP server only talks to Platform APIs.2
Create a platform token
Open My platform tokens in your Dynatrace account (myaccount.dynatrace.com/platformTokens) and select Platform token. Set:
- Token name:
cloudthinker - Expiration date: a lifetime that matches your rotation policy
- Environments: the environment you found in the previous step, unless you apply the token to the whole account
- Scopes:
app-engine:apps:runplus the read scopes for the data you want agents to query (see Required permissions)
3
Add the connection in CloudThinker
Open More → Workspace settings → Connections, stay on the Builtin Connections tab, and select Dynatrace. Fill in:
- DT_ENVIRONMENT: your environment URL
- DT_PLATFORM_TOKEN: the token you just created
Connection details
To reach another environment, add it as a separate connection with its own token.
Required permissions
Start withapp-engine:apps:run and add only the read scopes for the data types agents should query.
The optional tools need extra scopes. Add only the ones you want agents to use:
The full list is in the Dynatrace MCP server README.
Agent capabilities
Agents validate each DQL query before running it and start with 50 to 100 records. That matters for cost: DQL queries scan Grail data, which can count toward your Dynatrace consumption (see Dynatrace pricing). The MCP server also keeps a Grail query budget, a running total of the data its queries scan, and stops queries once it’s used up. Every write goes through Approvals, and a rejected call isn’t retried.
Verify the connection
Example prompts
Troubleshooting
Connect fails or every request returns 401
Connect fails or every request returns 401
The token is missing, expired, revoked, or a classic API token. Create a new platform token with
app-engine:apps:run, edit the connection, and paste it into DT_PLATFORM_TOKEN. Also check that DT_ENVIRONMENT uses apps.dynatrace.com, not live.dynatrace.com.Some queries return 403
Some queries return 403
The token lacks the scope for that data type. For example, log queries need
storage:logs:read. Add the scope in Dynatrace and update the connection.A DQL query returns no rows
A DQL query returns no rows
The query may target a bucket the token can’t read, a time range with no data, or a misspelled entity. Ask the agent to find the entity by name first, then rerun the query on a known service and a short window.
Requests return 429
Requests return 429
The Grail query budget is used up. Ask the agent to reset it (a reset goes through Approvals like any write), then narrow the time window and record limit so the next queries scan less.
An entity or problem isn't found (404)
An entity or problem isn't found (404)
The entity was renamed or the id is wrong. Ask the agent to look it up by name instead of by id.
Security
- Least privilege — grant only the permissions the agents need for your use case; start read-only and widen later.
- Read-only by default — use read-only credentials unless you want agents to make changes through this connection.
- Rotate credentials — rotate keys and tokens on your normal schedule; CloudThinker picks up the new value when you update the connection.
- Revoke on offboarding — remove the credential at the provider when you delete a connection or a teammate leaves.
- Platform token, read scopes first: add
document:documents:writeor any notification scope only if you want agents to create notebooks or send messages through Dynatrace. - One token per connection: create a token used only by CloudThinker so you can revoke it without breaking other tools.
Related
Root cause analysis
See how Resolve uses observability data to find what broke.
Approvals
Control which Dynatrace writes wait for a person.