Monitor services, manage incidents and status pages in Statuser.cloud from your AI assistant.
io.github.statuser-cloud/mcp (MCP) Server
The io.github.statuser-cloud/mcp MCP server connects an AI assistant to Statuser.cloud to monitor services, manage incidents, and work with status pages. It enables these operational workflows directly through the server’s interface, based on the services configured in Statuser.cloud.
🛠️ Key Features
Monitor services via Statuser.cloud
Manage incidents in Statuser.cloud
Access or manage status pages
🚀 Use Cases
Service monitoring from an AI assistant
Incident management workflows
Keeping status pages up to date during events
⚡ Developer Benefits
Integrates Statuser.cloud operational functions into an MCP server
Centralizes status and incident management for assistant-driven operations
⚠️ Limitations
Available details are limited to monitoring, incident management, and status pages; no additional tools, authentication details, or capabilities are provided.
MCP-сервер для управления Statuser из ИИ-клиента — Claude Code, Cursor, VS Code, Windsurf, Claude Desktop и любого другого, который поддерживает Model Context Protocol.
С ним ассистент работает с вашим аккаунтом Statuser напрямую: смотрит состояние серверов, разбирает инциденты, публикует обновления на страницах статуса, настраивает уведомления. Всё это поверх публичного API Statuser с авторизацией по API-ключу.
Подключить сервер можно двумя способами, инструменты в обоих одни и те же:
По адресуhttps://mcp.statuser.cloud — ничего не нужно устанавливать: клиент ходит на наш сервер с вашим ключом в заголовке.
Локально через npx -y @statuser/mcp — сервер работает на вашей машине, нужен Node.js.
Что внутри
Мониторинг сервисов. Список серверов, их статусы, графики проверок и heartbeat-событий, история изменений DNS, добавление и редактирование серверов, постановка на паузу и тестовые уведомления.
Инциденты. Подробная карточка с диагностикой и таймингами по каждой локации, AI-саммари, PDF-отчёт, комментарии с вложениями.
Страницы статуса. Создание и настройка, управление группами и серверами, публикация инцидент-отчётов и плановых работ с таймлайном обновлений.
Уведомления. Правила нотификаций по типам подписок (email, Telegram, MAX), управление вебхуками, добавление и подтверждение email-каналов.
Аккаунт и проекты. Профиль, тариф и фичи, режим отпуска, 2FA, привязки Telegram и MAX, история действий, проекты.
NOTE
MCP-сервер обращается к API от имени аккаунта-владельца ключа. Все ограничения тарифа сохраняются — например, AI-саммари и кастомный домен будут доступны только если они включены в вашем плане. Сверяйтесь с инструментом current_plan_get.
С флагом --scope user сервер будет доступен во всех проектах, с --scope project — запишется в .mcp.json проекта. Файл с ключом не коммитьте в репозиторий.
Cursor
В ~/.cursor/mcp.json — для всех проектов, или в .cursor/mcp.json — для одного:
В mcp_config.json — в актуальных версиях это ~/.config/devin/mcp_config.json, в Windows %APPDATA%\devin\mcp_config.json. У удалённого сервера поле называется serverUrl, а не url:
Подойдёт любой клиент, который подключается к удалённому MCP-серверу по Streamable HTTP и умеет передавать заголовок: укажите адрес и заголовок из таблицы выше. Устаревший транспорт SSE сервер не поддерживает.
Сервер опубликован в официальном реестре MCP как io.github.statuser-cloud/mcp: клиенты, которые берут серверы оттуда, найдут его сами и спросят только ключ.
Что стоит знать
Клиенты, которые умеют только OAuth, пока не подключатся. ChatGPT и пользовательские коннекторы Claude Desktop и claude.ai не передают собственный API-ключ в заголовке. Для Claude Desktop есть локальный запуск.
Группы инструментов выбираются параметром в адресе: https://mcp.statuser.cloud/?toolsets=monitors,incidents. Значения те же, что в таблице групп.
Изменения данных подтверждаются в каждом вызове аргументом confirm: true: переменной STATUSER_ALLOW_WRITE, как при локальном запуске, здесь нет. Подробнее — в разделе Защита от случайных изменений.
Локальные файлы недоступны: сервер работает не на вашей машине. incident_comment_upload_file и поле attached_local_files у incident_comment_create есть только при локальном запуске; вложения по готовым ссылкам работают.
Лимиты те же, что у API, но считаются на ключ, а не на адрес. После 30 запросов с неверным ключом за 10 минут адрес получает 429 до конца окна.
Ключ уходит на наш сервер так же, как при обращении к API напрямую. MCP-сервер его не сохраняет и не пишет в логи; действия видны в истории действий аккаунта от имени ключа.
Локальный запуск через npx
Запускается через npx -y @statuser/mcp — глобально устанавливать ничего не нужно, Docker тоже не требуется. Нужен Node.js 18.17 или новее. Единственный обязательный параметр — переменная окружения STATUSER_API_KEY.
В один клик
Для клиентов с поддержкой MCP-deeplink установка укладывается в нажатие кнопки. Клиент откроется, попросит API-ключ и сам сохранит конфиг.
Перед установкой создайте API-ключ в панели управления Statuser — клиент попросит его в момент установки. Кнопка для Cursor подставит плейсхолдер API_KEY_HERE; замените его на свой ключ в форме, которую откроет Cursor.
Для Claude Desktop, Claude Code, Windsurf, Zed и других клиентов автоустановки пока нет — там нужен ручной конфиг ниже.
Claude Desktop
Откройте Настройки → Developer → Edit Config и добавьте в claude_desktop_config.json:
Любой клиент с поддержкой MCP принимает один и тот же формат запуска:
command: npx
args: ["-y", "@statuser/mcp"]
env.STATUSER_API_KEY: ваш ключ
Название поля настройки (mcpServers, mcp.servers, experimental.mcp и т.п.) различается между клиентами — сверяйтесь с их документацией.
Настройки
При локальном запуске параметры задаются переменными окружения в блоке env конфига клиента. При подключении по адресу настраивать нечего, кроме ключа в заголовке и групп инструментов в адресе.
Если 1, true или on — инструменты, которые создают, изменяют или удаляют данные, работают без явного подтверждения.
STATUSER_TOOLSETS
нет
all
Список включённых групп инструментов через запятую. Значение all включает все группы.
STATUSER_API_URL
нет
https://api.statuser.cloud
Альтернативный базовый URL. Нужен только если вы проксируете API или работаете со staging-окружением.
Группы инструментов
Больше 80 инструментов разбиты на 8 логических групп. По умолчанию включены все; оставить только нужные можно переменной STATUSER_TOOLSETS при локальном запуске или параметром ?toolsets= в адресе.
Зачем это бывает удобно:
меньше инструментов в контексте — ассистент точнее выбирает подходящий;
меньше токенов в системном промпте клиента;
если ключ имеет доступ ко всему API, а вам нужны только серверы — можно показать ассистенту только их.
Группа
Что включает
Примеры инструментов
account
Профиль, тариф, режим отпуска, 2FA, привязки Telegram и MAX, история действий
// только серверы и инциденты"env":{"STATUSER_API_KEY":"...","STATUSER_TOOLSETS":"monitors,incidents"}// явно все группы — то же самое, что не задавать переменную"env":{"STATUSER_API_KEY":"...","STATUSER_TOOLSETS":"all"}
По адресу — то же самое параметром: https://mcp.statuser.cloud/?toolsets=monitors,incidents.
Если в списке указана неизвестная группа, сервер не запустится и подскажет допустимые значения.
Защита от случайных изменений
API-ключ Statuser даёт полный доступ к аккаунту, поэтому MCP-сервер по умолчанию блокирует все инструменты, которые что-либо создают, изменяют или удаляют. Это защищает от того, чтобы ассистент случайно удалил сервер продакшна или отписал нужного человека от уведомлений.
IMPORTANT
Инструменты только для чтения (*_list, *_get, monitor_get_checks, incident_get_report_pdf и подобные) работают всегда без подтверждения.
При попытке вызвать заблокированный инструмент сервер возвращает осмысленную ошибку с двумя способами разрешить вызов:
Разрешить навсегда в конфиге клиента: "STATUSER_ALLOW_WRITE": "1" в блоке env. Подходит, если вы доверяете ассистенту и заранее очертили его область работы через STATUSER_TOOLSETS.
Разрешить разово в самом запросе: передайте ассистенту явное указание добавить аргумент confirm: true к конкретному вызову. Это удобно, когда основная сессия должна оставаться read-only, но один-два изменения всё-таки нужны.
При подключении по адресу работает только второй способ: переменной окружения у удалённого сервера нет, каждое изменение подтверждается confirm: true.
Под защитой находятся в том числе:
удаление серверов, страниц статуса, комментариев, отчётов и плановых работ;
удаление вебхуков и email-каналов;
постановка серверов на паузу и снятие;
публикация и скрытие страниц статуса;
включение режима отпуска;
отправка тестовых уведомлений.
Инструменты дополнительно помечаются MCP-аннотациями destructiveHint и readOnlyHint. Клиенты, которые их читают, добавляют поверх нашего собственный экран подтверждения.
Инструменты
Полный список с описанием параметров MCP-клиент покажет автоматически при подключении. Ниже — обзор по группам. Условные обозначения: ✏️ — инструмент изменяет данные, ⚠️ — действие необратимо.
account — 13 инструментов
Инструмент
Что делает
Изменяет данные
account_get
Профиль текущего аккаунта
account_update
Изменить имя, часовой пояс или флаг отображения AI-ассистента
✏️
current_plan_get
Текущий тариф со всеми возможностями и лимитами
plan_list
Публичный каталог тарифов
holiday_mode_get
Статус режима отпуска
holiday_mode_set
Включить режим отпуска до указанной даты или выключить
✏️
two_factor_info
Сведения о текущем втором факторе и доступных методах
telegram_linked_list
Привязанные Telegram-аккаунты и чаты
telegram_set_topic
Привязать топик в Telegram-группе для уведомлений или снять привязку
✏️
max_linked_list
Привязанные аккаунты и групповые чаты MAX
max_get_link
Получить ссылки для привязки MAX — личного чата или групповой
max_unlink
Отвязать MAX-аккаунт
✏️
max_set_2fa_account
Сменить MAX-аккаунт, на который приходят коды второго фактора
✏️
projects — 7 инструментов
Инструмент
Что делает
Изменяет данные
project_list
Проекты аккаунта — с них начинается работа с областями
project_create
Завести проект; лимит зависит от тарифа
✏️
project_update
Переименовать проект
✏️
project_delete
Удалить проект, перенеся его содержимое в другой
✏️ ⚠️
project_reorder
Задать порядок проектов в панели
✏️
project_channel_list
Каналы аккаунта и их положение в этом проекте
project_channel_set
Включить или выключить канал в проекте
✏️
Проект — область внутри аккаунта: ему принадлежат серверы, страницы статуса и правила уведомлений о мониторинге. Каналы связи, тариф и API-ключи остаются общими. Вызовы без project_id читают весь аккаунт, а создают в самом старом проекте — так работали интеграции до появления проектов, и это поведение сохранено.
monitors — 10 инструментов
Инструмент
Что делает
Изменяет данные
monitor_list
Список всех серверов аккаунта
monitor_get
Полная карточка одного сервера
monitor_create
Добавить новый сервер — тип проверки ping, http, keyword, tcp, dns или heartbeat
✏️
monitor_update
Частичное обновление настроек сервера
✏️
monitor_pause
Поставить проверки на паузу или возобновить (action: pause или unpause)
✏️
monitor_delete
Удалить сервер вместе со всей историей
⚠️
monitor_test_notify
Отправить тестовое уведомление по всем настроенным каналам
✏️
monitor_get_checks
Агрегированные результаты проверок для графиков uptime и latency
monitor_get_heartbeat_events
События heartbeat для серверов с protocol: heartbeat
monitor_get_dns_history
История изменений DNS-записей для серверов с protocol: dns
incidents — 7 инструментов
Инструмент
Что делает
Изменяет данные
incident_list
Инциденты по всему аккаунту или по конкретному серверу
incident_get
Подробная карточка с диагностикой — скриншот, replay, ping/nmap/mtr/traceroute, тайминги
incident_get_events
Хронологическая лента событий — изменения статуса, уведомления, комментарии, скриншот и сетевая диагностика
incident_get_server
Связанный с инцидентом сервер одним запросом
incident_generate_ai_summary
Сгенерировать или вернуть закэшированное AI-саммари инцидента
✏️
incident_rate_ai_summary
Поставить оценку AI-саммари — positive или negative
✏️
incident_get_report_pdf
Скачать PDF-отчёт по инциденту — возвращается в виде Base64
incident_delete
Безвозвратно удалить закрытый инцидент со всей диагностикой — аптайм пересчитается вверх
✏️
incident-comments — 5 инструментов
Инструмент
Что делает
Изменяет данные
incident_comment_list
Все комментарии к инциденту
incident_comment_create
Создать комментарий с текстом и вложениями — при локальном запуске можно передать пути к файлам, сервер загрузит их сам
✏️
incident_comment_update
Отредактировать текст или список вложений
✏️
incident_comment_delete
Удалить комментарий и все его файлы
⚠️
incident_comment_upload_file
Загрузить локальный файл для использования как вложение — только при локальном запуске
✏️
status-pages — 12 инструментов
Инструмент
Что делает
Изменяет данные
status_page_list
Все страницы статуса аккаунта
status_page_get
Полная конфигурация одной страницы
status_page_check_slug
Проверка, свободен ли slug
status_page_check_domain
Проверка свободного кастомного домена и правильности CNAME-записи
status_page_create
Создать страницу статуса
✏️
status_page_update
Частично обновить настройки
✏️
status_page_set_groups
Полностью заменить структуру групп и список серверов на странице
✏️
status_page_publish
Опубликовать (published) или скрыть (unpublished) страницу
✏️
status_page_delete
Удалить страницу
⚠️
status_page_subscriber_list
Подписчики страницы (емейл, статус, даты) и сводка с лимитом
status_page_subscriber_export
Экспорт подписчиков в CSV
status_page_subscriber_delete
Удалить подписчика
⚠️
status-page-reports — 14 инструментов
Инцидент-отчёты:
Инструмент
Что делает
Изменяет данные
status_page_incident_report_list
Все опубликованные отчёты на странице
status_page_incident_report_publish
Опубликовать новый отчёт со стартовым сообщением и статусами влияния на каждый сервер
✏️
status_page_incident_report_update
Изменить поля отчёта — заголовок, время начала
✏️
status_page_incident_report_update_add
Добавить сообщение в таймлайн с новыми статусами серверов
✏️
status_page_incident_report_update_edit
Отредактировать текст одного сообщения
✏️
status_page_incident_report_update_delete
Удалить сообщение из таймлайна. Первичное сообщение удалить нельзя
⚠️
status_page_incident_report_delete
Удалить отчёт целиком
⚠️
Плановые работы:
Инструмент
Что делает
Изменяет данные
status_page_maintenance_list
Все запланированные работы на странице
status_page_maintenance_schedule
Запланировать работы — окно времени и список затронутых сервисов
✏️
status_page_maintenance_update
Изменить поля записи о работах
✏️
status_page_maintenance_update_add
Добавить сообщение в таймлайн
✏️
status_page_maintenance_update_edit
Отредактировать текст одного сообщения
✏️
status_page_maintenance_update_delete
Удалить сообщение из таймлайна. Первичное сообщение удалить нельзя
⚠️
status_page_maintenance_delete
Удалить запись о работах целиком
⚠️
notifications — 11 инструментов
Вебхуки:
Инструмент
Что делает
Изменяет данные
webhook_list
Все вебхуки аккаунта
webhook_create
Создать вебхук с подписками (service_alerts, ssl_alerts и т.д.) и опциональным секретом
✏️
webhook_update
Частично обновить вебхук
✏️
webhook_delete
Удалить вебхук
⚠️
webhook_test
Отправить тестовый запрос в вебхук
✏️
Правила нотификаций — email, telegram, max для каждого типа подписки:
Инструмент
Что делает
Изменяет данные
notification_rule_list
Текущая матрица правил; project_id выбирает проект для типов о мониторинге
notification_rule_set
Включить или выключить каналы для одного типа подписки — в проекте или в аккаунте
✏️
Email-каналы:
Инструмент
Что делает
Изменяет данные
notification_email_list
Все email-адреса аккаунта со статусом подтверждения
notification_email_add
Добавить адрес и отправить на него код подтверждения
✏️
notification_email_confirm
Подтвердить адрес кодом из письма
✏️
notification_email_resend
Повторно отправить код подтверждения
✏️
notification_email_remove
Удалить адрес из списка
⚠️
Примеры запросов к ассистенту
Несколько фраз, которые ассистент сможет выполнить сразу после установки:
«Поставь на паузу сервер staging-db до конца дня.»
«Возьми последний инцидент на api.example.com и сгенерируй по нему AI-саммари. Потом скачай PDF-отчёт с секциями ai_summary и diagnostics.»
«Опубликуй на странице статуса prod отчёт об инциденте: заголовок Расследуем повышенную задержку API, затронуты api-1 и api-2 со статусом degraded, стартовое сообщение про повышенный p95 на API-слое.»
«Запланируй плановые работы на странице статуса prod: завтра с 02:00 до 04:00 МСК, описание Обновление БД, затронуты сервисы api и worker.»
«Заведи вебхук Slack prod на https://hooks.slack.com/... с подписками service_alerts и ssl_alerts, подпиши его секретом ….»
«Включи режим отпуска до понедельника, 9 утра.»
Что делать при ошибках
STATUSER_API_KEY is not set — переменная не передана в env MCP-клиента или клиент не был перезапущен после правки конфига. На macOS Claude Desktop иногда требуется полностью выйти через Cmd+Q.
Statuser API 403 — возможность недоступна на вашем тарифе (например, вебхуки, AI-саммари, кастомный домен) или достигнут лимит — серверов, страниц статуса, помесячная квота отчётов. Сверьтесь с инструментом current_plan_get.
Statuser API 429 (too_many_requests) — превышен лимит запросов. Сервер автоматически повторяет запрос один-два раза, дождавшись окончания окна по заголовку ratelimit-reset. Если ошибка повторяется — уменьшите частоту обращений.
Refusing to call ...: this tool performs a write/destructive operation — сработала защита от случайных изменений. Попросите ассистента добавить confirm: true к конкретному вызову; при локальном запуске можно вместо этого установить STATUSER_ALLOW_WRITE=1 в конфиге клиента.
Missing or malformed API key — при подключении по адресу клиент не передал заголовок Authorization: Bearer ваш_ключ или передал его в другом виде. Проверьте, что слово Bearer стоит перед ключом через пробел.
The API key is invalid, expired or revoked — клиент подключается по адресу, но ключ отозван или истёк. Перевыпустите его на statuser.cloud/my/account/api-keys.
Too many requests with an invalid API key from this address — с вашего адреса пришло больше 30 запросов с неверным ключом за 10 минут. Исправьте ключ и подождите столько секунд, сколько указано в заголовке Retry-After.
Клиент не подключается по адресу и получает 405 — он пытается открыть устаревший SSE-поток. Выберите в настройках клиента транспорт Streamable HTTP (часто он называется просто HTTP).
STATUSER_TOOLSETS contains unknown toolsets — опечатка в названии группы. Допустимые значения перечислены в тексте ошибки и в разделе Группы инструментов.
Совместимость
Компонент
Версия
Подключение по адресу
без установки; клиент с Streamable HTTP и заголовками
Node.js
18.17 и новее — только для локального запуска
MCP SDK
@modelcontextprotocol/sdk ≥ 1.0
API Statuser
v1 (https://api.statuser.cloud)
Клиенты
Claude Code, Cursor, VS Code, Windsurf — по адресу и локально; Claude Desktop, Zed — локально
Пакет публикуется как ESM. Если ваш MCP-клиент запускает Node более старой версии — обновите его минимум до 18.17 или подключитесь по адресу.
Обратная связь
Ошибки и предложения — в issues. Об уязвимостях сообщайте приватно — см. SECURITY.md.