Dynatrace Managed MCP Server
Сценарии использования
-
Ваша среда (или среды) Dynatrace Managed является основной системой Observability и содержит все актуальные данные; или
-
Выполнена миграция из среды Dynatrace Managed в среду Dynatrace SaaS, однако исторические данные Observability не были перенесены и по-прежнему доступны через среду Dynatrace Managed.
Dynatrace Managed MCP используется для доступа к историческим данным, а отдельный Dynatrace SaaS MCP — для доступа к актуальным и более свежим данным.
Ключевые сценарии использования Dynatrace Managed MCP:
-
Observability в реальном времени — получение данных производственного уровня для раннего обнаружения проблем и проактивного мониторинга
-
Контекстная отладка — устранение неполадок с полным контекстом: отслеживаемые исключения, логи и аномалии
-
Аналитика безопасности — детальный анализ уязвимостей и отслеживание проблем безопасности, включая оценку соответствия требованиям в мультиоблачных средах с расследованием на основе фактических данных
-
Запросы на естественном языке — запросы преобразуются в вызовы инструментов MCP, а значит, в API-запросы, с подсказками по дальнейшим шагам
-
Многоэтапное расследование инцидентов — систематическая оценка воздействия и диагностика неполадок
-
Поддержка нескольких сред — выполнение запросов к нескольким средам Dynatrace Managed через один и тот же MCP-сервер
Возможности
-
Проблемы — получение списка проблем и их подробностей по вашим сервисам (например, Kubernetes)
-
Безопасность — получение списка проблем безопасности и подробностей об уязвимостях
-
Сущности — получение дополнительной информации об отслеживаемой сущности, включая связи между сущностями
-
SLO — получение списка SLO (Service Level Objective) и их деталей, включая результаты оценки и бюджеты ошибок
-
Отслеживание событий — получение списка системных событий и их деталей
-
Анализ логов — поиск и фильтрация логов с помощью расширенных запросов по содержимому и времени
-
Анализ метрик — запрос и анализ метрик производительности с помощью V2 Metrics API
Локальный Dynatrace Managed MCP-сервер позволяет AI-ассистентам взаимодействовать с одним или несколькими самостоятельно развёрнутыми экземплярами Dynatrace Managed, делая данные Observability доступными непосредственно в вашем рабочем процессе с поддержкой AI.
Этот MCP-сервер поддерживает два режима:
-
Локальный режим: запускается на вашей машине и подходит для разработки и тестирования.
-
Удалённый режим: подключение по HTTP/SSE для распределённых конфигураций и сценариев, близких к production.
Совет
Этот MCP-сервер предназначен специально для развёртываний Dynatrace Managed (self-hosted).
Для сред Dynatrace SaaS используйте Dynatrace MCP.
Примечание
Этот проект с открытым исходным кодом поддерживается сообществом.
Для запросов новых функций, вопросов и получения помощи используйте GitHub Issues.
Быстрый старт в режиме stdio (локальный режим)
Вы можете подключить этот MCP-сервер к своему AI-ассистенту, например VSCode, Claude, Cursor, Kiro, Windsurf, ChatGPT или GitHub Copilot.
Для запуска этого MCP-сервера необходимо настроить четыре вещи:
-
API-токен Dynatrace Managed
-
Файл конфигурации: файл
dt-config.yamlилиdt-config.json, определяющий список сред, которые вы планируете использовать -
Файл конфигурации подключения MCP-сервера: локальная конфигурация MCP, зависящая от используемого вами инструмента
-
Укажите в
DT_CONFIG_FILEпуть к вашему файлуdt-config.yamlилиdt-config.jsonв окружении MCP-сервера.
API-токен Dynatrace Managed
Сведения о создании API-токенов в развёртываниях Managed приведены в документации Dynatrace Managed.
Для полной функциональности API-токен должен включать следующие scope (области доступа):
-
Доступ к лентам проблем и событий, метрикам и топологии (
DataExport) -
Чтение сущностей (
entities.read) -
Чтение событий (
events.read) -
Чтение логов (
logs.read) -
Чтение метрик (
metrics.read) -
Чтение проблем (
problems.read) -
Чтение проблем безопасности (
securityProblems.read) -
Чтение SLO (
slo.read)
Файл конфигурации
Параметры конфигурации
| Параметр | Обязательный | Описание | Пример значения |
|---|---|---|---|
| apiEndpointUrl | Да | Базовый URL API кластера Dynatrace Managed | https://dmz123.dynatrace-managed.com |
| environmentId | Да | Идентификатор среды Managed | 01234567-89ab-cdef-abcd-ef0123456789 |
| alias | Да | Удобочитаемое имя среды | MyEnvironment |
| apiToken | Только в режиме stdio | API-токен кластера с необходимыми scope, созданный по инструкции выше | 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 или если вы предпочитаете переменные окружения, задайте DT_ENVIRONMENT_CONFIGS со строкой JSON — либо в файле .env, либо непосредственно в файле конфигурации подключения MCP-сервера.
DT_ENVIRONMENT_CONFIGS='[{"apiEndpointUrl":"https://api.example.com/","environmentId":"abc-123","alias":"production","apiToken":"dt0s01.ABCDEFGHIJK0123"}]'
Файл конфигурации подключения MCP-сервера
Чтобы подключиться к MCP-серверу, настройте MCP-подключение в своём AI-ассистенте.
Рекомендуем всегда настраивать его для текущего рабочего пространства, а не глобально.
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, описанной ниже, и добавляет skill, охватывающий выбор среды и селекторы сущностей. Плагин опубликован в маркетплейсе плагинов сообщества 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 — он также подходит для файла .mcp.json в Claude Code.
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"
}
}
}
}
Эту конфигурацию следует сохранить в /.kiro/settings/mcp.json либо в пользовательских настройках (~/.kiro/settings/mcp.json).
Google Gemini CLI
Прямое использование CLI gemini (рекомендуется):
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-сервера:
Запуск в режиме 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 rebinding. При запуске с --host 0.0.0.0 (или --host ::) по умолчанию принимаются только имена хостов loopback, поэтому удалённые клиенты будут получать 403 Forbidden, пока вы не зададите DT_MCP_ALLOWED_HOSTS с используемыми ими именами хостов. См. раздел «Защита от DNS rebinding».
Файл конфигурации подключения 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-сервер выполняет API-запросы к средам Dynatrace Managed. Он спроектирован с расчётом на эффективное использование (например, за счёт ограничения размера ответов), однако следует соблюдать осторожность, чтобы не перегружать среды Dynatrace Managed объёмными запросами.
Рекомендации:
-
Используйте узкие временные диапазоны (например, 1–2 часа) вместо масштабных исторических выборок.
-
Используйте конкретные фильтры, чтобы максимально сузить область запросов, — например, селекторы сущностей с указанием ID сущности.
-
Если используется несколько сред, по возможности указывайте, какую именно среду нужно опросить. При одновременном запросе к нескольким средам учитывайте объём данных, который будет возвращён LLM: например, топ-10 проблем из 2 сред = 20 проблем, тогда как топ-10 проблем из 10 сред = 100 проблем.
Защита от DNS rebinding (режим HTTP)
DT_MCP_ALLOWED_HOSTS(необязательно): разделённый запятыми список имён хостов, которые сервер принимает в заголовкеHost. Порты игнорируются, поэтому указывайте только имена хостов (для IPv6 используйте форму в квадратных скобках, например[::1]).
Если эта переменная не задана, список разрешённых имён формируется на основе --host: к привязанному адресу добавляются localhost, 127.0.0.1 и [::1]. Запросы, у которых заголовок Host отсутствует в списке, отклоняются с ошибкой 403 Forbidden; то же относится к запросам, у которых заголовок Origin содержит имя хоста вне списка. Именно это защищает от атак DNS rebinding.
Проверка активна всегда: не существует конфигурации, в которой она бы незаметно пропускалась.
Важно
При привязке к адресу с wildcard (--host 0.0.0.0 или --host ::) привязанный адрес не позволяет определить, какие имена хостов являются легитимными, поэтому сервер принимает только имена хостов loopback и записывает предупреждение в журнал при запуске. В этом режиме блокируется DNS rebinding, но вместе с ним блокируются и все удалённые клиенты. Если вы запускаете сервер в контейнере или открываете доступ к нему по сети, обязательно задайте 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 заменяет сформированный список, а не расширяет его, поэтому, если вам также нужен локальный доступ, явно укажите имена loopback:
DT_MCP_ALLOWED_HOSTS=mcp.internal.example.com,localhost,127.0.0.1
Устранение неполадок
Проблемы с аутентификацией
В большинстве случаев проблемы с аутентификацией вызваны отсутствующими scope или недействительными токенами. Убедитесь, что добавлены все необходимые scope, перечисленные выше.
При возникновении ошибок можно попросить AI-ассистента показать точную ошибку, возвращённую MCP. При проблемах с запуском проверьте журналы AI-ассистента.
Также можно попробовать запустить MCP напрямую и посмотреть, сообщает ли он об ошибках при старте:
```bash
npx @dynatrace-oss/dynatrace-managed-mcp-server@latest
### Лимит размера заголовков слишком мал
Заголовок `X-Dynatrace-Tokens` растёт с увеличением числа сред. Каждая запись занимает примерно `alias=dt0s01.ABCDEFGHIJK0123` (~110 символов). В Node.js по умолчанию действует ограничение на размер HTTP-заголовков — **16 КБ**, чего хватает примерно на 140–150 сред, после чего запросы отклоняются.
Если сред требуется больше, увеличьте лимит при запуске сервера с помощью флага `--max-http-header-size`:
node --max-http-header-size=65536 ./dist/index.js --http
Если перед MCP-сервером работает **обратный прокси** (например, nginx), прокси также применяет собственный лимит. По умолчанию в nginx это 8 КБ (`large_client_header_buffers`) — примерно 70 сред. Увеличьте значение в конфигурации nginx:
large_client_header_buffers 4 32k;
## Телеметрия
Dynatrace MCP Server отправляет телеметрические данные через Dynatrace OpenKit, чтобы помочь улучшить продукт. Это включает:
- События запуска сервера
- Использование инструментов (какие инструменты вызываются, успех/неудача, длительность выполнения)
- Отслеживание ошибок для отладки и улучшения
**Приватность и отказ от телеметрии:**
- Телеметрия **отключена по умолчанию**, но её можно включить, задав `DT_MCP_ENABLE_TELEMETRY=true`
- Конфиденциальные данные из вашей среды Dynatrace не отслеживаются
- Собираются только анонимная статистика использования и сведения об ошибках
- Статистика использования и данные об ошибках передаются на аналитический endpoint Dynatrace
**Параметры конфигурации:**
- `DT_MCP_ENABLE_TELEMETRY` (boolean, по умолчанию: `false`) — включает телеметрию
- `DT_MCP_TELEMETRY_APPLICATION_ID` (string, по умолчанию: `dynatrace-managed-mcp`) — идентификатор приложения (Application ID) для отслеживания
- `DT_MCP_TELEMETRY_ENDPOINT_URL` (string, по умолчанию: endpoint Dynatrace) — URL endpoint OpenKit
- `DT_MCP_TELEMETRY_DEVICE_ID` (string, по умолчанию: генерируется автоматически) — идентификатор устройства для отслеживания
## Дополнительная документация
### Использование MCP-сервера
- [Области действия API-токенов](https://github.com/dynatrace-oss/dynatrace-managed-mcp/blob/main/docs/api_token_scopes.md) — таблица со сведениями о доступных инструментах, вызываемых ими эндпоинтах и необходимых областях действия API-токенов для корректного доступа к ним
- [Архитектура](https://github.com/dynatrace-oss/dynatrace-managed-mcp/blob/main/docs/architecture.md) — подробные диаграммы, отображающие архитектуру окружения Dynatrace при работе с MCP-сервером в режиме stdio или http
- [Переменные окружения](https://github.com/dynatrace-oss/dynatrace-managed-mcp/blob/main/docs/environment_variables.md) — подробные сведения о доступных переменных окружения
- [Файл правил](https://github.com/dynatrace-oss/dynatrace-managed-mcp/blob/main/docs/rule_file.md) — задайте правила для вашего AI-ассистента, чтобы обеспечить бесперебойную работу с кластером Managed
### Разработка
- [Формат changelog](https://github.com/dynatrace-oss/dynatrace-managed-mcp/blob/main/docs/CHANGELOG.format.md) — инструкция для разработчиков о том, как вести единообразный и структурированный changelog
- [Разработка](https://github.com/dynatrace-oss/dynatrace-managed-mcp/blob/main/docs/DEVELOPMENT.md) — общие сведения о запуске проекта и его содержимом