mcpField
D
dynatrace-managed-mcp

dynatrace-managed-mcp

本地服务
github.com/dynatrace-oss云与基础设施33今天更新

关于 dynatrace-managed-mcp

dynatrace-managed-mcp 是面向 Dynatrace Managed(自托管)部署的本地 MCP 服务,让 AI 助手访问日志、事件、指标、问题和安全问题等可观测性数据。它支持同时查询多个 Managed 环境,并提供本地 stdio 与远程 HTTP 两种运行模式。

主要功能

  1. 01查询问题、安全问题与实体关系
  2. 02检索日志并支持内容与时间过滤
  3. 03基于 V2 Metrics API 分析指标
  4. 04查看 SLO、错误预算与系统事件
  5. 05支持配置多个 Managed 环境

适用场景

  1. 01对历史可观测性数据进行故障排查
  2. 02在 AI 助手中调查事件与异常影响范围
  3. 03检查漏洞与多云合规相关的安全问题

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露问题、日志、指标、SLO 等查询工具,底层调用 Dynatrace Managed 的 API。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"dynatrace-oss-dynatrace-managed": {
"command": "npx",
"args": [
"-y",
"@dynatrace-oss/dynatrace-managed-mcp-server"
],
"env": {
"DT_MCP_RATE_LIMIT_MAX_CALLS": "<DT_MCP_RATE_LIMIT_MAX_CALLS>",
"DT_MCP_RATE_LIMIT_WINDOW_MS": "<DT_MCP_RATE_LIMIT_WINDOW_MS>",
"DT_ENVIRONMENT_CONFIGS": "<DT_ENVIRONMENT_CONFIGS>",
"LOG_LEVEL": "<LOG_LEVEL>",
"DT_MCP_DISABLE_TELEMETRY": "<DT_MCP_DISABLE_TELEMETRY>"
}
}
}
}
启动命令npx -y @dynatrace-oss/dynatrace-managed-mcp-server
需要配置的环境变量
DT_MCP_RATE_LIMIT_MAX_CALLSMaximum number of tool calls allowed per rate limit window. Defaults to 20.
DT_MCP_RATE_LIMIT_WINDOW_MSRate limit window size in milliseconds. Defaults to 20000 (20 seconds).
DT_ENVIRONMENT_CONFIGSAn escaped JSON array that defines the Dynatrace Managed environment(s) to connect to. See README file for contents of this.
LOG_LEVELLogging level (e.g. debug, info, warning, error)
DT_MCP_DISABLE_TELEMETRYDisable telemetry

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@dynatrace-oss/dynatrace-managed-mcp-server1.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Dynatrace Managed MCP 服务

最新 Dynatrace Managed MCP Server 版本 Dynatrace Managed MCP Server 根据 Apache 2.0 许可证发布 npm GitHub 上的 Dynatrace Managed MCP Server 贡献者 GitHub 上的 Dynatrace Managed MCP Server 星标数
使用场景
  1. 您的 Dynatrace Managed 环境是主要的可观测性系统,包含所有实时数据;或
  2. 已从 Dynatrace Managed 环境迁移到 Dynatrace Saas 环境,但历史可观测性数据未迁移,仍可通过 Dynatrace Managed 环境访问。 Dynatrace Managed MCP 用于访问历史数据,另一个独立的 Dynatrace SaaS MCP 用于访问实时和较新的数据。

Dynatrace Managed MCP 的具体使用场景包括:

  • 实时可观测性 - 获取生产级数据,以便及早发现问题并主动监控
  • 上下文调试 - 根据受监控的异常、日志和异常情况提供完整上下文,修复问题
  • 安全洞察 - 获取详细的漏洞分析和安全问题跟踪。这包括通过基于证据的调查评估多云合规性。
  • 自然语言查询 - 将查询映射到 MCP 工具的使用(即 API 查询),并为下一步操作提供指导
  • 多阶段事件调查 - 系统地评估影响并排查问题
  • 多环境支持 - 通过同一 MCP 服务查询多个 Dynatrace Managed 环境
功能
  • 问题 - 列出并获取服务(例如 Kubernetes)的问题详情
  • 安全 - 列出并获取安全问题 / 漏洞详情
  • 实体 - 获取有关受监控实体的更多信息,包括关系映射
  • SLO - 列出并获取服务级别目标详情,包括评估和错误预算
  • 事件跟踪 - 列出并获取系统事件
  • 日志调查 - 使用高级内容查询和基于时间的查询搜索并筛选日志
  • 指标分析 - 使用 V2 Metrics API 查询并分析性能指标

本地 _Dynatrace Managed MCP 服务_允许 AI 助手与一个或多个可自托管的 Dynatrace Managed 部署交互,将可观测性数据直接引入 AI 辅助工作流。

此 MCP 服务支持两种模式:

  • 本地模式: 在您的计算机上运行,用于开发和测试。
  • 远程模式: 通过 HTTP/SSE 连接,适用于分布式或类似生产环境的设置。

提示

此 MCP 服务专为 Dynatrace Managed(可自托管)部署而设计。 对于 Dynatrace SaaS 环境,请使用 Dynatrace MCP。 [!NOTE] 这是一个由社区支持的开源产品。 如需提出功能请求、咨询问题或寻求帮助,请使用 GitHub Issues。

stdio(本地)模式快速入门

你可以将此 MCP 服务添加到 AI 助手中,例如 VSCode、Claude、Cursor、Kiro、Windsurf、ChatGPT 或 GitHub Copilot。

要运行此 MCP 服务,你需要配置以下四项:

  • Dynatrace Managed API 令牌
  • 配置文件:dt-config.yaml 或 dt-config.json 文件,用于定义你打算使用的环境列表
  • MCP 服务连接配置文件: 本地 MCP 配置,具体取决于你使用的工具
  • 在 MCP 服务环境中将 DT_CONFIG_FILE 设置为 dt-config.yaml 或 dt-config.json 文件的路径。
Dynatrace Managed API 令牌

有关在 Managed 部署中创建 API 令牌的信息,请参阅 Dynatrace Managed 文档。 要使用全部功能,你的 API 令牌必须包含以下范围:

  • 访问问题和事件动态、指标及拓扑(DataExport)
  • 读取实体(entities.read)
  • 读取事件(events.read)
  • 读取日志(logs.read)
  • 读取指标(metrics.read)
  • 读取问题(problems.read)
  • 读取安全问题(securityProblems.read)
  • 读取 SLO(slo.read)
配置文件
配置参数
参数必填说明示例值
apiEndpointUrl是Dynatrace Managed 集群 API 的基本 URLhttps://dmz123.dynatrace-managed.com
environmentId是Managed 环境的 ID01234567-89ab-cdef-abcd-ef0123456789
alias是易于识别的环境名称MyEnvironment
apiToken仅限 stdio 模式使用上述说明创建的、具有所需范围的集群 API 令牌dt0s01.ABCDEFGHIJK0123
httpProxyUrl否请求所用代理服务的 URL。请勿与另一个代理参数同时使用http://proxy.company.com:8080
httpsProxyUrl否请求所用代理服务的 URL。请勿与另一个代理参数同时使用https://proxy.company.com:8080

配置 Dynatrace Managed 环境有两种方式。

方法 1:配置文件(推荐用于本地开发)

示例:dt-config.yaml

# Production environment
- apiEndpointUrl: https://my-api.company.com/
  environmentId: abc-123
  alias: production
  # Token is injected from an environment variable at runtime
  apiToken: ${DT_PROD_TOKEN}
  # You can also use the token directly
  # apiToken: dt0s01.ABCDEFGHIJK0123

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

示例:dt-config.json

[
  {
    "apiEndpointUrl": "https://my-api.company.com/",
    "environmentId": "abc-123",
    "alias": "production",
    "apiToken": "${DT_PROD_TOKEN}"
  }
]
方法 2:环境变量(Docker/Kubernetes)

对于 Kubernetes 部署,或者如果你更倾向于使用环境变量,可以在 .env 文件或 MCP 服务连接配置文件中直接设置 DT_ENVIRONMENT_CONFIGS,其值为 JSON 字符串。

DT_ENVIRONMENT_CONFIGS='[{"apiEndpointUrl":"https://api.example.com/","environmentId":"abc-123","alias":"production","apiToken":"dt0s01.ABCDEFGHIJK0123"}]'
MCP 服务连接配置文件

要实际连接到 MCP 服务,你需要在 AI 助手中配置 MCP 连接。

我们建议始终为当前工作区进行设置,而不是全局设置。

VS Code
{
  "servers": {
    "npx-dynatrace-managed-mcp": {
      "command": "npx",
      "cwd": "${workspaceFolder}",
      "args": ["-y", "@dynatrace-oss/dynatrace-managed-mcp-server@latest"],
      "envFile": "${workspaceFolder}/.env"
    }
  }
}

或者,也可以将其存储在用户设置中,并按如下方式定义 env:

{
  "servers": {
    "npx-dynatrace-managed-mcp": {
      "command": "npx",
      "args": ["-y", "@dynatrace-oss/dynatrace-managed-mcp-server@latest"],
      "env": {
        "DT_PROD_TOKEN": "dt0s01.ABCDEFGHIJK0123",
        "DT_CONFIG_FILE": "dt-config.yaml"
      }
    }
  }
}
Claude Code

Claude Code 可以将此服务安装为插件,这样就无需手动进行下方的 MCP 配置,并会添加一项涵盖环境选择和实体选择器的技能。该插件通过 Anthropic 的社区插件市场发布:

/plugin marketplace add anthropics/claude-plugins-community
/plugin install dynatrace-managed-mcp@claude-community

重要

社区市场的条目仍在等待审核。审核通过前,上述安装命令会显示 Plugin "dynatrace-managed-mcp" not found in marketplace "claude-community"——请暂时使用下方 直接从此仓库安装 中的说明。

安装期间,Claude Code 会提示配置集群:可以为单个集群提供 JSON 数组,也可以为多个集群提供 dt-config.yaml / dt-config.json 文件的路径。详情请参阅 docs/claude-code-plugin.md。

说明

第三方市场默认不会自动更新。运行 /plugin marketplace update claude-community 以获取新版插件。

改为直接从此仓库安装

此仓库本身也是一个插件市场,因此在社区条目获批前安装插件、尝试尚未发布的变更或固定到特定分支时,可以通过此方式安装:

/plugin marketplace add dynatrace-oss/dynatrace-managed-mcp
/plugin install dynatrace-managed-mcp@dynatrace

若要手动配置服务,请使用下方的 Claude Desktop 代码片段——它也适用于 Claude Code 的 .mcp.json。

Claude Desktop
{
  "mcpServers": {
    "dynatrace-managed-mcp": {
      "command": "npx",
      "args": ["-y", "@dynatrace-oss/dynatrace-managed-mcp-server@latest"],
      "env": {
        "DT_PROD_TOKEN": "dt0s01.ABCDEFGHIJK0123",
        "DT_CONFIG_FILE": "dt-config.yaml"
      }
    }
  }
}
Kiro
{
  "mcpServers": {
    "dynatrace-managed-mcp": {
      "command": "npx",
      "args": ["-y", "@dynatrace-oss/dynatrace-managed-mcp-server@latest"],
      "env": {
        "DT_PROD_TOKEN": "dt0s01.ABCDEFGHIJK0123",
        "DT_CONFIG_FILE": "dt-config.yaml"
      }
    }
  }
}

此配置应存储在 <project-root>/.kiro/settings/mcp.json,或用户级设置文件中(~/.kiro/settings/mcp.json)。

Google Gemini CLI

直接使用 gemini CLI(推荐):

gemini extensions install https://github.com/dynatrace-oss/dynatrace-managed-mcp
export DT_ENVIRONMENT_CONFIGS="[{\"apiEndpointUrl\":\"https://my-api-endpoint.com/\",\"environmentId\":\"my-env-id-1\",\"alias\":\"alias-env\",\"apiToken\":\"my-api-token\"},{\"apiEndpointUrl\":\"https://my-api2-endpoint.com/\",\"environmentId\":\"my-env-id-2\",\"alias\":\"alias-env-2\",\"apiToken\":\"my-api-token-2\"}]"

并通过以下命令确认服务正在运行:

gemini mcp list

或者手动编辑 ~/.gemini/settings.json 或 .gemini/settings.json:

{
  "mcpServers": {
    "dynatrace-managed-mcp": {
      "command": "npx",
      "args": ["@dynatrace-oss/dynatrace-managed-mcp-server@latest"],
      "env": {
        "DT_ENVIRONMENT_CONFIGS": "[{\"apiEndpointUrl\":\"https://my-api-endpoint.com/\",\"environmentId\":\"my-env-id-1\",\"alias\":\"alias-env\",\"apiToken\":\"my-api-token\"},{\"apiEndpointUrl\":\"https://my-api2-endpoint.com/\",\"environmentId\":\"my-env-id-2\",\"alias\":\"alias-env-2\",\"apiToken\":\"my-api-token-2\"}]",
        "DT_CONFIG_FILE": "dt-config.yaml"
      },
      "timeout": 30000,
      "trust": false
    }
  }
}

HTTP 服务模式(替代方案)

此本地 MCP 的默认模式使用 stdio 进行传输。

如果需要将 MCP 服务作为 HTTP 服务运行,可以使用 HTTP 服务模式(例如用于负载均衡或与 Web 客户端集成):

以 HTTP 服务运行

请确保同一文件夹中有配置文件。HTTP 模式下运行的配置无需定义 API 令牌。

# Get help and see all available options
npx -y @dynatrace-oss/dynatrace-managed-mcp-server@latest --help

# Run with HTTP server on default port 3000
npx -y @dynatrace-oss/dynatrace-managed-mcp-server@latest --http

# Run with custom port
npx -y @dynatrace-oss/dynatrace-managed-mcp-server@latest --http --port 3001

# Run with custom host/IP
npx -y @dynatrace-oss/dynatrace-mcp-server@latest --http --host 127.0.0.1   # recommended for local computers
npx -y @dynatrace-oss/dynatrace-mcp-server@latest --http --host 0.0.0.0     # recommended for container
npx -y @dynatrace-oss/dynatrace-mcp-server@latest --http --host 192.168.0.1 # recommended when sharing connection over a local network

警告

在 HTTP 模式下,服务会验证 Host 标头以防范 DNS 重绑定攻击。使用 --host 0.0.0.0(或 --host ::)时,默认仅接受回环主机名,因此远程客户端会收到 403 Forbidden,直到你将其使用的主机名添加到 DT_MCP_ALLOWED_HOSTS。请参阅 DNS 重绑定防护。

MCP 服务连接配置文件:

如前所述,HTTP 模式不会在配置中存储 API 令牌。用户需填写 X-Dynatrace-Tokens 标头进行身份验证。

{
  "mcpServers": {
    "dynatrace-managed-mcp": {
      "url": "http://localhost:3000",
      "transport": "http",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json,text/event-stream",
        "X-Dynatrace-Tokens": "alias1=token1;alias2=token2"
      }
    }
  }
}
性能注意事项

**重要:**此 MCP 服务会向 Dynatrace Managed 环境发起 API 调用。它的设计注重高效使用(例如限制响应大小),但应注意不要通过大型查询让 Dynatrace Managed 环境过载。

最佳实践:

  1. 使用特定的时间范围(例如 1-2 小时),而不是查询大范围历史数据。
  2. 使用特定筛选条件尽可能缩小查询范围,例如指定实体 ID 的实体选择器。
  3. 如果使用多个环境,请在适用时明确指定要查询的环境。如果一次查询多个环境,请注意返回给大模型的数据量,例如,从 2 个环境各查询前 10 个问题会得到 20 个问题,而从 10 个环境各查询前 10 个问题则会得到 100 个问题。
DNS 重绑定防护(HTTP 模式)
  • DT_MCP_ALLOWED_HOSTS(可选):服务器在 Host 标头中接受的主机名列表,以逗号分隔。端口会被忽略,因此只需列出主机名(IPv6 请使用方括号形式,例如 [::1])。

未设置此变量时,允许列表会根据 --host 生成:绑定地址以及 localhost、127.0.0.1 和 [::1]。Host 标头中的主机名不在列表中的请求会被拒绝,并返回 403 Forbidden;携带的 Origin 标头中主机名不在列表中的请求也会被拒绝。这可以防止 DNS 重绑定攻击。

验证始终处于启用状态:不存在会静默跳过验证的配置。

重要

绑定到通配地址(--host 0.0.0.0 或 --host ::)时,绑定地址无法确定哪些主机名是合法的,因此服务器只接受回环主机名,并会在启动时记录警告。在此模式下,DNS 重绑定会被阻止,但所有远程客户端也会被阻止。如果在容器中运行,或将服务器暴露在网络上,必须将客户端使用的主机名设置到 DT_MCP_ALLOWED_HOSTS 中,否则客户端会收到 403 Forbidden。

**示例:**容器绑定到所有接口,通过 mcp.internal.example.com 访问:

DT_MCP_ALLOWED_HOSTS=mcp.internal.example.com node dist/index.js --http --host 0.0.0.0

DT_MCP_ALLOWED_HOSTS 会替换生成的列表,而不是在其基础上扩展,因此如果还需要本地访问,请明确包含回环名称:

DT_MCP_ALLOWED_HOSTS=mcp.internal.example.com,localhost,127.0.0.1

故障排查

身份验证问题

在大多数情况下,身份验证问题源于缺少作用域或令牌无效。请确保已添加上述所有必需的作用域。

遇到错误时,可以向 AI 助手询问 MCP 返回的确切错误。对于启动问题,请检查 AI 助手日志。

也可以尝试直接运行 MCP,查看启动时是否报告错误:

```bash
npx @dynatrace-oss/dynatrace-managed-mcp-server@latest
```
标头大小限制过小

X-Dynatrace-Tokens 标头会随着环境数量增加而变大。每个条目大约为 alias=dt0s01.ABCDEFGHIJK0123(约 110 个字符)。Node.js 默认的 HTTP 标头大小限制为 16 KB,在请求被拒绝前大约可容纳 140–150 个环境。

如果需要支持更多环境,请在服务器启动时使用 --max-http-header-size 标志提高限制:

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

如果 MCP 服务前面运行着反向代理(例如 nginx),代理也会实施自己的限制。nginx 的默认值为 8 KB(large_client_header_buffers),大约可容纳 70 个环境。请在 nginx 配置中提高此限制:

large_client_header_buffers 4 32k;

遥测

Dynatrace MCP Server 包含通过 Dynatrace OpenKit 发送遥测数据的功能,以帮助改进产品。遥测数据包括:

  • 服务器启动事件
  • 工具使用情况(调用了哪些工具、成功或失败、执行时长)
  • 用于调试和改进的错误跟踪信息

隐私与选择退出:

  • 默认禁用遥测,但可以通过设置 DT_MCP_ENABLE_TELEMETRY=true 启用
  • 不会跟踪 Dynatrace 环境中的敏感数据
  • 仅收集匿名使用统计信息和错误信息
  • 使用统计信息和错误数据会传输到 Dynatrace 的分析端点

配置选项:

  • DT_MCP_ENABLE_TELEMETRY(布尔值,默认值:false)- 启用遥测
  • DT_MCP_TELEMETRY_APPLICATION_ID(字符串,默认值:dynatrace-managed-mcp)- 用于跟踪的应用程序 ID
  • DT_MCP_TELEMETRY_ENDPOINT_URL(字符串,默认值:Dynatrace 端点)- OpenKit 端点 URL
  • DT_MCP_TELEMETRY_DEVICE_ID(字符串,默认值:自动生成)- 用于跟踪的设备标识符

补充文档

MCP 服务用法
  • API 令牌作用域 - 包含可用工具、这些工具调用的端点以及正确访问这些端点所需的 API 令牌作用域的信息表格
  • 架构 - 详细展示在 stdio 或 http 模式下使用 MCP 服务时 Dynatrace 环境架构的图表
  • 环境变量 - 有关可用环境变量的详细信息
  • 规则文件 - 为 AI 助手确定规则,确保顺畅使用 Managed 集群
开发
  • 变更日志格式 - 为开发者提供的编写一致且结构清晰的变更日志的说明
  • 开发 - 有关运行项目及其内容的一般信息

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。