The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Statuser listing page.
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.[!NOTE] MCP-сервер обращается к API от имени аккаунта-владельца ключа. Все ограничения тарифа сохраняются — например, AI-саммари и кастомный домен будут доступны только если они включены в вашем плане. Сверяйтесь с инструментом
current_plan_get.
https://mcp.statuser.cloud с заголовком Authorization: Bearer ваш_ключ; готовые конфиги — ниже.statuser.Если клиент подключает только локальные серверы — например, Claude Desktop, — используйте локальный запуск через npx.
| Параметр | Значение |
|---|---|
| Адрес | https://mcp.statuser.cloud |
| Транспорт | Streamable HTTP |
| Авторизация | заголовок Authorization: Bearer ваш_ключ |
С флагом --scope user сервер будет доступен во всех проектах, с --scope project — запишется в .mcp.json проекта. Файл с ключом не коммитьте в репозиторий.
В ~/.cursor/mcp.json — для всех проектов, или в .cursor/mcp.json — для одного:
В .vscode/mcp.json. VS Code спросит ключ при первом подключении, в самом файле его не будет:
В 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: клиенты, которые берут серверы оттуда, найдут его сами и спросят только ключ.
https://mcp.statuser.cloud/?toolsets=monitors,incidents. Значения те же, что в таблице групп.confirm: true: переменной STATUSER_ALLOW_WRITE, как при локальном запуске, здесь нет. Подробнее — в разделе Защита от случайных изменений.incident_comment_upload_file и поле attached_local_files у incident_comment_create есть только при локальном запуске; вложения по готовым ссылкам работают.429 до конца окна.Запускается через 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 и других клиентов автоустановки пока нет — там нужен ручной конфиг ниже.
Откройте Настройки → Developer → Edit Config и добавьте в claude_desktop_config.json:
После сохранения полностью закройте Claude Desktop (Cmd/Ctrl + Q) и откройте заново — простого закрытия окна недостаточно.
В корне проекта создайте .mcp.json:
Или одной командой:
Самый быстрый путь — кнопка «Установить в Cursor» выше. Если нужно вручную, Настройки → MCP → Add new server:
Самый быстрый путь — кнопка «Установить в VS Code» выше. Если нужно вручную, Настройки → MCP servers → Add:
Любой клиент с поддержкой MCP принимает один и тот же формат запуска:
command: npxargs: ["-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-окружением. |
Больше 80 инструментов разбиты на 8 логических групп. По умолчанию включены все; оставить только нужные можно переменной STATUSER_TOOLSETS при локальном запуске или параметром ?toolsets= в адресе.
Зачем это бывает удобно:
| Группа | Что включает | Примеры инструментов |
|---|---|---|
account | Профиль, тариф, режим отпуска, 2FA, привязки Telegram и MAX, история действий | account_get, current_plan_get, activity_log_list, holiday_mode_set, telegram_linked_list, max_get_link |
projects | Проекты — области внутри аккаунта: свои серверы, страницы статуса и правила уведомлений | project_list, project_create, project_delete, project_channel_list, project_channel_set |
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_delete |
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_subscriber_list |
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 |
Примеры значения:
По адресу — то же самое параметром: 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.
Под защитой находятся в том числе:
Инструменты дополнительно помечаются MCP-аннотациями destructiveHint и readOnlyHint. Клиенты, которые их читают, добавляют поверх нашего собственный экран подтверждения.
Полный список с описанием параметров MCP-клиент покажет автоматически при подключении. Ниже — обзор по группам. Условные обозначения: ✏️ — инструмент изменяет данные, ⚠️ — действие необратимо.
| Инструмент | Что делает | Изменяет данные |
|---|---|---|
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-аккаунт, на который приходят коды второго фактора | ✏️ |
| Инструмент | Что делает | Изменяет данные |
|---|---|---|
project_list | Проекты аккаунта — с них начинается работа с областями | |
project_create | Завести проект; лимит зависит от тарифа | ✏️ |
project_update | Переименовать проект | ✏️ |
project_delete | Удалить проект, перенеся его содержимое в другой | ✏️ ⚠️ |
project_reorder | Задать порядок проектов в панели | ✏️ |
project_channel_list | Каналы аккаунта и их положение в этом проекте | |
project_channel_set | Включить или выключить канал в проекте | ✏️ |
Проект — область внутри аккаунта: ему принадлежат серверы, страницы статуса и правила уведомлений о мониторинге. Каналы связи, тариф и API-ключи остаются общими. Вызовы без project_id читают весь аккаунт, а создают в самом старом проекте — так работали интеграции до появления проектов, и это поведение сохранено.
| Инструмент | Что делает | Изменяет данные |
|---|---|---|
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 |
| Инструмент | Что делает | Изменяет данные |
|---|---|---|
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_comment_list | Все комментарии к инциденту | |
incident_comment_create | Создать комментарий с текстом и вложениями — при локальном запуске можно передать пути к файлам, сервер загрузит их сам | ✏️ |
incident_comment_update | Отредактировать текст или список вложений | ✏️ |
incident_comment_delete | Удалить комментарий и все его файлы | ⚠️ |
incident_comment_upload_file | Загрузить локальный файл для использования как вложение — только при локальном запуске | ✏️ |
| Инструмент | Что делает | Изменяет данные |
|---|---|---|
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_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 | Удалить запись о работах целиком | ⚠️ |
Вебхуки:
| Инструмент | Что делает | Изменяет данные |
|---|---|---|
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 | Удалить адрес из списка | ⚠️ |
Несколько фраз, которые ассистент сможет выполнить сразу после установки:
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, подпиши его секретом ….»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 — сработала защита от случайных изменений. Попросите ассистента добавить 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.
Общие вопросы по API — в документации Statuser или на info@statuser.cloud.
MIT — см. LICENSE.