Skip to content

statuser-cloud/mcp

Repository files navigation

MCP-сервер Statuser

npm version License: MIT MCP

MCP-сервер для управления Statuser из ИИ-клиента — Claude Desktop, Claude Code, Cursor, Windsurf, VS Code и любого другого, который поддерживает Model Context Protocol.

С ним ассистент умеет работать с вашим аккаунтом Statuser напрямую: смотреть текущее состояние серверов, разбирать инциденты, публиковать обновления на страницах статуса, настраивать уведомления. Всё это поверх публичного API Statuser с авторизацией по API-ключу.

Что внутри

  • Мониторинг сервисов. Список серверов, их статусы, графики проверок и heartbeat-событий, история изменений DNS, добавление и редактирование серверов, постановка на паузу и тестовые уведомления.
  • Инциденты. Подробная карточка с диагностикой и таймингами по каждой локации, AI-саммари, PDF-отчёт, комментарии с вложениями.
  • Страницы статуса. Создание и настройка, управление группами и серверами, публикация инцидент-отчётов и плановых работ с таймлайном обновлений.
  • Уведомления. Правила нотификаций по типам подписок (email, Telegram, MAX), управление вебхуками, добавление и подтверждение email-каналов.
  • Аккаунт. Профиль, тариф и фичи, режим отпуска, 2FA, привязки Telegram и MAX.

Note

MCP-сервер обращается к API от имени аккаунта-владельца ключа. Все ограничения тарифа сохраняются — например, AI-саммари и кастомный домен будут доступны только если они включены в вашем плане. Сверяйтесь с инструментом current_plan_get.

Содержание

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

  1. Войдите в личный кабинет Statuser и создайте API-ключ.
  2. Добавьте сервер в конфиг вашего MCP-клиента — примеры ниже.
  3. Перезапустите клиент. Инструменты появятся под именем statuser.

Запускается через npx -y @statuser/mcp — глобально устанавливать ничего не нужно, Docker тоже не требуется. Единственный обязательный параметр — переменная окружения STATUSER_API_KEY.

Установка

В один клик

Для клиентов с поддержкой MCP-deeplink установка укладывается в нажатие кнопки. Клиент откроется, попросит API-ключ и сам сохранит конфиг.

Установить в VS Code Установить в VS Code Insiders Установить в Cursor

Перед установкой создайте API-ключ в личном кабинете Statuser — клиент попросит его в момент установки. Кнопка для Cursor подставит плейсхолдер API_KEY_HERE; замените его на свой ключ в форме, которую откроет Cursor.

Для Claude Desktop, Claude Code, Windsurf, Zed и других клиентов автоустановки пока нет — там нужен ручной конфиг ниже.

Claude Desktop

Откройте Настройки → Developer → Edit Config и добавьте в claude_desktop_config.json:

{
  "mcpServers": {
    "statuser": {
      "command": "npx",
      "args": ["-y", "@statuser/mcp"],
      "env": {
        "STATUSER_API_KEY": "ваш_ключ"
      }
    }
  }
}

После сохранения полностью закройте Claude Desktop (Cmd/Ctrl + Q) и откройте заново — простого закрытия окна недостаточно.

Claude Code

В корне проекта создайте .mcp.json:

{
  "mcpServers": {
    "statuser": {
      "command": "npx",
      "args": ["-y", "@statuser/mcp"],
      "env": {
        "STATUSER_API_KEY": "ваш_ключ"
      }
    }
  }
}

Или одной командой:

claude mcp add statuser --env STATUSER_API_KEY=ваш_ключ -- npx -y @statuser/mcp

Cursor

Самый быстрый путь — кнопка «Установить в Cursor» выше. Если нужно вручную, Настройки → MCP → Add new server:

{
  "mcpServers": {
    "statuser": {
      "command": "npx",
      "args": ["-y", "@statuser/mcp"],
      "env": {
        "STATUSER_API_KEY": "ваш_ключ"
      }
    }
  }
}

VS Code (GitHub Copilot Chat и другие MCP-расширения)

Самый быстрый путь — кнопка «Установить в VS Code» выше. Если нужно вручную, Настройки → MCP servers → Add:

{
  "statuser": {
    "command": "npx",
    "args": ["-y", "@statuser/mcp"],
    "env": {
      "STATUSER_API_KEY": "ваш_ключ"
    }
  }
}
Windsurf, Zed и другие MCP-клиенты

Любой клиент с поддержкой MCP принимает один и тот же формат запуска:

  • command: npx
  • args: ["-y", "@statuser/mcp"]
  • env.STATUSER_API_KEY: ваш ключ

Название поля настройки (mcpServers, mcp.servers, experimental.mcp и т.п.) различается между клиентами — сверяйтесь с их документацией.

Настройки

Все параметры задаются через переменные окружения в блоке env конфига клиента.

Переменная Обязательно По умолчанию Описание
STATUSER_API_KEY да API-ключ от statuser.cloud/my/account/api-keys. Без него сервер не запустится.
STATUSER_ALLOW_WRITE нет 0 Если 1, true или on — инструменты, которые создают, изменяют или удаляют данные, работают без явного подтверждения.
STATUSER_TOOLSETS нет all Список включённых групп инструментов через запятую. Значение all включает все группы.
STATUSER_API_URL нет https://api.statuser.cloud Альтернативный базовый URL. Нужен только если вы проксируете API или работаете со staging-окружением.

Группы инструментов

Около 70 инструментов разбиты на 7 логических групп. По умолчанию включены все, но через STATUSER_TOOLSETS=... можно оставить только нужные.

Зачем это бывает удобно:

  • меньше инструментов в контексте — ассистент точнее выбирает подходящий;
  • меньше токенов в системном промпте клиента;
  • если ключ имеет доступ ко всему API, а вам нужны только серверы — можно показать ассистенту только их.
Группа Что включает Примеры инструментов
account Профиль, тариф, режим отпуска, 2FA, привязки Telegram и MAX account_get, current_plan_get, holiday_mode_set, telegram_linked_list, max_get_link
monitors Серверы, их проверки, heartbeat-события, история изменений DNS monitor_list, monitor_create, monitor_pause, monitor_get_checks, monitor_get_dns_history
incidents Инциденты, события, AI-саммари, PDF-отчёт incident_list, incident_get, incident_get_events, incident_generate_ai_summary, incident_get_report_pdf
incident-comments Комментарии к инцидентам с вложениями incident_comment_create, incident_comment_upload_file, incident_comment_delete
status-pages Страницы статуса, группы, серверы, домены, slug status_page_list, status_page_create, status_page_set_groups, status_page_publish
status-page-reports Публикация инцидент-отчётов и плановых работ с таймлайном обновлений status_page_incident_report_publish, status_page_maintenance_schedule, ..._update_add
notifications Правила нотификаций, вебхуки, email-каналы notification_rule_set, webhook_create, notification_email_add, notification_email_confirm

Примеры значения:

// только серверы и инциденты
"env": { "STATUSER_API_KEY": "...", "STATUSER_TOOLSETS": "monitors,incidents" }

// явно все группы — то же самое, что не задавать переменную
"env": { "STATUSER_API_KEY": "...", "STATUSER_TOOLSETS": "all" }

Если в списке указана неизвестная группа, сервер не запустится и подскажет допустимые значения.

Защита от случайных изменений

API-ключ Statuser даёт полный доступ к аккаунту, поэтому MCP-сервер по умолчанию блокирует все инструменты, которые что-либо создают, изменяют или удаляют. Это защищает от того, чтобы ассистент случайно удалил сервер продакшна или отписал нужного человека от уведомлений.

Important

Инструменты только для чтения (*_list, *_get, monitor_get_checks, incident_get_report_pdf и подобные) работают всегда без подтверждения.

При попытке вызвать заблокированный инструмент сервер возвращает осмысленную ошибку с двумя способами разрешить вызов:

  1. Разрешить навсегда в конфиге клиента: "STATUSER_ALLOW_WRITE": "1" в блоке env. Подходит, если вы доверяете ассистенту и заранее очертили его область работы через STATUSER_TOOLSETS.
  2. Разрешить разово в самом запросе: передайте ассистенту явное указание добавить аргумент confirm: true к конкретному вызову. Это удобно, когда основная сессия должна оставаться read-only, но один-два изменения всё-таки нужны.

Под защитой находятся в том числе:

  • удаление серверов, страниц статуса, комментариев, отчётов и плановых работ;
  • удаление вебхуков и 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-аккаунт, на который приходят коды второго фактора ✏️
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-comments — 5 инструментов
Инструмент Что делает Изменяет данные
incident_comment_list Все комментарии к инциденту
incident_comment_create Создать комментарий с текстом и вложениями — можно передать локальные пути файлов, сервер загрузит их сам ✏️
incident_comment_update Отредактировать текст или список вложений ✏️
incident_comment_delete Удалить комментарий и все его файлы ⚠️
incident_comment_upload_file Загрузить локальный файл для использования как вложение ✏️
status-pages — 9 инструментов
Инструмент Что делает Изменяет данные
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-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 Текущая матрица правил
notification_rule_set Включить или выключить каналы для одного типа подписки ✏️

Email-каналы:

Инструмент Что делает Изменяет данные
notification_email_list Все email-адреса аккаунта со статусом подтверждения
notification_email_add Добавить адрес и отправить на него код подтверждения ✏️
notification_email_confirm Подтвердить адрес кодом из письма ✏️
notification_email_resend Повторно отправить код подтверждения ✏️
notification_email_remove Удалить адрес из списка ⚠️

Примеры запросов к ассистенту

Несколько фраз, которые ассистент сможет выполнить сразу после установки:

  • «Покажи все серверы, которые сейчас не отвечают.»
  • «Заведи сервер nightly-export с проверкой heartbeat, интервал 12 часов, grace 10 минут.»
  • «Поставь на паузу сервер 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 401 — ключ невалиден или отозван. Перевыпустите его на statuser.cloud/my/account/api-keys.

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 — сработала защита от случайных изменений. Установите STATUSER_ALLOW_WRITE=1 в конфиге клиента или попросите ассистента добавить confirm: true к конкретному вызову.

STATUSER_TOOLSETS contains unknown toolsets — опечатка в названии группы. Допустимые значения перечислены в тексте ошибки и в разделе Группы инструментов.

Совместимость

Компонент Версия
Node.js 18.17 и новее
MCP SDK @modelcontextprotocol/sdk1.0
API Statuser v1 (https://api.statuser.cloud)
Клиенты Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Zed и др.

Пакет публикуется как ESM. Если ваш MCP-клиент запускает Node более старой версии — обновите его минимум до 18.17.

Обратная связь

Ошибки и предложения — в issues.

Общие вопросы по API — в документации Statuser или на info@statuser.cloud.

Лицензия

MIT — см. LICENSE.

About

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

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors