Официальный 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
Требования
Чтобы получить 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илиsseMCP-эндпоинт открыт без аутентификации, и каждый запрос использует единственный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).