Dynatrace SaaS MCP Server
Enables LLM agents to query Dynatrace SaaS for observability data (logs, metrics, traces, entities, problems, vulnerabilities) and manage configurations (dashboards, notebooks, SLOs, synthetic monitors, settings).
README
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 | DT_PLATFORM_URL |
https://asn8731h.sprint.apps.dynatracelabs.com |
Authorization: Bearer dt0s16… |
/platform/* — DQL (Grail), dashboards, notebooks, SLOs, synthetic, vulnerabilities |
| Classic host | DT_CLASSIC_URL |
https://asn8731h.sprint.dynatracelabs.com |
Authorization: Api-Token dt0c01… |
/api/v2/* — settings, metrics, entities, problems, logs (v2) |
Setup
-
Clone & install:
npm install -
Configure 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 typecheck
Read-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_dql |
Execute a DQL statement against Grail |
verify_dql |
Validate a DQL statement without returning data |
search_logs |
Search logs via DQL |
search_spans |
Search spans/traces via DQL |
get_trace |
Retrieve a trace by trace ID |
list_metrics |
List available metric descriptors |
get_metric_metadata |
Get metadata for a specific metric |
query_metric |
Query metric data points |
list_hosts |
List host entities |
find_entities |
Query entities with an entitySelector |
get_entity |
Get details for a specific entity |
list_entity_types |
List available entity types |
list_problems |
List open or recent problems |
get_problem |
Get details for a specific problem |
list_vulnerabilities |
List security vulnerabilities |
get_vulnerability |
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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.