API VEGA

Официальный MCP-сервер PagerDuty

Локальный MCP-сервер PagerDuty (Model Context Protocol), который предоставляет инструменты для взаимодействия с вашей учетной записьей PagerDuty, позволяя управлять инцидентами, сервисами, расписаниями, оркестрацией событий и многое другое напрямую из клиента с поддержкой MCP.

Встроенные приложения MCP (опыт разработчика)

Интерактивные UI на React для управления инцидентами PagerDuty, встроенные напрямую в сервер MCP на Python для бесшовной интеграции с IDE. Управляйте полным жизненным циклом инцидентов, не покидая IDE.

Доступные приложения:

1. Incident Command Center 🚨

Полное управление жизненным циклом инцидентов прямо из вашей IDE:

  • Поток инцидентов в реальном времени с автопродлением обновления

  • Подробная информация об инциденте: временная линия, заметки, оповещения, изменения

  • Быстрые действия: признать, решить, эскалировать

  • Дetection похожих инцидентов на базе AI

  • Осмотр оповещений с сырыми данными

Использование в VS Code: Спросите Claude: Show me the incident command center

2. On-Call Manager 📅

Управление расписаниями с CRUD-переопределениями и мастерами охвата:

  • Просмотр текущих смен дежурств по расписаниям

  • Создание, редактирование и удаление переопределений расписания

  • Управление политикой эскалации через модальное UI

Использование в VS Code: Спросите Claude: Show me the on-call manager

3. On-Call Compensation Report 💰

Метрики дежурств по каждому пользователю с контролем соответствия правилам:

  • Отработанные часы, количество инцидентов, показатели прерываний

  • Разделение на рабочие часы и внерабочие часы

  • Статус соответствия требованиям EU Working Time Directive

  • Оценка справедливости между участниками

  • Экспорт в CSV

Использование в VS Code: Спросите Claude: Show me the oncall compensation report

4. Service Dependency Graph 🕸️

Интерактивный граф взаимосвязей и зависимостей между сервисами:

  • Визуализация ориентированного графа

  • Боковая панель влияния, показывающая вышестоящие/нижестоящие сервисы

Использование в VS Code: Спросите Claude: Show me the service dependency graph

5. Onboarding Wizard 🧙

Пошаговая настройка аккаунта PagerDuty:

  • Создание команды и onboarding пользователей

  • Настройка расписания с поддержкой часового пояса

  • Настройка политики эскаляции и конфигурации сервисов

  • Настройка AIOps / группировки оповещений

  • Настройка рабочего процесса инцидентов

Использование в VS Code: Открыть мастер настройки onboarding

Архитектура:

  • ✅ Нативная интеграция с VS Code (ресурсы MCP)

  • ✅ Один процесс, без управления HTTP-сервером

  • ✅ Прямой доступ ко всем инструментам MCP PagerDuty

  • ✅ Простое развёртывание: uv run pagerduty-mcp

Требования

  • asdf-vm установлен.

  • uv установлен глобально.

  • PagerDuty User API Token.

Чтобы получить PagerDuty User API Token, выполните следующие шаги:

Перейдите в настройки пользователя. Нажмите на значок вашего профиля, затем выберите My Profile и далее User Settings.

Для учетных записей Freemium разрешения на генерацию User API tokens ограничены ролью пользователя, как указано здесь.

  • В настройках пользователя найдите раздел API Access.

  • Нажмите кнопку Create API User Token и следуйте подсказкам для генерации нового токена.

  • Скопируйте полученный токен и храните его в надежном месте. Этот токен нужен для конфигурации MCP-сервера.

Использование PagerDuty User API Token подпадает под условия PagerDuty Developer Agreement.

Использование с MCP-клиентами

Cursor Integration

Вы можете настроить этот MCP-сервер напрямую в файле settings.json Cursor следующим образом:

Откройте настройки Cursor (Cursor Settings > Tools > Add MCP, или Cmd+, на Mac, или Ctrl+, на Windows/Linux).

Добавьте следующую конфигурацию:

{
  "mcpServers": {
    "pagerduty-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "pagerduty-mcp",
        "--enable-write-tools"
        // Этот флаг включает операции записи на MCP Server, позволяя создавать инциденты, переопределения расписаний и многое другое
      ],
      "env": {
        "PAGERDUTY_USER_API_KEY": "${input:pagerduty-api-key}"
      }
    }
  }
}

Интеграция с VS Code

Вы можете настроить этот MCP-сервер напрямую в файле settings.json Visual Studio Code, чтобы VS Code управлял жизненным циклом сервера.

Откройте настройки VS Code (File > Preferences > Settings, или Cmd+, на Mac, или Ctrl+, на Windows/Linux).

Поиск по слову "mcp" и убедитесь, что под Features > Chat отмечено "Mcp: Enabled".

Нажмите "Edit in settings.json" в разделе "Mcp > Discovery: Servers".

Добавьте следующую конфигурацию:

{
    "mcp": {
        "inputs": [
            {
                "type": "promptString",
                "id": "pagerduty-api-key",
                "description": "PagerDuty API Key",
                "password": true
            }
        ],
        "servers": {
            "pagerduty-mcp": {
                "type": "stdio",
                "command": "uvx",
                "args": [
                    "pagerduty-mcp",
                    "--enable-write-tools"
                    // Этот флаг включает операции записи на MCP Server, позволяя создавать инциденты, переопределения расписаний и многое другое
                ],
                "env": {
                    "PAGERDUTY_USER_API_KEY": "${input:pagerduty-api-key}",
                    "PAGERDUTY_API_HOST": "https://api.pagerduty.com"
                    // Если ваша учетная запись PagerDuty находится в EU, обновите API-хост на https://api.eu.pagerduty.com
                }
            }
        }
    }
}
Пробуем в VS Code Chat (Agent)
  • Убедитесь, что MCP включен в настройках VS Code (Features > Chat > "Mcp: Enabled").

  • Настройте сервер как описано выше.

  • Откройте представление Chat в VS Code (View > Chat).

  • Убедитесь, что выбран режим Agent. В представлении чата можно включать или выключать конкретные инструменты, нажав на иконку 🛠️.

  • Введите команду, например: Show me the latest incident или List my event orchestrations, чтобы взаимодействовать с вашей учетной записью PagerDuty через MCP-сервер.

  • Вы можете запускать, останавливать и управлять MCP-серверами через палитру команд (Cmd+Shift+P/Ctrl+Shift+P) и поиск по MCP: List Servers. Убедитесь, что сервер запущен перед отправкой команд. При необходимости можно попробовать перезапустить сервер.

Claude Desktop Integration

Вы можете настроить этот MCP-сервер для работы с Claude Desktop, добавив его в конфигурационный файл Claude.

Найдите файл конфигурации Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Создайте или отредактируйте файл конфигурации и добавьте следующее:

{
  "mcpServers": {
    "pagerduty-mcp": {
      "command": "uvx",
      "args": [
        "pagerduty-mcp",
        "--enable-write-tools"
      ],
      "env": {
        "PAGERDUTY_USER_API_KEY": "your-pagerduty-api-key-here",
        "PAGERDUTY_API_HOST": "https://api.pagerduty.com"
      }
    }
  }
}

Замените заполнители:

Замените /path/to/your/mcp-server-directory на полный путь к директории, где вы клонировали MCP-сервер (например, /Users/yourname/code/pagerduty-mcp)

  • Замените your-pagerduty-api-key-here на ваш фактический PagerDuty User API Token

  • Если ваша учетная запись PagerDuty находится в EU, обновите API-хост на https://api.eu.pagerduty.com

Полностью перезапустите Claude Desktop, чтобы изменения вступили в силу.

Проверьте интеграцию — начните разговор с Claude и спросите что-нибудь вроде: «Show me my latest PagerDuty incidents» или «List my event orchestrations», чтобы убедиться, что MCP-сервер работает.

Примечание по безопасности: в отличие от безопасных полей ввода VS Code, Claude Desktop требует хранить API-ключ непосредственно в файле конфигурации. Убедитесь, что у файла есть соответствующие разрешения (только для чтения вашим пользовательским аккаунтом) и учтите риски хранения учетных данных в открытом виде.

Запуск с Docker

MCP-сервер PagerDuty можно запустить в контейнере Docker, обеспечивая изолированное и портативное развёртывание. Docker-образ использует транспорт stdio для MCP.

Требования

  • Docker установлен

  • PagerDuty User API Token (см. Требования)

Быстрый старт

Построить Docker-образ:

docker build -t pagerduty-mcp:latest .

Запуск в режиме только для чтения (по умолчанию):

docker run -i --rm \
  -e PAGERDUTY_USER_API_KEY="your-api-key-here" \
  pagerduty-mcp:latest

Запуск с включенными инструментами записи:

docker run -i --rm \
  -e PAGERDUTY_USER_API_KEY="your-api-key-here" \
  pagerduty-mcp:latest --enable-write-tools

Для региона EU:

docker run -i --rm \
  -e PAGERDUTY_USER_API_KEY="your-api-key-here" \
  -e PAGERDUTY_API_HOST="https://api.eu.pagerduty.com" \
  pagerduty-mcp:latest

Использование с MCP-клиентами через Docker

Чтобы интегрировать Docker-контейнер с MCP-клиентами, можно использовать Docker в качестве команды:

Пример Claude Desktop:

{
  "mcpServers": {
    "pagerduty-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "PAGERDUTY_USER_API_KEY=your-api-key-here",
        "pagerduty-mcp:latest"
      ]
    }
  }
}

Примечание: Docker-контейнер использует транспорт stdio, что делает его совместимым с MCP-клиентами, ожидающими коммуникацию через стандартный ввод/вывод. Убедитесь, что образ собран командой docker build -t pagerduty-mcp:latest .

Режимы транспорта

Сервер поддерживает три транспорта MCP, выбираемых флагом --transport:

ТранспортСценарий использованияПо умолчанию
stdioЛокальные клиенты, запускаемые как подпроцессы (Cursor, VS Code).
streamable-httpДолговременные удалённые/серверные развёртывания. MCP endpoint на /mcp.
sseНаследованный транспорт Server-Sent Events.

Для HTTP-основ транспорта параметры --host (по умолчанию 127.0.0.1) и --port (по умолчанию 8000) управляют адресом прослушивания. Их можно задать также через переменные окружения MCP_HOST и MCP_PORT. Примечание: MCP_PORT всегда должен быть допустимым целым числом — CLI определяет тип при запуске, независимо от --transport; диапазон (1–65535) применяется только для HTTP-транспорта.

ВНИМАНИЕ — HTTP-транспорты не имеют встроенной аутентификации. При запуске streamable-http или sse MCP-эндпоинт открыт без аутентификации, и каждый запрос использует единственный PAGERDUTY_USER_API_KEY, с которым был запущен сервер. Любой клиент, имеющий доступ к хосту/порту, может вызывать инструменты — включая инструменты записи, если установлен --enable-write-tools, со всеми привилегиями вашего токена.

Привычные настройки по умолчанию — привязка к адресу 127.0.0.1 (только локальная петля). Привязывайте к 0.0.0.0 только через аутентифицируемый обратный прокси / API-шлюз (например, oauth2-proxy, mTLS) или в доверенной сети. Не открывайте напрямую к небезопасным сетям.

Пример: запуск в виде удалённого streamable-http сервера

:8000/mcp

⚠️ Только используйте --host 0.0.0.0 за аутентифицированным прокси или в доверенной сети.">```

pagerduty-mcp --transport streamable-http --host 0.0.0.0 --port 8000

MCP endpoint: http://<your-machine-ip>:8000/mcp

⚠️ Только используйте --host 0.0.0.0 за аутентифицированным прокси или в доверенной сети.


**Использование через переменные окружения:**

MCP_HOST=0.0.0.0 MCP_PORT=8000 pagerduty-mcp --transport streamable-http

⚠️ Только используйте MCP_HOST=0.0.0.0 за аутентифицированным прокси или в доверенной сети.


**Docker:**

docker run -d -p 8000:8000
-e PAGERDUTY_USER_API_KEY="your-api-key-here"
-e MCP_HOST=0.0.0.0
-e MCP_PORT=8000
pagerduty-mcp:latest
--transport streamable-http

⚠️ Только используйте MCP_HOST=0.0.0.0 за аутентифицированным прокси или в доверенной сети.


По умолчанию остаётся `stdio`, чтобы локальные интеграции не пострадали.

## Настройка локально

- **Клонировать репозиторий**

- **Установить плагины asdf**

asdf plugin add python asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git asdf plugin add uv


- **Установить версии инструментов** с помощью `asdf`:

asdf install


- **Создать виртуальное окружение и установить зависимости** с помощью `uv` (после того как `asdf` настроил корректные версии Python и `uv`):

uv sync


- **Убедитесь, что `uv` доступен глобально**. MCP-сервер запускается из разных мест, поэтому `uv` должен быть доступен глобально. Следуйте [официальной документации](https://docs.astral.sh/uv/getting-started/installation/).

> Подсказка: возможно, потребуется перезапустить терминал и/или VS Code.

-
Запуск локально

Чтобы запустить склонированный PagerDuty MCP Server, обновите конфигурацию на использование `uv` вместо `uvx`.

"pagerduty-mcp": { "type": "stdio", "command": "uv", "args": [ "run", "--directory", "/path/to/your/mcp-server-directory", // Замените на полный путь к директории, где вы клонировали MCP-сервер, например "/Users/yourname/code/mcp-server", "python", "-m", "pagerduty_mcp", "--enable-write-tools" // Этот флаг включает операции записи на MCP Server, позволяя вам создавать инциденты, переопределения расписаний и многое другое ], "env": { "PAGERDUTY_USER_API_KEY": "${input:pagerduty-api-key}", "PAGERDUTY_API_HOST": "https://api.pagerduty.com" // Если ваша учетная запись PagerDuty находится в EU, обновите API-хост на https://api.eu.pagerduty.com } }


## Конфигурация

Сервер MCP настраивается через переменные окружения:

| Переменная окружения | Обязательна | По умолчанию | Описание |
| --- | --- | --- | --- |
| PAGERDUTY_USER_API_KEY | Да | — | Ваш PagerDuty User API Token. |
| PAGERDUTY_API_HOST | Нет | https://api.pagerduty.com | Базовый URL PagerDuty API. При учетной записи в EU используйте https://api.eu.pagerduty.com. |

## Доступные инструменты и ресурсы

Этот раздел описывает инструменты, предоставляемые сервером MCP PagerDuty. Они разделены на те, которые только читают данные, и те, которые могут изменять данные в вашей учетной записи PagerDuty.

> Важно: по умолчанию MCP-сервер открывает только инструменты только для чтения. Чтобы включить инструменты, которые могут изменять вашу учетную запись PagerDuty (инструменты записи), необходимо явно запускать сервер с флагом `--enable-write-tools`. Это помогает предотвратить непреднамеренные изменения ваших данных.

| Инструмент | Область | Описание | Только для чтения |
| --- | --- | --- | --- |
| create_alert_grouping_setting | Настройка группировки оповещений | Создает новую настройку группировки оповещений | ❌ |
| delete_alert_grouping_setting | Настройка группировки оповещений | Удаляет настройку группировки оповещений | ❌ |
| get_alert_grouping_setting | Настройка группировки оповещений | Получает конкретную настройку группировки оповещений | ✅ |
| list_alert_grouping_settings | Настройка группировки оповещений | Перечень настроек группировки с фильтром | ✅ |
| update_alert_grouping_setting | Настройка группировки оповещений | Обновляет существующую настройку группировки | ❌ |
| get_incident_metrics_all | Аналитика | Получает агрегированные метрики инцидентов по всем сервисам | ✅ |
| get_incident_metrics_by_service | Аналитика | Получает метрики инцидентов по сервисам | ✅ |
| get_incident_metrics_by_team | Аналитика | Получает метрики инцидентов по командам | ✅ |
| get_responder_load_metrics | Аналитика | Получает метрики нагрузки ответчика | ✅ |
| get_responder_metrics | Аналитика | Получает метрики эффективности ответчиков | ✅ |
| get_business_service_dependencies | Бизнес-сервисы | Получает зависимости конкретного бизнес-сервиса | ✅ |
| get_technical_service_dependencies | Бизнес-сервисы | Получает зависимости технических сервисов для бизнес-сервиса | ✅ |
| list_business_services | Бизнес-сервисы | Перечисляет бизнес-сервисы | ✅ |
| get_change_event | Изменения | Получает конкретное событие изменения | ✅ |
| list_change_events | Изменения | Перечисляет события изменений с фильтрами | ✅ |
| list_incident_change_events | Изменения | Перечисляет события изменений, связанные с инцидентом | ✅ |
| list_service_change_events | Изменения | Перечисляет события изменений для сервиса | ✅ |
| get_event_orchestration | Оркестрации событий | Получает конкретную оркестрацию события | ✅ |
| get_event_orchestration_global | Оркестрации событий | Получает глобальную конфигурацию оркестрации события | ✅ |
| get_event_orchestration_router | Оркестрации событий | Получает конфигурацию маршрутизатора оркестрации | ✅ |
| get_event_orchestration_service | Оркестрации событий | Получает конфигурацию оркестрации сервиса | ✅ |
| list_event_orchestrations | Оркестрации событий | Перечисляет оркестрации событий с фильтрами | ✅ |
| update_event_orchestration_router | Оркестрации событий | Обновляет конфигурацию маршрутизатора оркестрации | ❌ |
| append_event_orchestration_router_rule | Оркестрации событий | Добавляет новое правило маршрутизации в маршрутизатор оркестрации | ❌ |
| create_escalation_policy | Политика эскалации | Создает новую политику эскалации | ❌ |
| get_escalation_policy | Политика эскалации | Получает конкретную политику эскалации | ✅ |
| list_escalation_policies | Политика эскалации | Перечисляет политики эскалации | ✅ |
| update_escalation_policy | Политика эскалации | Обновляет существующую политику эскалации | ❌ |
| add_note_to_incident | Инциденты | Добавляет заметку к инциденту | ❌ |
| add_responders | Инциденты | Добавляет ответчиков к инциденту | ❌ |
| create_incident | Инциденты | Создает новый инцидент | ❌ |
| get_alert_from_incident | Инциденты | Получает конкретное оповещение из инцидента | ✅ |
| get_incident | Инциденты | Получает конкретный инцидент | ✅ |
| get_outlier_incident | Инциденты | Получает информацию об аномальном инциденте | ✅ |
| get_past_incidents | Инциденты | Получает прошлые инциденты, связанные с конкретным инцидентом | ✅ |
| get_related_incidents | Инциденты | Получает связанные инциденты для конкретного инцидента | ✅ |
| list_alerts_from_incident | Инциденты | Перечисляет все оповещения по конкретному инциденту с пагинацией | ✅ |
| list_incident_notes | Инциденты | Перечисляет все заметки по конкретному инциденту | ✅ |
| list_incidents | Инциденты | Перечисляет инциденты | ✅ |
| manage_incidents | Инциденты | Обновляет статус, срочность, назначение или уровень эскалации | ❌ |
| get_incident_workflow | Рабочие процессы инцидентов | Получает конкретный рабочий процесс инцидента | ✅ |
| list_incident_workflows | Рабочие процессы инцидентов | Перечисляет рабочие процессы инцидентов с фильтрами | ✅ |
| start_incident_workflow | Рабочие процессы инцидентов | Запускает экземпляр рабочего процесса для инцидента | ❌ |
| get_log_entry | Записи журналов | Получает конкретную запись журнала по ID | ✅ |
| list_log_entries | Записи журналов | Перечисляет все записи журнала по учётной записи с фильтром по времени | ✅ |
| add_team_member | Команды | Добавляет пользователя в команду с конкретной ролью | ❌ |
| create_team | Команды | Создает новую команду | ❌ |
| delete_team | Команды | Удаляет команду | ❌ |
| get_team | Команды | Получает конкретную команду | ✅ |
| list_team_members | Команды | Перечисляет участников команды | ✅ |
| list_teams | Команды | Перечисляет команды | ✅ |
| remove_team_member | Команды | Удаляет пользователя из команды | ❌ |
| update_team | Команды | Обновляет существующую команду | ❌ |
| get_user_data | Пользователи | Получает данные текущего пользователя | ✅ |
| list_users | Пользователи | Перечисляет пользователей в учетной записи PagerDuty | ✅ |
| list_oncalls | Дежурство | Перечисляет расписания дежурств | ✅ |
| list_priorities | Приоритеты | Перечисляет приоритеты, определённые в учётной записи | ✅ |
| create_schedule_override | Расписания | Создает переопределение для расписания | ❌ |
| get_schedule | Расписания | Получает конкретное расписание | ✅ |
| list_schedule_users | Расписания | Перечисляет пользователей в расписании | ✅ |
| list_schedules | Расписания | Перечисляет расписания | ✅ |
| create_schedule | Расписания | Создает новое расписание дежурств | ❌ |
| update_schedule | Расписания | Обновляет существующее расписание | ❌ |
| create_service | Сервисы | Создает новый сервис | ❌ |
| get_service | Сервисы | Получает конкретный сервис | ✅ |
| list_services | Сервисы | Перечисляет сервисы | ✅ |
| update_service | Сервисы | Обновляет существующий сервис | ❌ |
| create_status_page_post | Страницы статуса | Создает новую запись (инцидент или обслуживанию) на странице статуса | ❌ |
| create_status_page_post_update | Страницы статуса | Добавляет новое обновление к существующей записи на странице статуса | ❌ |
| get_status_page_post | Страница статуса | Получает детали конкретной записи на странице статуса | ✅ |
| list_status_page_impacts | Страницы статуса | Перечисляет доступные уровни влияния для страницы статуса | ✅ |
| list_status_page_post_updates | Страницы статуса | Перечисляет все обновления для конкретной записи на странице статуса | ✅ |
| list_status_page_severities | Страницы статуса | Перечисляет доступные уровни тяжести для страницы статуса | ✅ |
| list_status_page_statuses | Страницы статуса | Перечисляет доступные статусы для страницы статуса | ✅ |
| list_status_pages | Страницы статуса | Перечисляет все страницы статуса с опциональной фильтрацией | ✅ |
| create_webhook_subscription | Подписки на вебхуки | Создает новую подписку на вебхук (возвращает секрет подписи) | ❌ |
| delete_webhook_subscription | Подписки на вебхуки | Удаляет подписку на вебхук | ❌ |
| get_webhook_subscription | Подписки на вебхуки | Получает конкретную подписку на вебхук | ✅ |
| list_webhook_subscriptions | Подписки на вебхуки | Перечисляет подписки на вебхуки с фильтрацией по типу | ✅ |
| update_webhook_subscription | Подписки на вебхуки | Обновляет существующую подписку на вебхук | ❌ |
| get_extension_schema | Схемы расширений | Получает конкретную схему расширения | ✅ |
| list_extension_schemas | Схемы расширений | Перечисляет доступные схемы расширений (поставщики) | ✅ |

## Поддержка

Сервер MCP PagerDuty — проект с открытым исходным кодом, поэтому мы предлагаем только поддержку сообщества. Если нужна помощь, откройте issue на [GitHub](https://github.com/pagerduty/pagerduty-mcp-server) или на [сообществе PagerDuty](https://community.pagerduty.com/).

## Вклад

Если вы хотите внести вклад в этот проект, смотрите наши [направления по вкладу](https://github.com/pagerduty/pagerduty-mcp-server/blob/main/CONTRIBUTING.md).