Skip to main content
Glama

shm-mcp

Standalone MCP-сервер для биллинговой панели SHM (форк danuk/shm, версия 2.15.0). Отдельный, самодостаточный сервер: не делит код с remnawave-mcp, но следует той же архитектуре и тому же слою безопасности (см. mcp/ARCHITECTURE.md).

Назначение

Сервер даёт MCP-клиенту (Claude Code и т.п.) один инструмент на каждую операцию method + path из двух OpenAPI-спек SHM:

Спека

Файл

Путей

Операций

admin (/admin/*, Basic-auth админа)

spec/shm_admin_openapi.json

35

81

user (/user/*, /service, /promo, /telegram/*, /template/{id}, /public/{id}, /storage/*)

spec/shm_user_openapi.json

39

67

Итого 148 сгенерированных инструментов + 4 служебных (api_search, api_describe, api_status, api_audit_tail).

Инструменты не пишутся руками: scripts/generate.ts читает обе спеки и генерирует src/generated/tools.ts. Файл коммитится — сервер не читает спеку в рантайме.

Related MCP server: mcp-server-enterprise-tools

Установка

npm ci
npm run build

Требуется Node.js ≥ 22.

Конфигурация

Скопируйте .env.example в .env и заполните:

cp .env.example .env

Ключевые переменные (полный список с комментариями — в .env.example):

  • SHM_BASE_URL — базовый URL панели, уже включает /shm/v1 (например https://admin.example.com/shm/v1). Пути из спеки (/admin/user, /user/service, …) относительные и дописываются к этому значению.

  • SHM_ADMIN_AUTH=login:password (или SHM_ADMIN_AUTH_FILE=/path/to/file — приоритет у файла) — Basic-авторизация администратора SHM. Через один и тот же админский Basic доступны и /admin/*, и /user/* (через опциональный user_id, см. ниже).

  • MCP_MODE=ro|rw (по умолчанию ro).

  • MCP_DENY, MCP_DENY_DEFAULTS, MCP_CONFIRM, MCP_DRY_RUN — слой безопасности (см. ниже).

  • MCP_AUDIT_LOG, MCP_TIMEOUT_MS, MCP_MAX_RESPONSE_BYTES, MCP_TOOL_FILTER, MCP_REDACT.

  • MCP_HTTP_PORT / MCP_HTTP_TOKEN — опциональный Streamable HTTP транспорт.

Секреты — только через env или *_FILE; .env никогда не коммитится.

Режимы безопасности

ro (по умолчанию)

Разрешён только GET. Всё остальное (POST/PUT/DELETE/PATCH) запрещено безусловно.

Но не все GET безопасны: часть GET-эндпоинтов SHM мутирует состояние ("мутирующие GET"). Они запрещены даже в ro:

  • GET /promo/apply/{code} — применяет промокод;

  • GET /template/{id} (user-спека) — выполняет шаблон (в отличие от GET /admin/template/{id}, которое просто читает шаблон и остаётся разрешённым в ro);

  • GET /public/{id} — выполняет публичный шаблон;

  • GET /user/passwd/reset*, GET /user/passkey/register, GET /user/auth/passkey, GET /user/otp/setup — операции аутентификации/восстановления доступа.

rw

Разрешено всё, кроме MCP_DENY и дефолтного denylist (см. ниже). Любая не-GET операция без confirm: true возвращает превью (метод, URL, заголовки без Authorization, тело) и не выполняется — это защита от случайного вызова. Второй вызов с confirm: true выполняет операцию.

MCP_DRY_RUN=1 — не-GET никогда не отправляется на сервер, всегда превью, независимо от confirm.

Дефолтный denylist (MCP_DENY_DEFAULTS=1, включён по умолчанию)

Правило

Почему

GET /admin/server/identity

отдаёт приватные SSH-ключи серверов

DELETE /admin/config

удаляет глобальную конфигурацию панели

POST /admin/spool/manual/success

помечает задачу выполненной без реального выполнения

POST /admin/spool/manual/set

принудительно перезаписывает состояние задачи

POST /admin/spool/manual/add

добавляет задачу в спул вручную

PUT /admin/spool

запускает массовую рассылку (задача на всех клиентов)

DELETE /admin/user/pay

удаляет платёж клиента

DELETE /admin/user/bonus

удаляет бонус клиента

DELETE /admin/user/service/withdraw

удаляет списание по услуге

Важно: POST /admin/spool/manual/{action} — один инструмент (admin_spool_manual_by_action_post) на все действия (retry|resume|pause|success|set|add). Deny-правило проверяется после подстановки аргумента action в путь, поэтому action:"retry" разрешён (с confirm:true в rw), а action:"success"/"set"/"add" — запрещены, даже если формально это один и тот же MCP-инструмент.

Отключить дефолтный denylist: MCP_DENY_DEFAULTS=0 (не рекомендуется).

MCP_DENY — дополнительные правила

Через запятую, формат METHOD /prefix или просто /prefix (все методы):

MCP_DENY=POST /admin/user,DELETE /admin/config

Редактирование секретов (MCP_REDACT=1 по умолчанию)

В ответах и в аудит-логе (но никогда в заголовках — Authorization не пишется вообще):

  • ключи вида password, passwd, secret, token, api_key/apikey, private_key, authorization, cookie (регистронезависимо, на любой глубине вложенности — покрывает, например, settings в ответах /admin/server и value в /admin/config) заменяются на <redacted> целиком;

  • строковые значения дополнительно сканируются на телеграм-токены бота (bot<id>:<secret>) и на user:pass@ в URL, независимо от имени ключа.

Отключить: MCP_REDACT=0.

Формат ответа инструмента

Успех: content[0].text — JSON { "status": <http>, "ok": true|false, "data": <json|text>, "truncated": bool }.

Ошибка HTTP (не 2xx): то же самое, но isError: true.

Превью (не-GET без confirm, или MCP_DRY_RUN=1): { "preview": true, "method", "url", "headers": {без Authorization}, "body" }.

Отказ (deny): isError: true, { "ok": false, "denied": true, "reason": "..." }.

Служебные инструменты

  • api_search {query} — поиск по имени/пути/summary/тегу среди всех 148 инструментов (не зависит от MCP_TOOL_FILTER).

  • api_describe {tool} — полная JSON Schema входа и заметки безопасности.

  • api_status {} — режим, базовый хост (без пути/секрета), число инструментов, версия спеки (SPEC_VERSION), проверка доступности GET /admin/user?limit=1 (только код ответа, без данных).

  • api_audit_tail {n} — последние n записей MCP_AUDIT_LOG.

Подключение

Claude Code

claude mcp add shm -- node /abs/path/to/mcp/shm-mcp/dist/index.js

(путь — абсолютный, после npm run build).

Любой другой MCP-клиент (stdio, generic JSON)

{
  "mcpServers": {
    "shm": {
      "command": "node",
      "args": ["/abs/path/to/mcp/shm-mcp/dist/index.js"],
      "env": {
        "SHM_BASE_URL": "https://admin.example.com/shm/v1",
        "SHM_ADMIN_AUTH": "login:password",
        "MCP_MODE": "ro"
      }
    }
  }
}

Streamable HTTP (опционально)

MCP_HTTP_PORT=8787 MCP_HTTP_TOKEN=change-me npm run start:http

Слушает только 127.0.0.1; запросы без Authorization: Bearer <MCP_HTTP_TOKEN> отвергаются 401.

Правила имён инструментов

snake_case, ASCII, /^[a-z0-9_]+$/, ≤ 60 символов, уникальные. Спека не содержит operationId, поэтому имя строится из метода и пути:

  • admin: путь уже начинается с /admin, поэтому сегменты пути (без повторного добавления префикса) + {param} → by_<param> + _<метод>:

    • GET /admin/user/service → admin_user_service_get

    • GET /admin/config/{key} → admin_config_by_key_get

    • POST /admin/spool/manual/{action} → admin_spool_manual_by_action_post

  • user: префикс user_, но если путь уже начинается с /user, второй user не повторяется:

    • GET /service/order → user_service_order_get

    • GET /user/pay/forecast → user_pay_forecast_get (не user_user_pay_forecast_get)

    • GET /user → user_get

Коллизии разрешаются автоматически генератором: единственная коллизия в текущей спеке — GET /service и GET /user/service оба дают user_service_get; для второго используется резервное имя без дедупликации — user_user_service_get.

user_id: админ действует от имени клиента

Все пути user-спеки (/user/*, /service, /promo, /telegram/*, /template/{id}, /public/{id}, /storage/*) вызываются через тот же админский Basic. Поэтому каждый из 67 user-инструментов получает необязательный query-параметр user_id ("admin acts on behalf of this user") — можно не указывать (тогда SHM решает по контексту сессии), а можно явно передать id клиента.

Примеры

admin_user_get — список клиентов:

{ "limit": 10, "offset": 0 }

admin_user_search_get — поиск клиентов:

{ "limit": 10 }

(параметр поиска передаётся так, как определён в спеке для данной операции — см. api_describe { "tool": "admin_user_search_get" }.)

admin_user_service_get — список услуг клиента:

{ "user_id": 123, "limit": 25 }

admin_spool_get — список текущих фоновых задач:

{ "limit": 25, "offset": 0 }

admin_template_get — список шаблонов (безопасно, только читает — в отличие от user_template_by_id_get, который выполняет шаблон и заблокирован в ro):

{ "limit": 25 }

user_pay_forecast_get — прогноз оплаты для конкретного клиента (админ действует от его имени через user_id):

{ "user_id": 123 }

Изменяющий вызов (пример превью → подтверждение) в rw:

// 1) без confirm — получаем превью
{ "action": "retry", "body": { "id": 42 } }
// ответ: { "preview": true, "method": "POST", "url": "...", "headers": {...}, "body": {...} }

// 2) с confirm:true — выполняется
{ "action": "retry", "body": { "id": 42 }, "confirm": true }

(инструмент admin_spool_manual_by_action_post; action: "success"|"set"|"add" запрещены дефолтным denylist независимо от confirm.)

Аудит

Каждый вызов инструмента (включая отказы и превью) пишется в MCP_AUDIT_LOG (по умолчанию ./.audit/shm-mcp.jsonl, права 0600) построчно в формате JSON: время, инструмент, метод, URL, HTTP-статус (если был запрос), длительность, confirm, режим, результат (ok|denied|preview|error). Заголовок Authorization не пишется никогда; тело запроса пишется с редактированием секретов (см. выше).

Тесты

npm run typecheck
npm run build
npm test

npm test (vitest) — без сети: мокает fetch через vi.stubGlobal, покрывает генератор (число/уникальность/валидность имён инструментов), правила имён, таблицы гейта (ro/rw/deny/confirm/dry-run), редактирование секретов, клиент (сборка URL, Basic-заголовок, подстановка path-параметров, обрезка большого ответа), аудит, конфиг и сквозные сценарии через createToolRuntime.

npm run smoke — живой прогон: если .env существует (владелец сервера сам его заполнил), делает api_status и явный вызов admin_user_get с limit:1 против реального SHM_BASE_URL; если .env нет — печатает, что пропущено, и завершается с кодом 0. Агенты-разработчики .env не создают и креды не имеют.

Как перегенерировать инструменты при обновлении панели

  1. На хосте SHM получить актуальные спеки:

    curl http://127.0.0.1:8081/shm/v1/swagger_admin.json -o shm_admin_openapi.json
    curl http://127.0.0.1:8081/shm/v1/swagger.json       -o shm_user_openapi.json
  2. Скопировать оба файла в mcp/shm-mcp/spec/, заменив текущие (сохранить UTF-8 — русские summary в спеке важны для описаний инструментов).

  3. Перегенерировать и проверить:

    npm run generate
    npm run typecheck
    npm run build
    npm test
  4. Просмотреть диф src/generated/tools.ts — новые/удалённые/переименованные инструменты, обновить MCP_DENY/README при необходимости (особенно если панель добавила новые мутирующие GET или опасные операции).

Available Tools

152 tools
admin_config_by_key_deleteC

DELETE /admin/config/{key} Удалить значение или объект внутри объекта конфига Тег: Конфигурация Спека: admin

Inputs: key (required), value (required), confirm.

admin_config_by_key_getC

GET /admin/config/{key} Получить объект конфига Тег: Конфигурация Спека: admin

Inputs: key (required), limit, offset.

admin_config_by_key_postC

POST /admin/config/{key} Изменить объект в конфиге Тег: Конфигурация Спека: admin

Inputs: key (required), body, confirm.

admin_config_deleteC

DELETE /admin/config Удалить объект в конфиге Тег: Конфигурация Спека: admin

Inputs: key (required), confirm.

admin_config_getC

GET /admin/config Прочитать весь конфиг Тег: Конфигурация Спека: admin

Inputs: limit, offset.

admin_config_postC

POST /admin/config Изменить объект в конфиге Тег: Конфигурация Спека: admin

Inputs: body, confirm.

admin_config_putC

PUT /admin/config Создать объект в конфиге Тег: Конфигурация Спека: admin

Inputs: body, confirm.

admin_promo_deleteC

DELETE /admin/promo Удалить промокод Тег: Промокоды Спека: admin

Inputs: id (required), confirm.

admin_promo_getC

GET /admin/promo Список промокодов Тег: Промокоды Спека: admin

Inputs: limit, offset, user_id.

admin_promo_postC

POST /admin/promo Изменить промокод Тег: Промокоды Спека: admin

Inputs: body, confirm.

admin_promo_putD

PUT /admin/promo Генерация промокодов Тег: Промокоды Спека: admin

Inputs: body, confirm.

admin_server_deleteC

DELETE /admin/server Удалить сервер Тег: Сервера Спека: admin

Inputs: server_id (required), confirm.

admin_server_getC

GET /admin/server Получить список серверов Тег: Сервера Спека: admin

Inputs: limit, offset.

admin_server_group_deleteC

DELETE /admin/server/group Удалить группу серверов Тег: Группы серверов Спека: admin

Inputs: group_id (required), confirm.

admin_server_group_getC

GET /admin/server/group Получить список групп серверов Тег: Группы серверов Спека: admin

Inputs: limit, offset.

admin_server_group_postC

POST /admin/server/group Изменить группу серверов Тег: Группы серверов Спека: admin

Inputs: body, confirm.

admin_server_group_putC

PUT /admin/server/group Создать группу серверов Тег: Группы серверов Спека: admin

Inputs: body, confirm.

admin_server_identity_deleteB

DELETE /admin/server/identity Удалить SSH ключ Тег: Ключи SSH Спека: admin

Inputs: id (required), confirm.

admin_server_identity_generate_getC

GET /admin/server/identity/generate Сгенерировать SSH ключи Тег: Ключи SSH Спека: admin

Inputs: limit, offset.

admin_server_identity_getC

GET /admin/server/identity Список SSH ключей Тег: Ключи SSH Спека: admin

Inputs: limit, offset.

admin_server_identity_postC

POST /admin/server/identity Изменить SSH ключ Тег: Ключи SSH Спека: admin

Inputs: body, confirm.

admin_server_identity_putC

PUT /admin/server/identity Сохранить новый SSH ключ Тег: Ключи SSH Спека: admin

Inputs: body, confirm.

admin_server_postC

POST /admin/server Изменить сервер Тег: Сервера Спека: admin

Inputs: body, confirm.

admin_server_putC

PUT /admin/server Создать сервер Тег: Сервера Спека: admin

Inputs: body, confirm.

admin_service_children_getC

GET /admin/service/children Список дочерних услуг Тег: Услуги Спека: admin

Inputs: service_id (required), limit, offset.

admin_service_children_postC

POST /admin/service/children Изменить список дочерних услуг Тег: Услуги Спека: admin

Inputs: body, confirm.

admin_service_deleteC

DELETE /admin/service Удалить услугу Тег: Услуги Спека: admin

Inputs: service_id (required), confirm.

admin_service_event_deleteC

DELETE /admin/service/event Удалить событие Тег: События Спека: admin

Inputs: id (required), confirm.

admin_service_event_getC

GET /admin/service/event Список событий Тег: События Спека: admin

Inputs: limit, offset.

admin_service_event_postC

POST /admin/service/event Изменить событие Тег: События Спека: admin

Inputs: body, confirm.

admin_service_event_putC

PUT /admin/service/event Создать событие Тег: События Спека: admin

Inputs: body, confirm.

admin_service_getC

GET /admin/service Получить услугу Тег: Услуги Спека: admin

Inputs: limit, offset.

admin_service_order_getC

GET /admin/service/order Список услуг доступных для регистрации Тег: Услуги Спека: admin

Inputs: limit, offset.

admin_service_order_putC

PUT /admin/service/order Зарегистрировать услугу клиенту Тег: Услуги Спека: admin

Inputs: body, confirm.

admin_service_postC

POST /admin/service Изменить услугу Тег: Услуги Спека: admin

Inputs: body, confirm.

admin_service_putC

PUT /admin/service Создать услугу Тег: Услуги Спека: admin

Inputs: body, confirm.

admin_spool_deleteC

DELETE /admin/spool Удалить задачу Тег: Задачи Спека: admin

Inputs: id (required), confirm, user_id.

admin_spool_getC

GET /admin/spool Список текущих задач Тег: Задачи Спека: admin

Inputs: limit, offset, user_id.

admin_spool_history_getC

GET /admin/spool/history Список архива задач Тег: Задачи Спека: admin

Inputs: limit, offset, user_id.

admin_spool_manual_by_action_postC

POST /admin/spool/manual/{action} Изменить статус задачи вручную Тег: Задачи Спека: admin

Inputs: action (required), body, confirm.

admin_spool_postD

POST /admin/spool Изменить задачу Тег: Задачи Спека: admin

Inputs: body, confirm.

admin_spool_putC

PUT /admin/spool Создать задачу Тег: Задачи Спека: admin

Inputs: body, confirm.

admin_spool_statuses_getC

GET /admin/spool/statuses Статусы задач Тег: Задачи Спека: admin

Inputs: limit, offset.

admin_storage_manage_by_name_getC

GET /admin/storage/manage/{name} Получить объект хранилища Тег: Хранилище Спека: admin

Inputs: name (required), user_id (required), limit, offset.

admin_storage_manage_deleteC

DELETE /admin/storage/manage Удалить объект из хранилища Тег: Хранилище Спека: admin

Inputs: name (required), user_id (required), confirm.

admin_storage_manage_getC

GET /admin/storage/manage Получить список объектов хранилища Тег: Хранилище Спека: admin

Inputs: limit, offset, user_id.

admin_storage_manage_postC

POST /admin/storage/manage Изменить данные в объекте хранилища Тег: Хранилище Спека: admin

Inputs: body, confirm.

admin_storage_manage_putC

PUT /admin/storage/manage Создать объект в хранилище Тег: Хранилище Спека: admin

Inputs: body, confirm.

admin_template_by_id_getC

GET /admin/template/{id} Прочитать шаблон Тег: Шаблоны Спека: admin

Inputs: id (required), limit, offset.

admin_template_deleteC

DELETE /admin/template Удалить шаблон Тег: Шаблоны Спека: admin

Inputs: id (required), confirm.

admin_template_getC

GET /admin/template Список шаблонов Тег: Шаблоны Спека: admin

Inputs: limit, offset.

admin_template_postC

POST /admin/template Изменить шаблон Тег: Шаблоны Спека: admin

Inputs: body, confirm.

admin_template_putC

PUT /admin/template Создать шаблон Тег: Шаблоны Спека: admin

Inputs: body, confirm.

admin_user_bonus_deleteC

DELETE /admin/user/bonus Удалить бонус Тег: Бонусы Спека: admin

Inputs: id (required), user_id (required), confirm.

admin_user_bonus_getC

GET /admin/user/bonus Список бонусов клиентов Тег: Бонусы Спека: admin

Inputs: limit, offset, user_id.

admin_user_bonus_postC

POST /admin/user/bonus Изменить бонус Тег: Бонусы Спека: admin

Inputs: body, confirm.

admin_user_bonus_putC

PUT /admin/user/bonus Создать бонус Тег: Бонусы Спека: admin

Inputs: body, confirm.

admin_user_deleteC

DELETE /admin/user Удалить клиента Тег: Пользователи Спека: admin

Inputs: user_id (required), confirm.

admin_user_getC

GET /admin/user Список клиентов Тег: Пользователи Спека: admin

Inputs: limit, offset, user_id.

admin_user_passwd_postC

POST /admin/user/passwd Сменить пароль клиенту Тег: Пользователи Спека: admin

Inputs: body, confirm.

admin_user_pay_deleteB

DELETE /admin/user/pay Удалить платеж клиента Тег: Платежи Спека: admin

Inputs: id (required), user_id (required), confirm.

admin_user_pay_getD

GET /admin/user/pay Список платежей клиентов Тег: Платежи Спека: admin

Inputs: limit, offset, user_id.

admin_user_payment_putC

PUT /admin/user/payment Зачислить деньги клиенту Тег: Пользователи Спека: admin

Inputs: body, confirm.

admin_user_postC

POST /admin/user Изменить клиента Тег: Пользователи Спека: admin

Inputs: body, confirm.

admin_user_putC

PUT /admin/user Создать клиента Тег: Пользователи Спека: admin

Inputs: body, confirm.

admin_user_search_getD

GET /admin/user/search Поиск клиентов Тег: Пользователи Спека: admin

Inputs: limit, offset.

admin_user_service_activate_postC

POST /admin/user/service/activate Возобновить услугу клиента Тег: Услуги пользователей Спека: admin

Inputs: body, confirm.

admin_user_service_categories_getC

GET /admin/user/service/categories Получить список категорий услуг Тег: Услуги пользователей Спека: admin

Inputs: limit, offset.

admin_user_service_change_postC

POST /admin/user/service/change Сменить тариф услуги клиента Тег: Услуги пользователей Спека: admin

Inputs: body, confirm.

admin_user_service_deleteC

DELETE /admin/user/service Удалить услугу клиента Тег: Услуги пользователей Спека: admin

Inputs: user_id (required), user_service_id (required), confirm.

admin_user_service_getC

GET /admin/user/service Список услуг клиентов Тег: Услуги пользователей Спека: admin

Inputs: limit, offset, user_id.

admin_user_service_postC

POST /admin/user/service Изменить услугу клиента Тег: Услуги пользователей Спека: admin

Inputs: body, confirm.

admin_user_service_spool_getC

GET /admin/user/service/spool Получить список текущих задач для услуги клиента Тег: Услуги пользователей Спека: admin

Inputs: user_id (required), user_service_id (required), limit, offset.

admin_user_service_status_postC

POST /admin/user/service/status Сменить статус услуги клиента Тег: Услуги пользователей Спека: admin

Inputs: body, confirm.

admin_user_service_stop_postC

POST /admin/user/service/stop Остановить услугу клиента Тег: Услуги пользователей Спека: admin

Inputs: body, confirm.

admin_user_service_touch_postD

POST /admin/user/service/touch Обработать услугу Тег: Услуги пользователей Спека: admin

Inputs: body, confirm.

admin_user_service_withdraw_deleteC

DELETE /admin/user/service/withdraw Удалить списание клиента Тег: Списания Спека: admin

Inputs: user_id (required), withdraw_id (required), confirm.

admin_user_service_withdraw_getC

GET /admin/user/service/withdraw Получить список списаний клиентов Тег: Списания Спека: admin

Inputs: limit, offset, user_id.

admin_user_service_withdraw_postC

POST /admin/user/service/withdraw Изменить списание клиента Тег: Списания Спека: admin

Inputs: body, confirm.

admin_user_service_withdraw_putC

PUT /admin/user/service/withdraw Создать списание клиенту Тег: Списания Спека: admin

Inputs: body, confirm.

admin_user_session_putC

PUT /admin/user/session Сгенерировать session_id для клиента Тег: Пользователи Спека: admin

Inputs: body, confirm.

api_audit_tailB

Последние n записей журнала аудита (MCP_AUDIT_LOG).

Inputs: n.

api_describeC

Полная схема входа и заметки безопасности для указанного инструмента.

Inputs: tool (required).

api_statusA

Режим, базовый URL (без секрета), число инструментов, версия спеки; проверка доступности через GET /admin/user?limit=1 (только код ответа).

Inputs: no named parameters.

user_auth_passkey_getC

GET /user/auth/passkey Получить параметры публичной аутентификации Passkey Тег: Passkey Аутентификация Спека: user

Inputs: limit, offset, user_id.

user_auth_passkey_postC

POST /user/auth/passkey Аутентификация пользователя с помощью Passkey Тег: Passkey Аутентификация Спека: user

Inputs: body, confirm, user_id.

user_auth_postC

POST /user/auth Авторизация (получение session_id) Тег: Пользователи Спека: user

Inputs: body, confirm, user_id.

user_autopayment_deleteC

DELETE /user/autopayment Удалить автоплатежи пользователя Тег: Пользователи Спека: user

Inputs: confirm, user_id.

user_autopayment_getC

GET /user/autopayment Список автоплатежей пользователя Тег: Пользователи Спека: user

Inputs: limit, offset, user_id.

user_captcha_getC

GET /user/captcha Получение капчи Тег: Капча Спека: user

Inputs: limit, offset, user_id.

user_email_deleteC

DELETE /user/email Удалить email пользователя Тег: Пользователи Спека: user

Inputs: confirm, user_id.

user_email_getC

GET /user/email Получить email пользователя Тег: Пользователи Спека: user

Inputs: limit, offset, user_id.

user_email_postC

POST /user/email Верифицировать email пользователя Тег: Пользователи Спека: user

Inputs: body, confirm, user_id.

user_email_putC

PUT /user/email Установить email пользователя Тег: Пользователи Спека: user

Inputs: body, confirm, user_id.

user_email_verify_postC

POST /user/email/verify Верификация email пользователя Тег: Пользователи Спека: user

Inputs: body, confirm, user_id.

user_getC

GET /user Получение пользователя Тег: Пользователи Спека: user

Inputs: limit, offset, user_id.

user_otp_deleteC

DELETE /user/otp Отключение OTP Тег: OTP Спека: user

Inputs: token (required), confirm, user_id.

user_otp_getD

GET /user/otp Статус OTP Тег: OTP Спека: user

Inputs: limit, offset, user_id.

user_otp_postC

POST /user/otp Проверка OTP Тег: OTP Спека: user

Inputs: body, confirm, user_id.

user_otp_putC

PUT /user/otp Включение OTP Тег: OTP Спека: user

Inputs: body, confirm, user_id.

user_otp_setup_postC

POST /user/otp/setup Настройка OTP Тег: OTP Спека: user

Inputs: body, confirm, user_id.

user_passkey_deleteC

DELETE /user/passkey Удалить зарегистрированный Passkey по идентификатору Тег: Passkey Настройки Спека: user

Inputs: credential_id (required), confirm, user_id.

user_passkey_getC

GET /user/passkey Список зарегистрированных Passkey Тег: Passkey Настройки Спека: user

Inputs: limit, offset, user_id.

user_passkey_postB

POST /user/passkey Переименовать зарегистрированный Passkey по идентификатору Тег: Passkey Настройки Спека: user

Inputs: body, confirm, user_id.

user_passkey_register_getC

GET /user/passkey/register Получить параметры регистрации Passkey Тег: Passkey Регистрация Спека: user

Inputs: limit, offset, user_id.

user_passkey_register_postC

POST /user/passkey/register Завершить регистрацию Passkey Тег: Passkey Регистрация Спека: user

Inputs: body, confirm, user_id.

user_passwd_postC

POST /user/passwd Сменить пароль пользователя Тег: Пользователи Спека: user

Inputs: body, confirm, user_id.

user_passwd_reset_postC

POST /user/passwd/reset Запрос на сброс пароля пользователя Тег: Пользователи Спека: user

Inputs: body, confirm, user_id.

user_passwd_reset_verify_getB

GET /user/passwd/reset/verify Проверка токена сброса пароля пользователя перед сменой пароля Тег: Пользователи Спека: user

Inputs: token (required), limit, offset, user_id.

user_passwd_reset_verify_postC

POST /user/passwd/reset/verify Сменить пароль пользователя по токену сброса Тег: Пользователи Спека: user

Inputs: body, confirm, user_id.

user_password_auth_deleteC

DELETE /user/password-auth Отключить вход по паролю Тег: Пользователи Спека: user

Inputs: confirm, user_id.

user_password_auth_getC

GET /user/password-auth Статус входа по паролю Тег: Пользователи Спека: user

Inputs: limit, offset, user_id.

user_password_auth_postC

POST /user/password-auth Включить вход по паролю Тег: Пользователи Спека: user

Inputs: body, confirm, user_id.

user_pay_forecast_getC

GET /user/pay/forecast Прогноз оплаты Тег: Платежи Спека: user

Inputs: limit, offset, user_id.

user_pay_getC

GET /user/pay Список платежей пользователя Тег: Платежи Спека: user

Inputs: limit, offset, user_id.

user_pay_paysystems_getC

GET /user/pay/paysystems Платежные системы Тег: Платежи Спека: user

Inputs: limit, offset, user_id.

user_postC

POST /user Изменить пользователя Тег: Пользователи Спека: user

Inputs: body, confirm, user_id.

user_promo_apply_by_code_getC

GET /promo/apply/{code} Применить промокод Тег: Промокоды Спека: user

Inputs: code (required), limit, offset, user_id.

user_promo_getD

GET /promo Список промокодов пользователя Тег: Промокоды Спека: user

Inputs: limit, offset, user_id.

user_public_by_id_getC

GET /public/{id} Выполнить публичный шаблон Тег: Шаблоны Спека: user

Inputs: id (required), limit, offset, user_id.

user_public_by_id_postC

POST /public/{id} Выполнить публичный шаблон с аргументами Тег: Шаблоны Спека: user

Inputs: id (required), body, confirm, user_id.

user_putC

PUT /user Регистрация пользователя Тег: Пользователи Спека: user

Inputs: body, confirm, user_id.

user_referrals_getC

GET /user/referrals Получение количества рефералов Тег: Пользователи Спека: user

Inputs: limit, offset, user_id.

user_service_change_postC

POST /user/service/change Сменить тариф Тег: Услуги пользователей Спека: user

Inputs: body, confirm, user_id.

user_service_deleteC

DELETE /user/service Удалить услугу пользователя Тег: Услуги пользователей Спека: user

Inputs: user_service_id (required), confirm, user_id.

user_service_getC

GET /service Информация об услуге Тег: Услуги Спека: user

Inputs: service_id (required), limit, offset, user_id.

user_service_order_getC

GET /service/order Список услуг для заказа Тег: Услуги Спека: user

Inputs: limit, offset, user_id.

user_service_order_putC

PUT /service/order Регистрация услуги Тег: Услуги Спека: user

Inputs: body, confirm, user_id.

user_service_stop_postC

POST /user/service/stop Остановить услугу пользователя Тег: Услуги пользователей Спека: user

Inputs: body, confirm, user_id.

user_storage_download_by_name_getC

GET /storage/download/{name} Скачать данные из хранилища Тег: Хранилище Спека: user

Inputs: name (required), limit, offset, user_id.

user_storage_manage_by_name_deleteC

DELETE /storage/manage/{name} Удалить данные из хранилища Тег: Хранилище Спека: user

Inputs: name (required), confirm, user_id.

user_storage_manage_by_name_getC

GET /storage/manage/{name} Прочитать данные из хранилища Тег: Хранилище Спека: user

Inputs: name (required), limit, offset, user_id.

user_storage_manage_by_name_postC

POST /storage/manage/{name} Изменить данные в хранилище Тег: Хранилище Спека: user

Inputs: name (required), body, confirm, user_id.

user_storage_manage_by_name_putC

PUT /storage/manage/{name} Создать данные в хранилище Тег: Хранилище Спека: user

Inputs: name (required), body, confirm, user_id.

user_storage_manage_deleteC

DELETE /storage/manage Удалить данные в хранилище Тег: Хранилище Спека: user

Inputs: name (required), confirm, user_id.

user_storage_manage_getC

GET /storage/manage Список данных Тег: Хранилище Спека: user

Inputs: limit, offset, user_id.

user_storage_manage_postC

POST /storage/manage Изменить данные в хранилище Тег: Хранилище Спека: user

Inputs: body, confirm, user_id.

user_storage_manage_putC

PUT /storage/manage Создать данные в хранилище Тег: Хранилище Спека: user

Inputs: body, confirm, user_id.

user_telegram_bot_by_template_postC

POST /telegram/bot/{template} Приём данных от Telegram Тег: Telegram bot Спека: user

Inputs: template (required), body, confirm, user_id.

user_telegram_user_deleteC

DELETE /telegram/user Удалить (отвязать) Telegram аккаунт пользователя Тег: Telegram bot Спека: user

Inputs: confirm, user_id.

user_telegram_user_getC

GET /telegram/user Получить настройки пользователя для Telegram бота Тег: Telegram bot Спека: user

Inputs: limit, offset, user_id.

user_telegram_user_postC

POST /telegram/user Изменить настройки пользователя для Telegram бота Тег: Telegram bot Спека: user

Inputs: body, confirm, user_id.

user_telegram_webapp_auth_getC

GET /telegram/webapp/auth Авторизация Telegram Тег: Telegram bot Спека: user

Inputs: initData (required), limit, offset, user_id.

user_telegram_web_auth_init_getC

GET /telegram/web/auth/init Инициализация Telegram Login OIDC (state, nonce, PKCE) Тег: Telegram bot Спека: user

Inputs: limit, offset, user_id.

user_telegram_web_auth_postC

POST /telegram/web/auth Авторизация через Telegram Login (OIDC id_token или legacy Widget) Тег: Telegram bot Спека: user

Inputs: body, confirm, user_id.

user_telegram_web_auth_start_getC

GET /telegram/web/auth/start Старт Telegram Login OIDC с HTTP redirect на Telegram OAuth Тег: Telegram bot Спека: user

Inputs: limit, offset, user_id.

user_telegram_web_callback_getC

GET /telegram/web/callback Callback endpoint для Telegram Login (OIDC code flow) Тег: Telegram bot Спека: user

Inputs: limit, offset, user_id.

user_template_by_id_getC

GET /template/{id} Выполнить шаблон Тег: Шаблоны Спека: user

Inputs: id (required), limit, offset, user_id.

user_template_by_id_postC

POST /template/{id} Выполнить шаблон с аргументами Тег: Шаблоны Спека: user

Inputs: id (required), body, confirm, user_id.

user_user_service_getD

GET /user/service Список услуг пользователя Тег: Услуги пользователей Спека: user

Inputs: limit, offset, user_id, user_service_id.

user_withdraw_getC

GET /user/withdraw Списания средств Тег: Пользователи Спека: user

Inputs: limit, offset, user_id.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.4/5.0

    Scored across 152 tools

    Disambiguation3/5

    Many tools come in near-duplicate pairs: collection-level and by_key variants of the same action (e.g. admin_config_post vs admin_config_by_key_post, user_storage_manage_put vs user_storage_manage_by_name_put both described as 'Создать данные'). Admin and user specs also mirror each other (admin_service_get vs user_service_get), so an agent must carefully weigh scope to pick correctly.

    Naming Consistency4/5

    Names follow a largely predictable {scope}_{resource}_{path}_{httpverb} snake_case pattern (admin_promo_post, user_otp_delete), which is easy to parse. Minor deviations exist: the meta tools api_search/api_describe/api_status/api_audit_tail break the scheme, and the user CRUD tools drop the resource prefix (user_get, user_post, user_put).

    Tool Count1/5

    152 tools is an extreme count that overwhelms selection and context. It is a raw 1:1 dump of two OpenAPI specs rather than a curated surface, so most tools do not earn individual places in an agent-facing set.

    Completeness4/5

    Because it is auto-generated from full admin and user specs, coverage is broad: CRUD, auth (passkey, OTP, Telegram), payments, storage, templates, and services are all present. Minor gaps may exist around non-exposed endpoints, but no obvious dead ends for core workflows.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      An MCP server exposing scoped, read-only enterprise operations tools with fail-closed credential handling. It returns opaque approval IDs for mutations and requires a separate operator approval command to release one-time capabilities.
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for regulated enterprises, providing per-tool RBAC, redacted audit logging, and structured error handling. Exposes bank tools for customer lookup, statement search, and dispute resolution over stdio and HTTPS transports.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Provides a governance proxy layer for MCP servers, enforcing per-tool allowlists, human approval for write operations, quotas, secret redaction, and a hash-chained audit log of all calls.
      MIT
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enforces default-deny policies, budgets, and tamper-evident audit logging for MCP tool calls before they reach upstream servers.
      -