Dynatrace SaaS MCP Server
Provides tools for observability and configuration management for Dynatrace SaaS, including DQL queries, logs, spans, metrics, entities, problems, vulnerabilities, settings, dashboards, notebooks, SLOs, and synthetic monitors.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Dynatrace SaaS MCP Serverlist open problems with severity critical"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Dynatrace SaaS MCP Server
An MCP server for Dynatrace SaaS (Gen3 Platform) that exposes observability and configuration capabilities as tools for LLM agents (Claude Code, Claude Desktop, and any other MCP-compatible client).
Overview
This server bridges AI agents with Dynatrace SaaS, providing:
Observability — DQL queries, log search, span/trace lookup, metrics, entities, problems, vulnerabilities
Configuration — Settings 2.0 CRUD, dashboards, notebooks, SLOs, synthetic monitors
All write operations (create / update / delete) are blocked by default and must be explicitly enabled with DT_ENABLE_WRITES=true.
Two-Host / Two-Token Model
Dynatrace SaaS exposes APIs across two distinct hostnames, each requiring a different token type.
Host | Env var | Example value | Auth header | APIs served |
Platform host |
|
|
|
|
Classic host |
|
|
|
|
Setup
Clone & install:
npm installConfigure environment:
cp .env.example .env # then edit .env.envis gitignored — never commit it.Variable
Required
Description
DT_PLATFORM_URLyes
Platform host base URL
DT_CLASSIC_URLyes
Classic host base URL
DT_PLATFORM_TOKENyes
Bearer token (
dt0s16…) for platform APIsDT_API_TOKENyes
Api-Token (
dt0c01…) for classic APIsDT_ENABLE_WRITESno
Set to
trueto allow create/update/delete operationsDT_HTTP_TIMEOUT_MSno
Request timeout in ms (default: 30000)
Required Token Scopes
Classic API token (dt0c01…)
Needed for settings, metrics, entities, problems:
metrics.readslo.read,slo.writelogs.readsettings.read,settings.writeentities.readproblems.readReadConfig,WriteConfigExternalSyntheticIntegration(synthetic read/write)credentialVault.read
Platform token (dt0s16…)
Needed for DQL/Grail, document APIs, SLOs, synthetic, and vulnerabilities:
storage:logs:readstorage:metrics:readstorage:spans:readstorage:entities:readstorage:bizevents:readstorage:events:readstorage:buckets:readstorage:system:readdocument:documents:read,document:documents:writedocument:environment-shares:read,document:environment-shares:writeslo:slos:read,slo:slos:writeautomation:workflows:read(optional, for synthetic execution)securitySensor:vulnerabilities:read
Build & Run
# Install dependencies
npm install
# Build (compiles TypeScript to dist/)
npm run build
# Run the MCP server
node dist/index.js
# or equivalently:
npm start
# Development mode (tsx, no build step)
npm run dev
# Run tests
npm test
# Type-check only (no emit)
npm run typecheckRead-Only by Default
All mutating tools (create, update, delete) check the enableWrites config flag. If the flag is false (the default), calling any write tool returns an error immediately — no network request is made.
Set DT_ENABLE_WRITES=true in your .env (or in the MCP client env config) to enable writes. Even then, each destructive tool has its own description noting that it is a write operation.
Tool Catalog
Observability
Tool | Description |
| Execute a DQL statement against Grail |
| Validate a DQL statement without returning data |
| Search logs via DQL |
| Search spans/traces via DQL |
| Retrieve a trace by trace ID |
| List available metric descriptors |
| Get metadata for a specific metric |
| Query metric data points |
| List host entities |
| Query entities with an entitySelector |
| Get details for a specific entity |
| List available entity types |
| List open or recent problems |
| Get details for a specific problem |
| List security vulnerabilities |
| Get details for a specific vulnerability |
Configuration
Settings (8 tools): list_settings_schemas, get_settings_schema, list_settings_objects, get_settings_object, validate_settings_object, create_settings_object, update_settings_object, delete_settings_object
Dashboards (5 tools): list_dashboards, get_dashboard, create_dashboard, update_dashboard, delete_dashboard
Notebooks (5 tools): list_notebooks, get_notebook, create_notebook, update_notebook, delete_notebook
SLOs (7 tools): list_slos, get_slo, evaluate_slo, list_objective_templates, create_slo, update_slo, delete_slo
Synthetic (7 tools): list_monitors, get_monitor, list_synthetic_locations, list_synthetic_nodes, create_monitor, update_monitor, delete_monitor
Notes
get_entityreturns relationships and host properties inline, so it covers host-detail and entity-relationship use cases (there are no separateget_host/get_entity_relationshipstools).Synthetic location/node tools are named
list_synthetic_locations/list_synthetic_nodes.
MCP Client Registration
Add the following to your MCP client config (Claude Code ~/.claude/mcp.json or Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"dynatrace-saas": {
"command": "node",
"args": ["/Users/nasr/mycode/personal/saas-mcp/dist/index.js"],
"env": {
"DT_PLATFORM_URL": "https://asn8731h.sprint.apps.dynatracelabs.com",
"DT_CLASSIC_URL": "https://asn8731h.sprint.dynatracelabs.com",
"DT_PLATFORM_TOKEN": "dt0s16...",
"DT_API_TOKEN": "dt0c01...",
"DT_ENABLE_WRITES": "false"
}
}
}
}Replace the token values with real credentials. Set DT_ENABLE_WRITES to "true" only if you intend to allow the agent to create or modify Dynatrace configuration.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/mnmozi/dynatrace-mcp-saas'
If you have feedback or need assistance with the MCP directory API, please join our Discord server