Token导航 LogoToken导航TokenDH.com
DEMO MCP DT logo
AI代理未说明官方级别未说明来源级核验

DEMO MCP DT

MCP Server

一款AI驱动的可观测性助手,结合GitHub Copilot LLMs、Dynatrace MCP、dtctl CLI和Dynatrace领域技能,用于智能、证据驱动的Dynatrace环境调查和管理。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
可观测性DevopsTypeScriptClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

garciaba

提供方

garciaba

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

动态跟踪观察性助手

AI驱动的可观察性助手,结合了 GitHub Copilot LLMs, 动态跟踪MCP (模型上下文协议), dtctl命令行界面,以及 Dynatrace域技能 将其整合为一个单一的web应用程序,用于Dynatrace环境的智能、证据驱动的调查和管理。

它的作用

助理充当 Dynatrace的代理AI副驾驶。它可以:

  • 查询实时可观察性数据 --通过Dynatrace MCP服务器实时获取日志、指标、跟踪、问题和实体拓扑。
  • 执行DQL查询 --使用来自领域技能的内置语法指导生成和运行Dynatrace查询语言查询。
  • 管理Dynatrace配置 --通过dtctl创建、修改和检查工作流、仪表板、笔记本、SLO和设置。
  • 分析上传的上下文 --摄取配置文件、日志或数据导出,并与实时遥测一起对其进行推理。
  • 分类事件 --遵循结构化工作流程(问题→ 影响→ 痕迹→ 根本原因→ 补救),并在每个步骤调用工具。
  • 提供领域专业知识 --加载涵盖13个Dynatrace域(DQL、服务、前端、跟踪、主机、Kubernetes、AWS、日志、问题、仪表板、笔记本电脑和实体迁移)的按需技能包,每个都有详细的参考文件。

LLM在一个 代理工具调用循环 (每条消息最多10轮),自主决定调用哪些工具——用于实时数据的MCP、用于配置的dtctl和用于领域知识的技能——然后将结果合成为实时流式传输的连贯响应。

______________________________________________________________________

建筑

┌─────────────────────────────────────────────────────────────────────┐
│                        Frontend (React + Vite + Tailwind)           │
│  ┌────────────┐  ┌────────────────┐  ┌───────────────────────────┐ │
│  │ Left Panel  │  │  Chat Panel    │  │  Right Panel              │ │
│  │ • Prompts   │  │  • Messages    │  │  • dtctl status & login   │ │
│  │ • Context   │  │  • SSE stream  │  │  • Telemetry config       │ │
│  │   files     │  │  • Tool calls  │  │  • MCP connection         │ │
│  │ • Model     │  │  • Markdown    │  │  • Model selection        │ │
│  │   selector  │  │  • MCP log     │  │                           │ │
│  └────────────┘  └────────────────┘  └───────────────────────────┘ │
│                      Zustand (auth + chat stores)                   │
└──────────────────────────┬──────────────────────────────────────────┘
                           │ HTTP + SSE
┌──────────────────────────┴──────────────────────────────────────────┐
│                       Backend (Fastify + TypeScript)                │
│                                                                     │
│  Routes                        Services                             │
│  ├─ /api/auth/*    GitHub OAuth ├─ Session store (in-memory)        │
│  ├─ /api/chat/stream  SSE chat  ├─ MCP client (JSON-RPC 2.0)        │
│  ├─ /api/context/* file upload  ├─ MCP context builder (96k budget) │
│  ├─ /api/dynatrace/* MCP proxy  ├─ dtctl service (binary mgmt)      │
│  ├─ /api/dtctl/*   CLI mgmt    ├─ Skills service (13 skills)        │
│  ├─ /api/models    model list   └─ System instructions engine       │
│  └─ /api/telemetry OTel config                                      │ 
│                                                                     │
│  ┌────────────────── Agentic Tool Loop (max 10 rounds) ──────────┐  │
│  │  LLM ←→ load_dynatrace_skill ←→ dtctl_run ←→ MCP tools        │   │
│  │       ←→ load_dynatrace_skill_reference ←→ dtctl_context_info │  │
│  └───────────────────────────────────────────────────────────────┘  │
│                                                                     │
│  OpenTelemetry (GenAI semconv → OTLP → Dynatrace)                   │
└─────────────────────────────────────────────────────────────────────┘
         │                          │                      │
         ▼                          ▼                      ▼
  GitHub Copilot API       Dynatrace MCP Server       dtctl binary
  (LLM inference)          (live observability)       (config mgmt)

双平面设计

平面通道用途示例
运行时Dynatrace MCP实时可观察性查询和分析获取日志、列表问题、查询指标、跟踪跨度
管理dtctl CLI配置更改和资源清册创建仪表板、编辑工作流、应用设置、列出笔记本

LLM的系统指令对 路线决策图 因此,它会自动为每个任务选择正确的平面。

______________________________________________________________________

特性

核心聊天

  • 流媒体响应 -来自GitHub Copilot API的实时SSE,带有delta、tool-call和MCP-流量事件
  • 模型选择 -GPT-4o、GPT-4o-Mini、Claude Sonnet 4、o3-Mini(Copilot API动态列表)
  • 代理工具调用 --多轮循环(最多10次迭代),LLM自主调用工具并对结果进行推理
  • Markdown渲染 --完全支持GFM,语法突出显示代码块

Dynatrace MCP集成

  • 连接到任何Dynatrace MCP服务器 --UI中的URL+承载令牌配置
  • 自动工具发现 --MCP工具被列出并注册为LLM函数调用
  • 实时MCP活动日志 --可扩展的每条消息日志,显示发送/接收的工具流量

dtctl CLI集成

  • 自动安装 --一键下载dtctl v0.18.0二进制文件(检测到平台/arch)
  • OAuth登录 --基于浏览器的SSO流,用于在Dynatrace环境中进行身份验证
  • 安全命令执行 --写入操作需要明确确认;防止注射(无分号、管道、回扣)
  • 情境感知 --飞行前检查(dtctl_context_info)在任何状态更改命令之前

Dynatrace域名技能

  • 13领域技能 LLM通过工具调用按需加载:
技能领域
dt-dql-essentialsDQL语法、函数、陷阱、优化
dt-obs-services服务RED指标,特定于运行时的遥测(.NET、Java、Node.js、Python、PHP、Go)
dt-obs-frontendsRUM、Web Vitals、用户会话、移动端、前端错误
dt-obs-tracing分布式跟踪、跨度、故障检测、性能
dt-obs-hosts主机/进程指标——CPU、内存、磁盘、容器
dt-obs-kubernetes集群、Pod、节点、工作负载、存储、网络
dt-obs-awsEC2、RDS、Lambda、ECS/EKS、VPC、成本优化
dt-obs-logs日志查询、过滤、模式分析、相关性
dt-obs-problems问题、RCA、影响分析、问题相关性
dt-app-dashboards仪表板创建、图块、布局、变量
dt-app-notebooks笔记本创建、分区、分析工作流程
dt-migration经典实体→ Smartscape迁移模式
  • 110+参考文件 对于深入的子主题(例如,单个DQL功能类别、特定于运行时的度量、实体迁移模式),可通过以下方式加载 load_dynatrace_skill_reference

上下文管理

  • 文件上传 --JSON、YAML、TXT、CSV、MD、LOG、XML、Python、JS/TS、Dockerfile、.env(最多20个文件,总共12 MB,每个文件5 MB)
  • 智能上下文预算 --96k令牌系统上下文,每个文件截断(60k令牌),预算警告为80%
  • 自定义系统提示 --覆盖或增强默认系统指令

身份验证和安全

  • GitHub OAuth设备流 --不需要重定向URI;非常适合当地发展和示范
  • 8小时课程 --带有httpOnly签名Cookie的内存会话存储
  • 后端代理 -Dynatrace API令牌保持服务器端(从不向浏览器公开)
  • 速率限制 --每个客户端每分钟100个请求
  • 安全标头 --头盔(CSP、HSTS等)+每个环境的CORS
  • 文件验证 --扩展白名单、大小限制、二进制拒绝

可观测性(开放遥测)

  • GenAI语义约定 --每个LLM调用和工具执行都会发出带有输入/输出令牌、模型、完成原因、工具参数和结果的OTel跨度
  • OTLP导出到Dynatrace --跟踪和指标发送到任何与OTLP兼容的后端
  • 运行时重新配置 --在不重新启动服务器的情况下,从UI更改OTLP终结点和令牌
  • 连接测试 --在提交配置更改之前验证OTLP连接

预定义提示

按类别组织的一键提示:

类别提示
Dynatrace列出活动问题、主机运行状况概述、服务性能、最近的错误日志、SLO状态、最近的部署
上下文分析上传的上下文,解释配置
dtctl检查上下文、列出工作流、列出仪表板、健康检查(医生)、DQL查询、列出笔记本

______________________________________________________________________

先决条件

  • Node.js 20+
  • GitHub OAuth应用程序在此处创建一个
  • GitHub Copilot许可证 对GitHub帐户进行身份验证
  • Dynatrace环境 (可选)--用于MCP和dtctl集成

______________________________________________________________________

快速开始

1.克隆和配置

git clone 
cd DEMO_MCP_DT
cp .env.example .env

编辑 .env 使用您的凭据:

# Required — GitHub OAuth App
GITHUB_CLIENT_ID=your_client_id
GITHUB_CLIENT_SECRET=your_client_secret

# Optional — OpenTelemetry export to Dynatrace
OTEL_EXPORTER_OTLP_ENDPOINT=https://.live.dynatrace.com/api/v2/otlp
OTEL_EXPORTER_OTLP_HEADERS=Authorization=Api-Token 

2.安装依赖项

npm run install:all

3.开始开发

npm run dev
服务URL
前端(Vite)http://localhost:5173
后端(禁食)http://localhost:3001

4.身份验证

  1. 在浏览器中打开前端。
  2. 点击 使用GitHub登录 --显示设备代码。
  3. 打开GitHub验证URL,输入代码并授权。
  4. 应用程序轮询令牌并开始会话。

5.连接到Dynatrace(可选)

通过MCP服务器:

  1. 在右侧面板中,输入您的Dynatrace MCP服务器URL和承载令牌。
  2. 点击 连接 --可用工具会自动列出。

通过dtctl:

  1. 在右侧面板中,单击 安装dtctl (自动下载二进制文件)。
  2. 点击 登录 并输入您的Dynatrace环境URL。
  3. 完成基于浏览器的SSO流程。

______________________________________________________________________

GitHub OAuth设置

  1. 首选
  2. 创建新的OAuth应用程序:

- 应用程序名称:动态跟踪观察性助手 - 主页网址: http://localhost:5173 - 授权回调URL: http://localhost:5173

  1. 复制 客户端ID客户端密钥 进入你的 .env 文件。

______________________________________________________________________

环境变量

变量默认值描述
GITHUB_CLIENT_ID必修的。 GitHub OAuth应用程序客户端ID
GITHUB_CLIENT_SECRET必修的。 GitHub OAuth应用程序客户端密码
PORT3001服务器侦听端口
NODE_ENVdevelopmentdevelopmentproduction
LOG_LEVELinfoPino日志级别(debug, info, warn, error)
COOKIE_SECRET*自动生成*Cookie签名密钥(未设置时随机)
ALLOWED_ORIGIN--CORS生产来源(例如。, https://myapp.example.com)
OTEL_SERVICE_NAMEdynatrace-observability-assistantOpenTetry服务名称
OTEL_SERVICE_VERSION1.0.0OpenTetry服务版本
OTEL_EXPORTER_OTLP_ENDPOINT--OTLP端点(例如。, https://.live.dynatrace.com/api/v2/otlp)
OTEL_EXPORTER_OTLP_HEADERS--OTLP认证头(例如。, Authorization=Api-Token dt0c01...)

______________________________________________________________________

Docker部署

该项目包括一个多阶段的Dockerfile,用于优化生产构建。

构建并运行

docker compose up --build

该应用程序可在 http://localhost:3000.

Docker构建的功能是什么

阶段目的
建造者安装所有依赖项,构建Vite客户端,编译TypeScript服务器
生产仅将生产依赖项+内置工件复制到精简版中 node:20-alpine 图像(约150 MB)

docker-compose.yml

services:
  mcp-chat:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - PORT=3000
      - GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}
      - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}
      - COOKIE_SECRET=${COOKIE_SECRET}
    restart: unless-stopped

生产注意事项

  • 会话存储 --对于多实例部署,用Redis替换内存中的会话存储。
  • 跨域资源共享 --设置 ALLOWED_ORIGIN 到您的生产领域。
  • 秘密 --使用秘密管理器;不要承诺 .env 文件夹。
  • 遥测 --设置 OTEL_EXPORTER_OTLP_ENDPOINTOTEL_EXPORTER_OTLP_HEADERS 用于跟踪/度量导出。

______________________________________________________________________

项目结构

├── client/                          # React frontend (Vite + Tailwind)
│   └── src/
│       ├── components/
│       │   ├── ChatLayout.tsx       # 3-panel layout shell
│       │   ├── ChatPanel.tsx        # Chat messages, SSE consumer, markdown
│       │   ├── LeftPanel.tsx        # Prompts, file uploads, model selector
│       │   ├── RightPanel.tsx       # dtctl, telemetry, MCP config
│       │   └── LoginScreen.tsx      # GitHub device flow UI
│       ├── stores/
│       │   ├── auth.ts             # Authentication state (Zustand)
│       │   └── chat.ts            # Chat, context, MCP, dtctl state (Zustand)
│       └── main.tsx
├── server/                          # Fastify backend (TypeScript)
│   └── src/
│       ├── config/
│       │   └── env.ts              # Environment variable parsing
│       ├── instructions/
│       │   ├── system-instructions.md   # LLM system prompt (routing, safety, workflows)
│       │   └── skills/             # 13 domain skills + 110 reference files
│       │       ├── dt-dql-essentials.md
│       │       ├── dt-dql-essentials/   # 31 DQL reference files
│       │       ├── dt-obs-services.md
│       │       ├── dt-obs-services/     # 7 runtime-specific refs
│       │       ├── ...                  # (one .md + directory per skill)
│       │       └── dt-migration/        # 14 migration reference files
│       ├── routes/
│       │   ├── auth.ts             # GitHub OAuth device flow
│       │   ├── chat.ts             # SSE streaming + agentic tool loop
│       │   ├── context.ts          # File upload/download/budget
│       │   ├── dtctl.ts            # dtctl install/login/exec
│       │   ├── dynatrace.ts        # MCP server connect/tools
│       │   ├── models.ts           # LLM model listing
│       │   └── telemetry.ts        # OTel config management
│       ├── services/
│       │   ├── dtctl.ts            # dtctl binary management + command execution
│       │   ├── dtctl-skill.ts      # System instructions loader
│       │   ├── mcp-client.ts       # MCP JSON-RPC 2.0 client
│       │   ├── mcp-context.ts      # Context aggregation + budget management
│       │   ├── session.ts          # In-memory session store (8h TTL)
│       │   └── skills.ts           # Skill catalog, loader, reference loader
│       ├── telemetry.ts            # OpenTelemetry SDK setup + runtime reconfig
│       ├── semconv.ts              # GenAI semantic convention constants
│       └── index.ts                # Entry point
├── shared/                          # Shared TypeScript types
│   └── src/index.ts                # ChatMessage, ContextPayload, MCPConfig, etc.
├── Dockerfile                       # Multi-stage production build
├── docker-compose.yml
└── package.json                     # Root workspace scripts

______________________________________________________________________

运作原理

代理聊天流

User sends message
       │
       ▼
  Build system context
  (instructions + skills catalog + files + DT data)
       │
       ▼
  Truncate to 96k-token budget
       │
       ▼
  ┌─── Tool loop (up to 10 rounds) ──────────────────┐
  │                                                    │
  │  Send messages + tools → GitHub Copilot API        │
  │       │                                            │
  │       ▼                                            │
  │  Stream response (SSE deltas to browser)           │
  │       │                                            │
  │  finish_reason = tool_calls?                       │
  │       │ YES                    │ NO                │
  │       ▼                        ▼                   │
  │  Dispatch each tool call    Done — send 'done' SSE │
  │  ┌─ load_dynatrace_skill                          │
  │  ├─ load_dynatrace_skill_reference                │
  │  ├─ dtctl_run / dtctl_context_info                │
  │  └─ MCP tool (via JSON-RPC)                       │
  │       │                                            │
  │  Add tool results to messages                      │
  │  Continue loop ───────────────────────────────────┘
  │                                                    │
  └────────────────────────────────────────────────────┘

上下文预算

系统上下文(作为第一条消息发送到LLM)由以下内容组装而成:

  1. 系统指令 (约6k个令牌)--路由规则、安全协议、DQL指南、工作流程、技能目录
  2. 用户系统提示 (可选)--来自上下文面板的自定义说明
  3. 已上传的文件 --每个文件截断为6万个代币,总预算为9.6万个代币
  4. 动态跟踪数据 -来自MCP或上下文API的JSON有效负载

当使用量超过预算的80%时,通过SSE发出警告。

工具调度命令

当LLM发出工具调用时,它们会按照以下优先级进行调度:

  1. load_dynatrace_skill --加载域技能(返回降价内容)
  2. load_dynatrace_skill_reference --加载技能的参考文件
  3. dtctl_run / dtctl_context_info --执行dtctl命令或获取上下文信息
  4. MCP工具 (回退)--通过JSON-RPC转发到连接的Dynatrace MCP服务器

______________________________________________________________________

API终点

身份验证(/api/auth)

方法端点描述
职位/device-code启动GitHub设备流(返回 user_code + verification_uri)
职位/poll-token用户授权后轮询访问令牌
得到/status检查当前会话和用户信息
职位/logout销毁会话

聊天(/api/chat)

方法端点描述
职位/stream与SSE流媒体进行代理聊天(主要端点)

背景(/api/context)

方法端点描述
职位/upload上传上下文文件(多部分,最大5 MB)
得到/files列出上传的文件
删除/files/:name删除特定文件
删除/files清除所有文件
得到/payload获取完整的上下文负载
得到/budget获取上下文使用情况(字节、百分比、文件计数)

动态跟踪MCP(/api/dynatrace)

方法端点描述
职位/connect连接到Dynatrace MCP服务器
职位/tools列出可用的MCP工具
职位/disconnect断开与MCP服务器的连接

dtctl(/api/dtctl)

方法端点描述
得到/status检查dtctl安装、版本、身份验证状态
职位/install自动下载并安装dtctl二进制文件
职位/exec执行dtctl命令
职位/loginOAuth登录到Dynatrace环境
职位/logout注销并删除上下文

型号(/api/models)

方法端点描述
得到/列出可用的GitHub Copilot模型

遥测(/api/telemetry)

方法端点描述
得到/config获取当前OTel配置
职位/config在运行时更新OTel配置
职位/test测试OTLP端点连接

健康

方法端点描述
得到/api/health退货 { status: 'ok', timestamp }

______________________________________________________________________

关键设计决策

决定理由
快车 比Express快2-3倍,内置模式验证,TypeScript优先
上海证券交易所 通过WebSocket单向流媒体更简单,原生浏览器支持
设备流程 auth无需重定向URI即可工作——非常适合本地开发和演示
状态 state最小样板,没有上下文提供者,小捆绑包
后端代理 对于DTneneneba API令牌,保持服务器端,防止浏览器暴露
内存会话足以进行单实例演示;切换到Redis进行生产
按需技能仅在LLM需要时加载——保持系统上下文精简
双平面布线将实时观察(MCP)与配置更改(dtctl)分开
森科尼酒店LLM交互的完全可观察性——令牌使用、工具结果、延迟

______________________________________________________________________

安全

  • GitHub代币 存储在httpOnly签名Cookie中(从不存储在localStorage中)
  • Dynatrace API令牌 代理服务器端(从不发送到浏览器)
  • SSRF保护 在Dynatrace代理上(仅相对路径)
  • 命令注入预防 --dtctl命令根据允许的动词白名单进行解析和验证;分号、管道和倒钩被堵塞
  • 写操作安全 --dtctl写动词需要显式 confirmWrite 旗;上下文已验证(dtctl_context_info)执行前
  • 文件上传验证 --扩展白名单,每个文件限制5 MB,二进制内容拒绝
  • 速率限制 --每个客户端每分钟100个请求
  • 安全标头 --头盔(CSP、X-Content-Type-Options、HSTS等)
  • 跨域资源共享 --仅限于 localhost:5173 正在开发中,可通过以下方式配置 ALLOWED_ORIGIN 生产中

______________________________________________________________________

运行测试

cd server && npm test

目录标签

目录标签

可观测性DevopsTypeScriptClaudeAI助手本地部署Dynatrace自动化

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP