# Statuser

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/statuser-cloud/mcp  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/statuser

## Description
Monitor services, manage incidents and status pages in Statuser.cloud from your AI assistant.

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "statuser": {
    "command": "npx",
    "args": ["-y","statuser"]
  }
}
```

## Documentation & README

# MCP-сервер Statuser

[![npm version](https://img.shields.io/npm/v/%40statuser%2Fmcp.svg)](https://www.npmjs.com/package/@statuser/mcp)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![MCP](https://img.shields.io/badge/MCP-compatible-1f6feb.svg)](https://modelcontextprotocol.io)

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

С ним ассистент работает с вашим аккаунтом Statuser напрямую: смотрит состояние серверов, разбирает инциденты, публикует обновления на страницах статуса, настраивает уведомления. Всё это поверх [публичного API Statuser](https://statuser.cloud/api-reference) с авторизацией по API-ключу.

Подключить сервер можно двумя способами, инструменты в обоих одни и те же:

- **По адресу** `https://mcp.statuser.cloud` — ничего не нужно устанавливать: клиент ходит на наш сервер с вашим ключом в заголовке.
- **Локально** через `npx -y @statuser/mcp` — сервер работает на вашей машине, нужен Node.js.

## Что внутри

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

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

## Содержание

- [Быстрый старт](#быстрый-старт)
- [Подключение по адресу](#подключение-по-адресу)
- [Локальный запуск через npx](#локальный-запуск-через-npx)
- [Настройки](#настройки)
- [Группы инструментов](#группы-инструментов)
- [Защита от случайных изменений](#защита-от-случайных-изменений)
- [Инструменты](#инструменты)
- [Примеры запросов к ассистенту](#примеры-запросов-к-ассистенту)
- [Что делать при ошибках](#что-делать-при-ошибках)
- [Совместимость](#совместимость)
- [Лицензия](#лицензия)

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

1. Создайте API-ключ в [панели управления Statuser](https://statuser.cloud/my/account/api-keys).
2. Добавьте сервер в MCP-клиент. Проще всего — по адресу `https://mcp.statuser.cloud` с заголовком `Authorization: Bearer ваш_ключ`; готовые конфиги — [ниже](#подключение-по-адресу).
3. Перезапустите клиент. Инструменты появятся под именем `statuser`.

Если клиент подключает только локальные серверы — например, Claude Desktop, — используйте [локальный запуск через npx](#локальный-запуск-через-npx).

## Подключение по адресу

| Параметр    | Значение                                   |
| ----------- | ------------------------------------------ |
| Адрес       | `https://mcp.statuser.cloud`               |
| Транспорт   | Streamable HTTP                            |
| Авторизация | заголовок `Authorization: Bearer ваш_ключ` |

### Claude Code

```bash
claude mcp add --transport http statuser https://mcp.statuser.cloud --header "Authorization: Bearer ваш_ключ"
```

С флагом `--scope user` сервер будет доступен во всех проектах, с `--scope project` — запишется в `.mcp.json` проекта. Файл с ключом не коммитьте в репозиторий.

### Cursor

В `~/.cursor/mcp.json` — для всех проектов, или в `.cursor/mcp.json` — для одного:

```json
{
  "mcpServers": {
    "statuser": {
      "url": "https://mcp.statuser.cloud",
      "headers": {
        "Authorization": "Bearer ваш_ключ"
      }
    }
  }
}
```

### VS Code

В `.vscode/mcp.json`. VS Code спросит ключ при первом подключении, в самом файле его не будет:

```json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "statuser_api_key",
      "description": "API-ключ Statuser (https://statuser.cloud/my/account/api-keys)",
      "password": true
    }
  ],
  "servers": {
    "statuser": {
      "type": "http",
      "url": "https://mcp.statuser.cloud",
      "headers": {
        "Authorization": "Bearer ${input:statuser_api_key}"
      }
    }
  }
}
```

### Windsurf (Devin Desktop)

В `mcp_config.json` — в актуальных версиях это `~/.config/devin/mcp_config.json`, в Windows `%APPDATA%\devin\mcp_config.json`. У удалённого сервера поле называется `serverUrl`, а не `url`:

```json
{
  "mcpServers": {
    "statuser": {
      "serverUrl": "https://mcp.statuser.cloud",
      "headers": {
        "Authorization": "Bearer ваш_ключ"
      }
    }
  }
}
```

### Другие клиенты

Подойдёт любой клиент, который подключается к удалённому MCP-серверу по Streamable HTTP и умеет передавать заголовок: укажите адрес и заголовок из таблицы выше. Устаревший транспорт SSE сервер не поддерживает.

Сервер опубликован в [официальном реестре MCP](https://registry.modelcontextprotocol.io/v0/servers?search=statuser) как `io.github.statuser-cloud/mcp`: клиенты, которые берут серверы оттуда, найдут его сами и спросят только ключ.

### Что стоит знать

- **Клиенты, которые умеют только OAuth, пока не подключатся.** ChatGPT и пользовательские коннекторы Claude Desktop и claude.ai не передают собственный API-ключ в заголовке. Для Claude Desktop есть [локальный запуск](#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-сервер его не сохраняет и не пишет в логи; действия видны в [истории действий](https://statuser.cloud/my/account/activity) аккаунта от имени ключа.

## Локальный запуск через npx

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

### В один клик

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

[![Установить в VS Code](https://img.shields.io/badge/VS_Code-Установить-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22statuser%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40statuser/mcp%22%5D%2C%22inputs%22%3A%5B%7B%22id%22%3A%22statuser_api_key%22%2C%22type%22%3A%22promptString%22%2C%22password%22%3Atrue%2C%22description%22%3A%22API-%5Cu043a%5Cu043b%5Cu044e%5Cu0447%20Statuser%20%28https%3A//statuser.cloud/my/account/api-keys%29%22%7D%5D%2C%22env%22%3A%7B%22STATUSER_API_KEY%22%3A%22%24%7Binput%3Astatuser_api_key%7D%22%7D%7D)
[![Установить в VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Установить-24bfa5?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders:mcp/install?%7B%22name%22%3A%22statuser%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40statuser/mcp%22%5D%2C%22inputs%22%3A%5B%7B%22id%22%3A%22statuser_api_key%22%2C%22type%22%3A%22promptString%22%2C%22password%22%3Atrue%2C%22description%22%3A%22API-%5Cu043a%5Cu043b%5Cu044e%5Cu0447%20Statuser%20%28https%3A//statuser.cloud/my/account/api-keys%29%22%7D%5D%2C%22env%22%3A%7B%22STATUSER_API_KEY%22%3A%22%24%7Binput%3Astatuser_api_key%7D%22%7D%7D)
[![Установить в Cursor](https://img.shields.io/badge/Cursor-Установить-000000?style=for-the-badge&logo=cursor&logoColor=white)](https://cursor.com/install-mcp?name=statuser&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBzdGF0dXNlci9tY3AiXSwiZW52Ijp7IlNUQVRVU0VSX0FQSV9LRVkiOiJBUElfS0VZX0hFUkUifX0)

Перед установкой создайте API-ключ в [панели управления Statuser](https://statuser.cloud/my/account/api-keys) — клиент попросит его в момент установки. Кнопка для Cursor подставит плейсхолдер `API_KEY_HERE`; замените его на свой ключ в форме, которую откроет Cursor.

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

### Claude Desktop

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

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

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

### Claude Code

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

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

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

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

### Cursor

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

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

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

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

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

<details>
<summary>Windsurf, Zed и другие MCP-клиенты</summary>

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

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

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

</details>

## Настройки

При локальном запуске параметры задаются переменными окружения в блоке `env` конфига клиента. При подключении по адресу настраивать нечего, кроме ключа в заголовке и [групп инструментов](#группы-инструментов) в адресе.

| Переменная             | Обязательно | По умолчанию                 | Описание                                                                                                                          |
| ---------------------- | ----------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `STATUSER_API_KEY`     | да          | —                            | API-ключ от [statuser.cloud/my/account/api-keys](https://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=` в адресе.

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

- меньше инструментов в контексте — ассистент точнее выбирает подходящий;
- меньше токенов в системном промпте клиента;
- если ключ имеет доступ ко всему API, а вам нужны только серверы — можно показать ассистенту только их.

| Группа                  | Что включает                                                                | Примеры инструментов                                                                                            |
| ----------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| `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`               |

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

```jsonc
// только серверы и инциденты
"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` и подобные) работают всегда без подтверждения.

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

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

При подключении по адресу работает только второй способ: переменной окружения у удалённого сервера нет, каждое изменение подтверждается `confirm: true`.

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

- удаление серверов, страниц статуса, комментариев, отчётов и плановых работ;
- удаление вебхуков и email-каналов;
- постановка серверов на паузу и снятие;
- публикация и скрытие страниц статуса;
- включение режима отпуска;
- отправка тестовых уведомлений.

Инструменты дополнительно помечаются MCP-аннотациями `destructiveHint` и `readOnlyHint`. Клиенты, которые их читают, добавляют поверх нашего собственный экран подтверждения.

## Инструменты

Полный список с описанием параметров MCP-клиент покажет автоматически при подключении. Ниже — обзор по группам. Условные обозначения: ✏️ — инструмент изменяет данные, ⚠️ — действие необратимо.

<details>
<summary><b>account</b> — 13 инструментов</summary>

| Инструмент              | Что делает                                                              | Изменяет данные |
| ----------------------- | ----------------------------------------------------------------------- | :-------------: |
| `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-аккаунт, на который приходят коды второго фактора           |       ✏️        |

</details>

<details>
<summary><b>projects</b> — 7 инструментов</summary>

| Инструмент              | Что делает                                                              | Изменяет данные |
| ----------------------- | ----------------------------------------------------------------------- | :-------------: |
| `project_list`          | Проекты аккаунта — с них начинается работа с областями                  |                 |
| `project_create`        | Завести проект; лимит зависит от тарифа                                 |       ✏️        |
| `project_update`        | Переименовать проект                                                    |       ✏️        |
| `project_delete`        | Удалить проект, перенеся его содержимое в другой                        |     ✏️ ⚠️      |
| `project_reorder`       | Задать порядок проектов в панели                                        |       ✏️        |
| `project_channel_list`  | Каналы аккаунта и их положение в этом проекте                           |                 |
| `project_channel_set`   | Включить или выключить канал в проекте                                  |       ✏️        |

Проект — область внутри аккаунта: ему принадлежат серверы, страницы статуса и правила уведомлений о мониторинге. Каналы связи, тариф и API-ключи остаются общими. Вызовы без `project_id` читают весь аккаунт, а создают в самом старом проекте — так работали интеграции до появления проектов, и это поведение сохранено.

</details>

<details>
<summary><b>monitors</b> — 10 инструментов</summary>

| Инструмент                       | Что делает                                                                                       | Изменяет данные |
| -------------------------------- | ------------------------------------------------------------------------------------------------ | :-------------: |
| `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`                                     |                 |

</details>

<details>
<summary><b>incidents</b> — 7 инструментов</summary>

| Инструмент                       | Что делает                                                                                                | Изменяет данные |
| -------------------------------- | --------------------------------------------------------------------------------------------------------- | :-------------: |
| `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`                | Безвозвратно удалить закрытый инцидент со всей диагностикой — аптайм пересчитается вверх                  |       ✏️        |

</details>

<details>
<summary><b>incident-comments</b> — 5 инструментов</summary>

| Инструмент                       | Что делает                                                                                          | Изменяет данные |
| -------------------------------- | --------------------------------------------------------------------------------------------------- | :-------------: |
| `incident_comment_list`          | Все комментарии к инциденту                                                                         |                 |
| `incident_comment_create`        | Создать комментарий с текстом и вложениями — при локальном запуске можно передать пути к файлам, сервер загрузит их сам |  ✏️        |
| `incident_comment_update`        | Отредактировать текст или список вложений                                                           |       ✏️        |
| `incident_comment_delete`        | Удалить комментарий и все его файлы                                                                 |       ⚠️        |
| `incident_comment_upload_file`   | Загрузить локальный файл для использования как вложение — только при локальном запуске               |       ✏️        |

</details>

<details>
<summary><b>status-pages</b> — 12 инструментов</summary>

| Инструмент                       | Что делает                                                                                       | Изменяет данные |
| -------------------------------- | ------------------------------------------------------------------------------------------------ | :-------------: |
| `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`  | Удалить подписчика                                                                               |       ⚠️        |

</details>

<details>
<summary><b>status-page-reports</b> — 14 инструментов</summary>

Инцидент-отчёты:

| Инструмент                                       | Что делает                                                                              | Изменяет данные |
| ------------------------------------------------ | --------------------------------------------------------------------------------------- | :-------------: |
| `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`                 | Удалить запись о работах целиком                                                        |       ⚠️        |

</details>

<details>
<summary><b>notifications</b> — 11 инструментов</summary>

Вебхуки:

| Инструмент         | Что делает                                                                                       | Изменяет данные |
| ------------------ | ------------------------------------------------------------------------------------------------ | :-------------: |
| `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`      | Удалить адрес из списка                                                 |       ⚠️        |

</details>

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

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

- «Покажи все серверы, которые сейчас не отвечают.»
- «Заведи сервер `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](https://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](https://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](https://github.com/statuser-cloud/mcp/issues). Об уязвимостях сообщайте приватно — см. [SECURITY.md](https://github.com/statuser-cloud/mcp/blob/HEAD/SECURITY.md).

Общие вопросы по API — в [документации Statuser](https://statuser.cloud/api-reference) или на [info@statuser.cloud](mailto:info@statuser.cloud).

## Лицензия

MIT — см. [LICENSE](https://github.com/statuser-cloud/mcp/blob/HEAD/LICENSE).

