关于 dynatrace-managed-mcp
dynatrace-managed-mcp 是面向 Dynatrace Managed(自托管)部署的本地 MCP 服务,让 AI 助手访问日志、事件、指标、问题和安全问题等可观测性数据。它支持同时查询多个 Managed 环境,并提供本地 stdio 与远程 HTTP 两种运行模式。
主要功能
- 01查询问题、安全问题与实体关系
- 02检索日志并支持内容与时间过滤
- 03基于 V2 Metrics API 分析指标
- 04查看 SLO、错误预算与系统事件
- 05支持配置多个 Managed 环境
适用场景
- 01对历史可观测性数据进行故障排查
- 02在 AI 助手中调查事件与异常影响范围
- 03检查漏洞与多云合规相关的安全问题
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露问题、日志、指标、SLO 等查询工具,底层调用 Dynatrace Managed 的 API。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @dynatrace-oss/dynatrace-managed-mcp-serverDT_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+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Dynatrace Managed MCP 服务
使用场景
- 您的 Dynatrace Managed 环境是主要的可观测性系统,包含所有实时数据;或
- 已从 Dynatrace Managed 环境迁移到 Dynatrace Saas 环境,但历史可观测性数据未迁移,仍可通过 Dynatrace Managed 环境访问。 Dynatrace Managed MCP 用于访问历史数据,另一个独立的 Dynatrace SaaS MCP 用于访问实时和较新的数据。
Dynatrace Managed MCP 的具体使用场景包括:
- 实时可观测性 - 获取生产级数据,以便及早发现问题并主动监控
- 上下文调试 - 根据受监控的异常、日志和异常情况提供完整上下文,修复问题
- 安全洞察 - 获取详细的漏洞分析和安全问题跟踪。这包括通过基于证据的调查评估多云合规性。
- 自然语言查询 - 将查询映射到 MCP 工具的使用(即 API 查询),并为下一步操作提供指导
- 多阶段事件调查 - 系统地评估影响并排查问题
- 多环境支持 - 通过同一 MCP 服务查询多个 Dynatrace Managed 环境
功能
本地 _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 的基本 URL | https://dmz123.dynatrace-managed.com |
| environmentId | 是 | Managed 环境的 ID | 01234567-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-2 小时),而不是查询大范围历史数据。
- 使用特定筛选条件尽可能缩小查询范围,例如指定实体 ID 的实体选择器。
- 如果使用多个环境,请在适用时明确指定要查询的环境。如果一次查询多个环境,请注意返回给大模型的数据量,例如,从 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)- 用于跟踪的应用程序 IDDT_MCP_TELEMETRY_ENDPOINT_URL(字符串,默认值:Dynatrace 端点)- OpenKit 端点 URLDT_MCP_TELEMETRY_DEVICE_ID(字符串,默认值:自动生成)- 用于跟踪的设备标识符
补充文档
MCP 服务用法
- API 令牌作用域 - 包含可用工具、这些工具调用的端点以及正确访问这些端点所需的 API 令牌作用域的信息表格
- 架构 - 详细展示在 stdio 或 http 模式下使用 MCP 服务时 Dynatrace 环境架构的图表
- 环境变量 - 有关可用环境变量的详细信息
- 规则文件 - 为 AI 助手确定规则,确保顺畅使用 Managed 集群
开发
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。