Model Context Protocol · hw-cloud
MCP облака
ИИ-помощник — Claude, Cursor и другие MCP-клиенты — смотрит и мониторит рабочие места аккаунта, разбирает тревоги и управляет агентами на кассах: тот же API облака, тот же ключ, ответы на обычном языке.
Что можно спросить
- «Какие кассы сейчас не на связи и давно ли?»
- «Где скоро закончится ФН? Отсортируй по дням.»
- «Что случилось на кассе в фойе за сегодня?»
- «Сколько чеков пробила каждая точка в этом месяце?»
- «Сделай X-отчёт на кассе 42» — помощник вызовет
call_agent, клиент попросит подтверждение.
Подключение
Достаточно адреса https://cloud.hw-connector.ru/mcp: клиент сам откроет вход в кабинет hw-connector.ru (OAuth 2.1), вы выберете права — только чтение или полный доступ (команды кассам, чеки) — и разрешите. Отключить приложение — кабинет → «Облако» → «Подключённые приложения». Клиентам без входа OAuth — ключ API аккаунта hwk_… в заголовке (лучше «только чтение»).
claude.ai и Claude Desktop
Настройки → Коннекторы → «Добавить свой коннектор» → адрес https://cloud.hw-connector.ru/mcp → «Подключить»: откроется вход в кабинет. Одинаково в браузере и в Claude Desktop.
Старый способ для Claude Desktop — мост mcp-remote с ключом в claude_desktop_config.json:
{
"mcpServers": {
"hw-cloud": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://cloud.hw-connector.ru/mcp",
"--header",
"Authorization: Bearer hwk_…"
]
}
}
}Claude Code
claude mcp add --transport http hw-cloud https://cloud.hw-connector.ru/mcp
# затем в Claude Code: /mcp → hw-cloud → Authenticate (вход в кабинете)
# или ключом API, без входа:
claude mcp add --transport http hw-cloud https://cloud.hw-connector.ru/mcp --header "Authorization: Bearer hwk_…"Cursor
Адрес без ключа — Cursor предложит войти; с ключом — добавьте "headers": {"Authorization": "Bearer hwk_…"}.
{
"mcpServers": {
"hw-cloud": {
"url": "https://cloud.hw-connector.ru/mcp"
}
}
}VS Code
{
"servers": {
"hw-cloud": {
"type": "http",
"url": "https://cloud.hw-connector.ru/mcp",
"headers": {
"Authorization": "Bearer hwk_…"
}
}
}
}Другие клиенты и проверка
Любой MCP-клиент со Streamable HTTP: с входом OAuth 2.1 (метаданные — https://cloud.hw-connector.ru/.well-known/oauth-authorization-server, регистрация клиента сама — RFC 7591, PKCE S256) или с заголовком ключа (можно и X-Api-Key). Сервер без состояния: POST с JSON-RPC, ответ — JSON. Проверка без клиента:
curl https://cloud.hw-connector.ru/mcp -H 'Authorization: Bearer hwk_…' -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_summary","arguments":{}}}'Инструменты
Тонкие обёртки над API облака: те же проверки аккаунта, ошибки и журнал. Чтение помечено readOnlyHint; call_agent и create_receipt — destructiveHint: клиент спросит подтверждение. Ошибка — результат с isError: true и кодом облака (DEVICE_NOT_FOUND, NOT_CONNECTED, DEVICE_DISABLED…).
Состояние парка одним запросом: сколько касс всего, на связи, не на связи и выключено; версии агента; открытые тревоги по кодам и сколько критичных; запросы к агентам за сутки и сколько неудачных. Начните с него.
Без аргументов.
Список касс (рабочих мест с HW agent): номер, название от агента и своё (label), версия агента, на связи ли сейчас, когда была на связи, выключена ли, сколько открытых тревог.
Аргументы
onlinebooleantrue — только на связи, false — только не на связиqstringЧасть названия, своего названия или номера установкиlimitintegerСколько вернуть (1–1000, по умолчанию 100)offsetintegerСколько пропустить
Всё о кассе: на связи ли, версия агента, ОС, последние значения метрик за 7 дней (смена, ФН, ОФД, принтеры), открытые тревоги и последние события.
Аргументы
device_idintegerобязательныйНомер кассы из list_deviceseventsintegerСколько последних событий (1–500, по умолчанию 20)
Своё название кассы (агент его не затирает; пустая строка — снова как у агента) и выключатель: выключенной кассе облако не передаёт команды, запросы к агенту и чеки. Меняет только запись в облаке, не кассу.
Аргументы
device_idintegerобязательныйНомер кассыlabelstringСвоё названиеdisabledbooleantrue — выключить, false — включить
Тревоги: FN_EXPIRING (ФН скоро закончится), OFD_BACKLOG (документы не уходят в ОФД), SHIFT_EXPIRED (смена больше 24 ч), REGISTER_UNAVAILABLE (ККТ не отвечает), DEVICE_OFFLINE (касса пропала). Открываются и закрываются сами; по умолчанию — только открытые.
Аргументы
openbooleantrue — только открытые (по умолчанию), false — и закрытыеdevice_idintegerТолько эта кассаcodestringТолько этот кодseveritystringWARNING или CRITICAL
События касс аккаунта, свежие сверху: operation.failed (неудачная операция с кодом ошибки), printer (состояние принтера), power (питание), register.unavailable (ККТ не отвечает).
Аргументы
device_idintegerТолько эта кассаtypestringТип событияsincestringНе раньше этого времени, ISO 8601limitintegerСколько вернуть (1–1000, по умолчанию 50)offsetintegerСколько пропустить
Последнее значение одной метрики на каждой кассе за 7 дней: fn.days_left (дней до конца ФН), ofd.not_sent (не передано в ОФД), ofd.oldest_hours, shift.open, shift.expired, register.ok, agent.up, devices.active.
Аргументы
namestringобязательныйИмя метрики, например fn.days_leftdevice_idintegerТолько эта касса
Запросы к API агентов через облако (call_agent, прокси, команды): касса, метод, путь, код ответа, ошибка облака (NOT_CONNECTED, TIMEOUT…), время. Тела не хранятся.
Аргументы
device_idintegerТолько эта кассаfailedbooleanТолько неудачныеlimitintegerСколько вернуть (по умолчанию 50)offsetintegerСколько пропустить
Выполнить запрос к API HW agent на кассе (как локально на http://localhost:7790): например GET /api/v1/devices — устройства, GET /api/v1/registers/1/shift — смена, POST /api/v1/registers/1/reports/x — X-отчёт. Операции (POST) реально выполняются на кассе: печать, чеки, оплата — только по прямой просьбе пользователя и с idempotency_key (повтор с тем же ключом не выполнит операцию дважды). Настройка устройств (/api/v1/setup) недоступна. Описание API агента — https://hw-connector.ru/docs/api/agent/
Аргументы
device_idintegerобязательныйНомер кассыmethodstringобязательныйМетод HTTPзначения:GETPOSTPUTDELETEPATCHpathstringобязательныйПуть в API агента со строкой запроса, /api/v1/...bodyobjectТело JSONidempotency_keystringКлюч идемпотентности операции
Чек на кассе аккаунта с очередью: касса не на связи — чек ждёт и уйдёт, когда она появится. receipt — как в API агента (type, items, payments…). Тот же idempotency_key вернёт тот же чек, второй раз не пробьёт. Настоящий фискальный чек — только по прямой просьбе пользователя.
Аргументы
idempotency_keystringобязательныйКлюч идемпотентности, например номер заказаreceiptobjectобязательныйЧек: type, items, payments…device_idintegerКасса; нет — любая на связиregisterintegerНомер ККТ на кассе (по умолчанию 1)callback_urlstringКуда прислать итог (вебхук)
Чек, отправленный через облако: статус (QUEUED, SENDING, DONE, FAILED, UNKNOWN, EXPIRED), ФД, ФП, ссылка на чек, ошибка.
Аргументы
receipt_idintegerобязательныйНомер чека
Чеки через облако, свежие сверху; idempotency_key — найти чек по своему ключу.
Аргументы
device_idintegerТолько эта кассаidempotency_keystringКлюч идемпотентностиlimitintegerСколько (по умолчанию 20)
Сколько чеков и на какую сумму пробила каждая касса за месяц, тариф и пробный лимит.
Аргументы
monthstringМесяц ГГГГ-ММ; нет — текущий
Промпты
check_fleet— Проверить парк касс: Сводка, тревоги и что требует внимания — без операций на кассах
Безопасность
- Права «только чтение» (вход или ключ) — помощнику видны только инструменты чтения:
call_agent,create_receiptиupdate_deviceнедоступны (KEY_READ_ONLY). Для наблюдения за парком этого достаточно. - Полный доступ — ко всем кассам аккаунта.
call_agentиcreate_receiptвыполняют настоящие операции: печать, фискальный чек, оплата на терминале. Не включайте в клиенте автоподтверждение этих инструментов. - Настройку устройств (
/api/v1/setup) облако не передаёт. Кассу можно выключить (update_device/PATCH /api/v1/devices/{id}) — помощник и интеграции не смогут ей ничего отправить; на самой кассе команды из облака выключаются в настройках агента. - Каждый запрос к агентам — в журнале (
list_requests,GET /api/v1/requests). Лимит — 600 вызовов в минуту на аккаунт. Ключ отзывается, приложение отключается в кабинете сразу. - Вход OAuth: токен доступа живёт час, токен обновления — 30 дней и меняется при каждом обновлении; повтор старого токена или кода отключает приложение. В облаке хранятся только хеши токенов.