Enables real-time observability data access from Dynatrace, allowing users to fetch problem details, security vulnerabilities, execute DQL queries, retrieve logs and metrics, analyze Kubernetes cluster events, and set up notifications via Slack and Dynatrace AutomationEngine.
Provides tools for monitoring Kubernetes clusters, retrieving problem details from services, and analyzing cluster events to troubleshoot deployment issues.
Allows sending notification messages to Slack channels via a Slack Connector, supporting features like alerting on availability problems and security vulnerabilities.
Dynatrace MCP Server
The local Dynatrace MCP server allows AI Assistants to interact with the Dynatrace observability platform, bringing real-time observability data directly into your development workflow.
Note: This product is not officially supported by Dynatrace.
If you need help, please contact us via GitHub Issues if you have feature requests, questions, or need help.
https://github.com/user-attachments/assets/25c05db1-8e09-4a7f-add2-ed486ffd4b5a
Quickstart
You can add this MCP server to your MCP Client like VSCode, Claude, Cursor, Amazon Q, Windsurf, ChatGPT, or Github Copilot via the npmjs package @dynatrace-oss/dynatrace-mcp-server, and type stdio.
You can find more details about the configuration for different AI Assistants, Agents and MCP Clients in the Configuration section below.
Furthermore, you need your Dynatrace environment URL, e.g., https://abc12345.apps.dynatrace.com, as well as a Platform Token, e.g., dt0s16.SAMPLE.abcd1234, with required scopes.
Depending on your MCP Client, you need to configure these as environment variables or as settings in the UI:
DT_ENVIRONMENT(string, e.g.,https://abc12345.apps.dynatrace.com) - URL to your Dynatrace Platform (do not use Dynatrace classic URLs likeabc12345.live.dynatrace.com)DT_PLATFORM_TOKEN(string, e.g.,dt0s16.SAMPLE.abcd1234) - Recommended: Dynatrace Platform Token
Once you are done, we recommend looking into example prompts, like Get all details of the entity 'my-service' or Show me error logs. Please mind that these prompts lead to executing DQL statements which may incur costs in accordance to your licence.
Related MCP server: Sentry MCP Server
Architecture

Use cases
Real-time observability - Fetch production-level data for early detection and proactive monitoring
Contextual debugging - Fix issues with full context from monitored exceptions, logs, and anomalies
Security insights - Get detailed vulnerability analysis and security problem tracking
Natural language queries - Use AI-powered DQL generation and explanation
Multi-phase incident investigation - Systematic 4-phase approach with automated impact assessment
Advanced transaction analysis - Precise root cause identification with file/line-level accuracy
Cross-data source correlation - Connect problems → spans → logs with trace ID correlation
DevOps automation - Deployment health gates with automated promotion/rollback logic
Security compliance monitoring - Multi-cloud compliance assessment with evidence-based investigation
Capabilities
List and get problem details from your services (for example Kubernetes)
List and get security problems / vulnerability details
Execute DQL (Dynatrace Query Language) and retrieve logs, events, spans and metrics
Send Slack messages (via Slack Connector)
Set up notification Workflow (via Dynatrace AutomationEngine)
Get more information about a monitored entity
Get Ownership of an entity
Costs
Important: While this local MCP server is provided for free, using certain capabilities to access data in Dynatrace Grail may incur additional costs based
on your Dynatrace consumption model. This affects execute_dql tool and other capabilities that query Dynatrace Grail storage, and costs
depend on the volume (GB scanned).
Before using this MCP server extensively, please:
Review your current Dynatrace consumption model and pricing
Understand the cost implications of the specific data you plan to query (logs, events, metrics) - see Dynatrace Pricing and Rate Card
Start with smaller timeframes (e.g., 12h-24h) and make use of buckets to reduce the cost impact
Set an appropriate
DT_GRAIL_QUERY_BUDGET_GBenvironment variable (default: 1000 GB) to control and monitor your Grail query consumption
Grail Budget Tracking:
The MCP server includes built-in budget tracking for Grail queries to help you monitor and control costs:
Set
DT_GRAIL_QUERY_BUDGET_GB(default: 1000 GB) to define your session budget limitThe server tracks bytes scanned across all Grail queries in the current session
You'll receive warnings when approaching 80% of your budget
Budget exceeded alerts help prevent unexpected high consumption
Budget resets when you restart the MCP server session
To understand costs that occured:
Execute the following DQL statement in a notebook to see how much bytes have been queried from Grail (Logs, Events, etc...):
AI-Powered Assistance (Preview)
Natural Language to DQL - Convert plain English queries to Dynatrace Query Language
DQL Explanation - Get plain English explanations of complex DQL queries
AI Chat Assistant - Get contextual help and guidance for Dynatrace questions
Feedback System - Provide feedback to improve AI responses over time
Note: While Davis CoPilot AI is generally available (GA), the Davis CoPilot APIs are currently in preview. For more information, visit the Davis CoPilot Preview Community.
Configuration
You can add this MCP server (using STDIO) to your MCP Client like VS Code, Claude, Cursor, Amazon Q Developer CLI, Windsurf Github Copilot via the package @dynatrace-oss/dynatrace-mcp-server.
We recommend to always set it up for your current workspace instead of using it globally.
VS Code
Please note: In this config, the is used.
This only works if the config is stored in the current workspaces, e.g., <your-repo>/.vscode/mcp.json. Alternatively, this can also be stored in user-settings, and you can define env as follows:
Claude Desktop
Amazon Q Developer CLI
The Amazon Q Developer CLI provides an interactive chat experience directly in your terminal. You can ask questions, get help with AWS services, troubleshoot issues, and generate code snippets without leaving your command line environment.
This configuration should be stored in <your-repo>/.amazonq/mcp.json.
Google Gemini CLI
The Google Gemini CLI is Google's official command-line AI assistant that supports MCP server integration. You can add the Dynatrace MCP server using either the built-in management commands or manual configuration.
Using gemini CLI directly (recommended):
and verify that the server is running via
Or manually in your ~/.gemini/settings.json or .gemini/settings.json:
HTTP Server Mode (Alternative)
For scenarios where you need to run the MCP server as an HTTP service instead of using stdio (e.g., for stateful sessions, load balancing, or integration with web clients), you can use the HTTP server mode:
Running as HTTP server:
Configuration for MCP clients that support HTTP transport:
Rule File
For efficient result retrieval from Dynatrace, please consider creating a rule file (e.g., .github/copilot-instructions.md, .amazonq/rules/), instructing coding agents on how to get more details for your component/app/service. Here is an example for easytrade, please adapt the names and filters to fit your use-cases and components:
Environment Variables
You can set up authentication via Platform Tokens (recommended) or OAuth Client via the following environment variables:
DT_ENVIRONMENT(string, e.g.,https://abc12345.apps.dynatrace.com) - URL to your Dynatrace Platform (do not use Dynatrace classic URLs likeabc12345.live.dynatrace.com)DT_PLATFORM_TOKEN(string, e.g.,dt0s16.SAMPLE.abcd1234) - Recommended: Dynatrace Platform TokenOAUTH_CLIENT_ID(string, e.g.,dt0s02.SAMPLE) - Alternative: Dynatrace OAuth Client ID (for advanced use cases)OAUTH_CLIENT_SECRET(string, e.g.,dt0s02.SAMPLE.abcd1234) - Alternative: Dynatrace OAuth Client Secret (for advanced use cases)DT_GRAIL_QUERY_BUDGET_GB(number, default:1000) - Budget limit in GB (base 1000) for Grail query bytes scanned per session. The MCP server tracks your Grail usage and warns when approaching or exceeding this limit.
Platform Tokens are recommended for most use cases as they provide a simpler authentication flow. OAuth Clients should only be used when specific OAuth features are required.
For more information, please have a look at the documentation about creating a Platform Token in Dynatrace, as well as creating an OAuth Client in Dynatrace for advanced scenarios.
In addition, depending on the features you use, the following variables can be configured:
SLACK_CONNECTION_ID(string) - connection ID of a Slack Connection
Scopes for Authentication
Depending on the features you are using, the following scopes are needed:
Available for both Platform Tokens and OAuth Clients:
app-engine:apps:run- needed for almost all toolsapp-engine:functions:run- needed for for almost all toolsenvironment-api:entities:read- for retrieving ownership details from monitored entities (currently not available for Platform Tokens)automation:workflows:read- read Workflowsautomation:workflows:write- create and update Workflowsautomation:workflows:run- run Workflowsstorage:buckets:read- needed forexecute_dqltool to read all system data stored on Grailstorage:logs:read- needed forexecute_dqltool to read logs for reliability guardian validationsstorage:metrics:read- needed forexecute_dqltool to read metrics for reliability guardian validationsstorage:bizevents:read- needed forexecute_dqltool to read bizevents for reliability guardian validationsstorage:spans:read- needed forexecute_dqltool to read spans from Grailstorage:entities:read- needed forexecute_dqltool to read Entities from Grailstorage:events:read- needed forexecute_dqltool to read Events from Grailstorage:security.events:read- needed forexecute_dqltool to read Security Events from Grailstorage:system:read- needed forexecute_dqltool to read System Data from Grailstorage:user.events:read- needed forexecute_dqltool to read User events from Grailstorage:user.sessions:read- needed forexecute_dqltool to read User sessions from Graildavis-copilot:conversations:execute- execute conversational skill (chat with Copilot)davis-copilot:nl2dql:execute- execute Davis Copilot Natural Language (NL) to DQL skilldavis-copilot:dql2nl:execute- execute DQL to Natural Language (NL) skillemail:emails:send- needed forsend_emailtool to send emailssettings:objects:read- needed for reading ownership information and Guardians (SRG) from settingsNote: Please ensure that
settings:objects:readis used, and not the similarly named scopeapp-settings:objects:read.
Important: Some features requiring environment-api:entities:read will only work with OAuth Clients. For most use cases, Platform Tokens provide all necessary functionality.
✨ Example prompts ✨
Use these example prompts as a starting point. Just copy them into your IDE or agent setup, adapt them to your services/stack/architecture, and extend them as needed. They're here to help you imagine how real-time observability and automation work together in the MCP context in your IDE.
Basic Queries & AI Assistance
Find a monitored entity
Find error logs
Write a DQL query from natural language:
Explain a DQL query:
Chat with Davis CoPilot:
Send email notifications:
Advanced Incident Investigation
Multi-phase incident response:
Cross-service failure analysis:
Security & Compliance Analysis
Latest-scan vulnerability assessment:
Multi-cloud compliance monitoring:
DevOps & SRE Automation
Deployment health gate analysis:
Infrastructure as Code remediation:
Deep Transaction Analysis
Business logic error investigation:
Performance correlation analysis:
Traditional Use Cases (Enhanced)
Find open vulnerabilities on production, setup alert:
Debug intermittent 503 errors:
Correlate memory issue with logs:
Trace request flow analysis:
Analyze Kubernetes cluster events:
Troubleshooting
Authentication Issues
In most cases, authentication issues are related to missing scopes or invalid tokens. Please ensure that you have added all required scopes as listed above.
For Platform Tokens:
Verify your Platform Token has all the necessary scopes listed in the "Scopes for Authentication" section
Ensure your token is valid and not expired
Check that your user has the required permissions in your Dynatrace Environment
For OAuth Clients: In case of OAuth-related problems, you can troubleshoot SSO/OAuth issues based on our Dynatrace Developer Documentation.
It is recommended to test access with the following API (which requires minimal scopes app-engine:apps:run and app-engine:functions:run):
Use OAuth Client ID and Secret to retrieve a Bearer Token (only valid for a couple of minutes):
Use
access_tokenfrom the response of the above call as the bearer-token in the next call:
You should retrieve a result like this:
Problem accessing data on Grail
Grail has a dedicated section about permissions in the Dynatrace Docs. Please refer to https://docs.dynatrace.com/docs/discover-dynatrace/platform/grail/data-model/assign-permissions-in-grail for more details.
Telemetry
The Dynatrace MCP Server includes sending Telemetry Data via Dynatrace OpenKit to help improve the product. This includes:
Server start events
Tool usage (which tools are called, success/failure, execution duration)
Error tracking for debugging and improvement
Privacy and Opt-out:
Telemetry is enabled by default but can be disabled by setting
DT_MCP_DISABLE_TELEMETRY=trueNo sensitive data from your Dynatrace environment is tracked
Only anonymous usage statistics and error information are collected
Usage statistics and error data are transmitted to Dynatrace’s analytics endpoint
Configuration options:
DT_MCP_DISABLE_TELEMETRY(boolean, default:false) - Disable TelemetryDT_MCP_TELEMETRY_APPLICATION_ID(string, default:dynatrace-mcp-server) - Application ID for trackingDT_MCP_TELEMETRY_ENDPOINT_URL(string, default: Dynatrace endpoint) - OpenKit endpoint URLDT_MCP_TELEMETRY_DEVICE_ID(string, default: auto-generated) - Device identifier for tracking
To disable usage tracking, add this to your environment: