Skip to main content
ClaudeWave
dynatrace-oss avatar
dynatrace-oss

dynatrace-managed-mcp

View on GitHub
MCP ServersOfficial Registry25 stars10 forksTypeScriptApache-2.0Updated today
ClaudeWave Trust Score
69/100
· OK
Passed
  • Open-source license (Apache-2.0)
  • Actively maintained (<30d)
Flags
  • !No description
Last scanned: 6/11/2026
Install in Claude Code / Claude Desktop
Method: Manual
Claude Code CLI
git clone https://github.com/dynatrace-oss/dynatrace-managed-mcp
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "dynatrace-managed-mcp": {
      "command": "node",
      "args": ["/path/to/dynatrace-managed-mcp/dist/index.js"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Clone https://github.com/dynatrace-oss/dynatrace-managed-mcp and follow its README for install instructions.
Use cases

MCP Servers overview

# Dynatrace Managed MCP Server

<h4 align="center">
  <a href="https://github.com/dynatrace-oss/dynatrace-managed-mcp/releases">
    <img src="https://img.shields.io/github/release/dynatrace-oss/dynatrace-managed-mcp" />
  </a>
  <a href="https://github.com/dynatrace-oss/dynatrace-managed-mcp/blob/main/LICENSE">
    <img src="https://img.shields.io/badge/license-mit-blue.svg" alt="Dynatrace Managed MCP Server is released under the MIT License" />
  </a>
  <a href="https://www.npmjs.com/package/@dynatrace-oss/dynatrace-managed-mcp">
    <img src="https://img.shields.io/npm/dm/@dynatrace-oss/dynatrace-managed-mcp?logo=npm&style=flat&color=red" alt="npm" />
  </a>
  <a href="https://github.com/dynatrace-oss/dynatrace-managed-mcp">
    <img src="https://img.shields.io/github/stars/dynatrace-oss/dynatrace-managed-mcp" alt="Dynatrace Managed MCP Server Stars on GitHub" />
  </a>
  <a href="https://github.com/dynatrace-oss/dynatrace-managed-mcp">
    <img src="https://img.shields.io/github/contributors/dynatrace-oss/dynatrace-managed-mcp?color=green" alt="Dynatrace Managed MCP Server Contributors on GitHub" />
  </a>
</h4>

The local _Dynatrace Managed MCP server_ allows AI Assistants to interact with one or more self-hosted [Dynatrace Managed](https://www.dynatrace.com/) deployments, bringing observability data directly into your AI-assisted workflow.

This MCP server supports **two modes**:

- **Local mode:** Runs on your machine for development and testing.
- **Remote mode:** Connects over HTTP/SSE for distributed or production-like setups.

> [!TIP]
> This MCP server is specifically designed for Dynatrace Managed (self-hosted) deployments.
> For Dynatrace SaaS environments, please use the [Dynatrace MCP](https://github.com/dynatrace-oss/dynatrace-mcp).

> [!NOTE]
> This open source product is supported by the community.
> For feature requests, questions, or assistance, please use [GitHub Issues](https://github.com/dynatrace-oss/dynatrace-managed-mcp/issues).

## Quickstart

You can add this MCP server to your AI Assistant, such as VSCode, Claude, Cursor, Kiro, Windsurf, ChatGPT, or Github Copilot.
For more details, please refer to the [configuration section below](#configuration).

## Configuration Methods

There are **three ways** to configure your Dynatrace Managed environments. Choose the method that works best for your use case:

### Method 1: Configuration File (Recommended for Local Development)

The easiest way to configure multiple environments is by using a configuration file (JSON or YAML). This method supports:

- ✅ **Clean, readable format** - No quote escaping needed
- ✅ **Comments** (YAML only) - Document your configuration
- ✅ **Environment variable interpolation** - Keep tokens secure with `${VAR_NAME}` syntax
- ✅ **Version control friendly** - Commit config files without tokens

**Example: `dt-config.yaml`**

```yaml
# Production environment
- dynatraceUrl: https://my-dashboard.company.com/
  apiEndpointUrl: https://my-api.company.com/
  environmentId: abc-123
  alias: production
  # Token is injected from an environment variable at runtime
  apiToken: ${DT_PROD_TOKEN}
  httpProxyUrl: http://proxy.company.com:8080

# Staging environment
- dynatraceUrl: https://staging-dashboard.company.com/
  apiEndpointUrl: https://staging-api.company.com/
  environmentId: xyz-789
  alias: staging
  apiToken: ${DT_STAGING_TOKEN}
```

**Example: `dt-config.json`**

```json
[
  {
    "dynatraceUrl": "https://my-dashboard.company.com/",
    "apiEndpointUrl": "https://my-api.company.com/",
    "environmentId": "abc-123",
    "alias": "production",
    "apiToken": "${DT_PROD_TOKEN}",
    "httpProxyUrl": "http://proxy.company.com:8080"
  }
]
```

**Usage in MCP configuration (e.g., `claude_desktop_config.json`):**

**Option A: Using npx (Recommended - no installation required)**

```json
{
  "mcpServers": {
    "dynatrace-managed": {
      "command": "npx",
      "args": ["-y", "@dynatrace-oss/dynatrace-managed-mcp-server@latest"],
      "env": {
        "DT_CONFIG_FILE": "./dt-config.yaml",
        "DT_PROD_TOKEN": "dt0c01.ABC123...",
        "DT_STAGING_TOKEN": "dt0c01.XYZ789...",
        "LOG_LEVEL": "info"
      }
    }
  }
}
```

**Option B: Local development (requires cloning the repository)**

```json
{
  "mcpServers": {
    "dynatrace-managed": {
      "command": "node",
      "args": ["./dist/index.js"],
      "env": {
        "DT_CONFIG_FILE": "./dt-config.yaml",
        "DT_PROD_TOKEN": "dt0c01.ABC123...",
        "DT_STAGING_TOKEN": "dt0c01.XYZ789...",
        "LOG_LEVEL": "info"
      }
    }
  }
}
```

> **Note:** Option B requires cloning this repository and running `npm install && npm run build` first.

> **Security Best Practice:** Use environment variable interpolation (`${TOKEN_NAME}`) in your config files so you can commit them to version control without exposing secrets!

See [examples/dt-config.yaml](examples/dt-config.yaml) and [examples/dt-config.json](examples/dt-config.json) for complete examples.

### Method 2: Environment Variable (Docker/Kubernetes)

For Kubernetes deployments or if you prefer environment variables, you can set `DT_ENVIRONMENT_CONFIGS` with a JSON string:

```shell
DT_ENVIRONMENT_CONFIGS='[{"apiEndpointUrl":"https://api.example.com/","environmentId":"abc-123","alias":"production","apiToken":"dt0c01.ABC123"}]'
```

This method works well for:

- ✅ Kubernetes ConfigMaps/Secrets
- ✅ Docker containers
- ✅ CI/CD pipelines
- ⚠️ Not ideal for local development (quote escaping is cumbersome)

### Method 3: .env File (Not Recommended)

While you can use a `.env` file, multiline values don't work reliably. **Use Method 1 (config file) instead** for cleaner local development.

## Configuration Priority

If multiple configuration methods are set, the MCP server uses this priority:

1. **`DT_CONFIG_FILE`** - External file (highest priority)
2. **`DT_ENVIRONMENT_CONFIGS`** - JSON string
3. **Error** - If neither is set

## Configuration Fields

You need to configure the connection to your Dynatrace Managed environment(s). Each environment requires:

**Configuration structure:**

```json
[
  {
    "dynatraceUrl": "https://my-dashboard-endpoint.com/",
    "apiEndpointUrl": "https://my-api-endpoint.com/",
    "environmentId": "my-env-id-1",
    "alias": "alias-env",
    "apiToken": "my-api-token",
    "httpProxyUrl": "",
    "httpsProxyUrl": ""
  }
]
```

**Field descriptions:**

- `dynatraceUrl`: base URL for Dynatrace Managed dashboard, to which the environment ID will be appended (e.g. `https://dmz123.dynatrace-managed.com`).
  If not specified, will default to use the same value as `DT_API_ENDPOINT_URL`.
- `apiEndpointUrl`: base URL for Dynatrace Managed API, to which the environment ID will be appended (e.g. `https://abc123.dynatrace-managed.com:9999`)
- `environmentId`: ID of the managed environment, used for constructing URL for API and dashboards (e.g., of the form `01234567-89ab-cdef-abcd-ef0123456789`)
- `alias`: a friendly/human-readable name for the environment
- `apiToken`: API token with required scopes (see [Authentication](#authentication))
- (optional) `httpProxyUrl`/`httpsProxyUrl`: URL of proxy server for requests (see [Environment Variables](#environment-variables))

## Getting Started

If you are using multiple environments, we strongly recommend that you set up rules (see [Rules](#rule-file)) to guide your LLM in better understanding each environment.

Changes to the environment configuration will need an MCP server restart/reload. Changes won't be picked up until a fresh reload.

Once configured, you can start using [example prompts](#Example-Prompts) like `Get all details of the Dynatrace entity 'my-service'` or `What problems has Dynatrace identified? Give details of the first problem.`.

These queries use V2 REST APIs and incur no additional costs beyond your standard Managed license.

Minimum supported version: Dynatrace Managed 1.328.0

## Architecture

### Local mode

![Architecture (local mode)](./assets/dynatrace-managed-mcp-arch-local.png?raw=true)

### Remote mode

![Architecture (remote mode)](./assets/dynatrace-managed-mcp-arch-remote.png?raw=true)

#### HTTP authentication (per-user tokens)

In HTTP mode the server holds **no** Dynatrace API tokens. Each request must carry the caller's
per-environment tokens in a single `X-Dynatrace-Tokens` header, formatted as an `alias=token`
map separated by semicolons:

```
X-Dynatrace-Tokens: prod=dt0c01.AAA;staging=dt0c01.BBB
```

The server uses the caller's token for the environment named by `environment_alias`, so each user
only accesses the data their token allows. A request that targets an environment with no supplied
token is rejected with a message naming the missing alias.

Because tokens are sent in a header, run the HTTP server **behind TLS** (for example, terminate TLS
at a reverse proxy in front of it). The server itself binds to `127.0.0.1` by default and does not
terminate TLS.

Environment config in HTTP mode does not include `apiToken` — only `alias` + URLs, which are
non-secret. See [`examples/dt-config-http.yaml`](./examples/dt-config-http.yaml) and
[`examples/mcp-config-http.json`](./examples/mcp-config-http.json).

> The Configuration Methods described above (server-side `apiToken` values) apply to **stdio /
> local mode**. In HTTP mode, tokens come from the `X-Dynatrace-Tokens` header instead.

#### Large numbers of environments and header size limits

The `X-Dynatrace-Tokens` header grows with the number of environments. Each entry is roughly
`alias=dt0c01.<token>;` (~110 characters). Node.js enforces a default HTTP header size limit of
**16 KB**, which accommodates approximately 140–150 environments before requests are rejected.

If you need more environments, increase the limit at server startup with the `--max-http-header-size`
flag:

```bash
node --max-http-header-size=65536 ./dist/index.js --http
```

If you are running a **reverse proxy** (such as nginx) in front of the MCP server, the 

What people ask about dynatrace-managed-mcp

What is dynatrace-oss/dynatrace-managed-mcp?

+

dynatrace-oss/dynatrace-managed-mcp is mcp servers for the Claude AI ecosystem with 25 GitHub stars.

How do I install dynatrace-managed-mcp?

+

You can install dynatrace-managed-mcp by cloning the repository (https://github.com/dynatrace-oss/dynatrace-managed-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is dynatrace-oss/dynatrace-managed-mcp safe to use?

+

Our security agent has analyzed dynatrace-oss/dynatrace-managed-mcp and assigned a Trust Score of 69/100 (tier: OK). See the full breakdown of passed checks and flags on this page.

Who maintains dynatrace-oss/dynatrace-managed-mcp?

+

dynatrace-oss/dynatrace-managed-mcp is maintained by dynatrace-oss. The last recorded GitHub activity is from today, with 10 open issues.

Are there alternatives to dynatrace-managed-mcp?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy dynatrace-managed-mcp to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: dynatrace-oss/dynatrace-managed-mcp
[![Featured on ClaudeWave](https://claudewave.com/api/badge/dynatrace-oss-dynatrace-managed-mcp)](https://claudewave.com/repo/dynatrace-oss-dynatrace-managed-mcp)
<a href="https://claudewave.com/repo/dynatrace-oss-dynatrace-managed-mcp"><img src="https://claudewave.com/api/badge/dynatrace-oss-dynatrace-managed-mcp" alt="Featured on ClaudeWave: dynatrace-oss/dynatrace-managed-mcp" width="320" height="64" /></a>

More MCP Servers

dynatrace-managed-mcp alternatives