Сервер MCP¶
В BombVault встроен сервер для Model Context Protocol (MCP) — протокола, через который ИИ-ассистенты вроде Claude Code и Claude Desktop обращаются к внешним инструментам. Через него ассистент может читать, как обстоят дела с твоими резервными копиями, и, если ты разрешишь, запускать резервное копирование или отменять запущенное им самим. Сервер выключен, пока ты не создашь ключ или не включишь вход через OAuth: до тех пор конечная точка /mcp отвечает 404 на всё.
Что ассистент может и чего не может¶
| Инструмент | Что делает | Вид |
|---|---|---|
get_health |
Версия, имя экземпляра, идёт ли копирование и что разрешено этому ключу | чтение |
get_status |
Состояние защиты по доменам: последняя успешная копия, ожидаемый интервал, проверки и контроль off-site, ближайшие запуски по расписанию, копии, ждущие простоя приложения, для контейнеров ещё и последний тест запуска | чтение |
get_coverage |
Что BombVault защищает, а что нет, с причиной для каждого | чтение |
list_items |
Каждый защищённый контейнер, VM и набор папок, флешка и настройки приложения, с расписанием, тем, что останавливает копирование, последней копией и её длительностью; контейнеры баз данных показывают и последний дамп; также перечислены наборы данных ZFS с результатом их последней проверки; у каждого элемента есть последняя проверка восстановления, у контейнера ещё последний тест запуска или причина, по которой его нельзя проверить; контейнер, пересозданный с другими настройками после последней копии, перечисляет изменения | чтение |
list_runs |
История запусков, новые сверху, с фильтром по домену, элементу, статусу, виду и времени; медленная копия, которую тормозила одна вещь, называет её | чтение |
list_restore_points |
Точки восстановления одного элемента из его основного репозитория, а для контейнера ещё и дампы его баз данных; у набора данных ZFS одна точка восстановления на копию, со снапшотом каждого набора данных под ним | чтение |
get_activity |
Что выполняется прямо сейчас, с фазой и процентом | чтение |
get_storage_stats |
История размера основного репозитория домена и его рост за неделю, а также занятое, свободное и общее место на диске или удалённом хранилище каждого его репозитория | чтение |
get_size_breakdown |
Какие папки и файлы занимают место в самой новой копии контейнера, ВМ или набора папок и сколько из этого добавила последняя копия | чтение |
list_anomalies |
Аномалии, которые BombVault заметил в копиях, с фильтрами по состоянию, серьёзности и домену и сводкой открытых | чтение |
get_anomaly |
Одна из этих находок с заметкой, оставленной при её подтверждении | чтение |
start_backup |
Сразу делает копию одного элемента | запуск |
start_domain_backup |
Делает копию каждого защищённого элемента домена | запуск |
start_backup_everything |
Запускает Полный бэкап | запуск |
cancel_backup |
Отменяет идущее копирование, запущенное этим ключом | отмена |
В веб-интерфейсе остаются: восстановление любого вида (в том числе скачивание, сохранение и импорт дампа базы данных), удаление копий, prune, unlock, проверки и учения, репликация off-site, настройки, учётные данные и ключи MCP, а также отмена копирования, запущенного расписанием, веб-интерфейсом или другим ключом. То же касается подтверждения аномалии или пометки её как ожидаемой: это делается на странице Аномалии. Причина: ответы инструментов содержат имена и сообщения об ошибках с вашего сервера, и в любом из них может оказаться текст, написанный, чтобы управлять ассистентом. Ассистент, который на это поведётся, в худшем случае запустит копирование в пределах ограничений ниже или отменит копирование, которое запустил сам.
Если основной репозиторий элемента находится в другом месте (S3, REST, SFTP, rclone), list_restore_points обращается к нему, и вызов может занять некоторое время. Копии off-site через MCP не выводятся. На что смотрят проверки аномалий, описано в разделе Возможности, а как элемент ZFS хранит по одному снимку на каждый набор данных, в разделе Наборы данных ZFS.
Что делает запущенное копирование¶
Копирование, запущенное ассистентом, ничем не отличается от запущенного из веб-интерфейса. Работающий контейнер останавливается до конца своего копирования вместе с контейнерами, которые настроены останавливаться вместе с ним. VM с методом "graceful" выключается и запускается снова. Набор данных ZFS останавливает настроенные для него контейнеры, пока делается его снапшот. Наборы папок, флешка и настройки продолжают работать. Затем BombVault применяет политику хранения и может скопировать данные в репозиторий off-site. list_items сообщает ассистенту, что останавливает элемент и сколько длилось его последнее копирование, а описания инструментов просят его сказать вам об этом, прежде чем что-то запускать.
Поскольку копирование останавливает сервисы и вытесняет старые точки восстановления, запуски через MCP ограничены:
- 12 запущенных копирований в час на ключ.
- 15 минут между двумя запусками через MCP одного и того же элемента, домена или Полного бэкапа.
- Не больше 4 запусков через MCP одного элемента за 24 часа.
- Защита хранения. Когда домен хранит фиксированное число точек восстановления (только "хранить последние N", без дневного, недельного или месячного правила, локально или в месте off-site), каждая новая копия вытесняет самую старую. Тогда BombVault отказывает в запуске через MCP для элемента, у которого все N-1 последних успешных копий были запущены через MCP. Поэтому в сохраняемом наборе всегда остаётся хотя бы одна точка восстановления, созданная расписанием или вами. При "хранить последнюю 1" ассистент вообще не может сделать копию этого элемента. Следующее копирование по расписанию снова освобождает место. Одно только годовое правило считается как "хранить последнюю 1", потому что за текущий год оно хранит лишь одну точку восстановления.
Запуск домена или Полного бэкапа пропускает элементы, которые удерживает какое-либо ограничение, и перечисляет их в ответе. Ни одно из этих ограничений не касается веб-интерфейса и расписания. Часовой лимит хранится в памяти, поэтому перезапуск BombVault его обнуляет.
Запуски через API и из Home Assistant учитываются в тех же ограничениях на элемент, что и запуски через MCP, и в защите хранения.
Включение¶
- Открой Настройки, Интеграции, Сервер MCP и нажми кнопку своего клиента. Клиент, которого нет в списке, подключается через Другой клиент.
- В разделе Ключ оставь Новый ключ и предложенное имя, то есть имя клиента, или введи такое, которое говорит, где используется ключ, например «Claude Code на ноутбуке». Один ключ на клиента позволяет отозвать один, не трогая остальные. Существующий ключ даёт клиенту ключ, созданный раньше.
- Включи Разрешить запуск копирования для ключа, который должен уметь запускать резервные копии; без этого ключ может только читать. Позже это можно изменить на плитке ключа, и изменение действует со следующего запроса ассистента, без переподключения.
- Нажми Создать ключ. Ключ показывается один раз. BombVault хранит только его отпечаток и показать ключ снова не сможет, поэтому скопируй его сейчас. Если закрыть окно до того, как клиент воспользовался ключом, карточка продолжает его показывать, пока ты не подтвердишь, что скопировал его.
Без пароля входа сам веб-интерфейс открыт для всех в вашей сети, и любой, кто может его открыть, может и создать ключ. Карточка об этом предупреждает. Если вы открываете BombVault под именем, которое выглядит публичным (например, bombvault.example.com за обратным прокси), а пароль входа не задан, с этого адреса нельзя создавать и заменять ключи, чтобы ни одна страница в интернете не могла заставить ваш браузер создать ключ. Задайте пароль входа или откройте BombVault по IP-адресу или по локальному имени вроде tower или tower.local.
Ваши ключи и их журнал¶
У каждого ключа на карточке своя плитка. На ней видно имя ключа, может ли он запускать копирование или только читает, последние четыре символа ключа, когда он был создан или в последний раз заменён, когда клиент последний раз им пользовался и сколько вызовов он сделал сегодня. На плитке ключ можно переименовать, поменять ему права, заменить или отозвать. Отозванный ключ переходит в список отозванных, где его можно удалить насовсем, как только ни один запуск в истории его больше не упоминает.
Рядом с именем плитка показывает логотип клиента, для которого создан ключ. Ключ, созданный через Другой клиент или до того, как карточка стала перечислять клиентов, показывает вместо этого ключ.
Журнал на плитке открывает то, что делал этот ключ. Сначала идут запущенные им копии, каждая со своим состоянием и ссылкой на этот запуск в журнале активности на панели. Ниже его вызовы, новые сверху, с инструментом и результатом. Отказ называет причину: ключ может только читать, защита хранения придержала копию, уже шло другое копирование, копирование элемента было запущено вне веб-интерфейса несколько минут назад или ключ прислал слишком много запросов. Отмена ссылается на запуск, о котором шла речь.
BombVault хранит записи каждого ключа не дольше 30 дней: последние 500 успешных запусков и отмен и отдельно последние 200 остальных вызовов (чтения, отказы и ошибки), поэтому ассистент, который раз за разом опрашивает идущее резервное копирование или повторяет отклонённый вызов, не может вытеснить из журнала его запуск. Для каждого вызова он сохраняет инструмент, результат и запуск, который назвала отмена. Он никогда не сохраняет то, что прислал ассистент, и сам ключ или его отпечаток. Диагностический пакет только считает записи, а экспорт настроек их не включает.
Подключение клиента¶
У каждого клиента есть кнопка на карточке, в группе На этом компьютере или В облаке. Кнопка открывает окно из трёх шагов: ключ; конфигурация для этого клиента с адресом, по которому ты открыл карточку, кнопкой копирования, местом, где лежит конфигурация, а при собственном сертификате BombVault ещё и тем, что нужно клиенту, чтобы ему доверять; и ожидание первого вызова клиента. Окно следит за последним использованием ключа и становится зелёным, когда этот вызов приходит.
Окно не пускает ключ ни в одну командную строку. Если клиент умеет читать ключ из переменной окружения (BOMBVAULT_MCP_KEY), из скрытого запроса или из собственного файла, конфигурация только ссылается на него. Если у клиента такого способа нет, ключ лежит в его файле конфигурации или настройках, и окно об этом говорит. Если документация клиента не говорит, как он обращается с незнакомым сертификатом, окно описывает этот шаг как то, что делать, если клиент отклонит сертификат BombVault.
| Клиент | Настройка | Откуда берётся ключ |
|---|---|---|
| AnythingLLM | файл конфигурации | файл конфигурации |
| Antigravity | файл конфигурации | переменная окружения |
| Claude Code | команда | файл ключа |
| Claude Desktop | файл конфигурации | файл ключа |
| Cline | файл конфигурации | файл конфигурации |
| Codex CLI | файл конфигурации | переменная окружения |
| Continue | файл конфигурации | ~/.continue/.env |
| Copilot CLI | файл конфигурации | файл конфигурации |
| Cursor | файл конфигурации | переменная окружения |
| Gemini CLI | файл конфигурации | переменная окружения |
| GitHub Copilot (VS Code) | файл конфигурации | скрытый запрос |
| Goose | файл конфигурации | переменная окружения |
| Jan | форма в приложении | настройки приложения |
| JetBrains (AI Assistant, Junie) | файл конфигурации | файл конфигурации |
| Kimi Code | файл конфигурации | файл конфигурации |
| LM Studio | файл конфигурации | файл конфигурации |
| Mistral Vibe | файл конфигурации | переменная окружения |
| Msty | форма в приложении | настройки приложения |
| n8n | форма в приложении | учётные данные n8n |
| Open WebUI | форма в приложении | настройки приложения |
| opencode | файл конфигурации | переменная окружения |
| Perplexity (Mac) | форма в приложении | файл ключа |
| Qwen Code | файл конфигурации | переменная окружения |
| Roo Code | файл конфигурации | переменная окружения |
| Visual Studio | файл конфигурации | файл конфигурации |
| Warp | файл конфигурации | файл конфигурации |
| Windsurf | файл конфигурации | переменная окружения |
| Zed | файл конфигурации | файл конфигурации |
| Grok | форма, в облаке | серверы поставщика |
| Le Chat | форма, в облаке | серверы поставщика |
| ChatGPT | вход через OAuth, в облаке | токен доступа, см. ниже |
| Claude (claude.ai) | вход через OAuth, в облаке | токен доступа, см. ниже |
Разделы ниже подробнее объясняют настройку Claude Code и Claude Desktop и перечисляют, что нужно любому другому клиенту.
Claude Code¶
Claude Code подключается к BombVault через mcp-remote, которому на этом компьютере нужен Node.js. Сначала сохраните ключ в отдельном текстовом файле, одной строкой:
Затем выполните команду из карточки один раз в терминале, подставив путь к этому файлу. С сертификатом, которому доверяет ваш компьютер, она выглядит так:
claude mcp add bombvault --scope user -- npx -y mcp-remote@latest https://bombvault.example.com/mcp --header-file "<path of the file with your key>"
С собственным сертификатом BombVault (см. TLS и сертификаты) команда также указывает Node.js на скачанный сертификат:
claude mcp add bombvault --scope user -e "NODE_EXTRA_CA_CERTS=<path of the downloaded bombvault-cert.pem>" -- npx -y mcp-remote@latest https://192.168.1.10:3443/mcp --header-file "<path of the file with your key>"
Проверьте подключение командой /mcp внутри Claude Code. --scope user делает BombVault доступным во всех ваших проектах. Claude Code хранит только путь к файлу с ключом, поэтому ключ не появляется ни в команде и истории оболочки, ни в списке процессов. Храните файл там, где его можете прочитать только вы, и вне любой папки, которую вы коммитите. С @latest команда npx загружает актуальный mcp-remote; без него использовалась бы более старая версия, установленная глобально, а она не знает --header-file.
Не пишите ${BOMBVAULT_MCP_KEY} в аргументы mcp-remote для Claude Code. Claude Code подставляет такую ссылку из своего окружения до запуска mcp-remote, поэтому ключ попадает в командную строку этого процесса, где его могут прочитать другие программы и пользователи компьютера.
Без Node.js и только с сертификатом, которому доверяет ваш компьютер, Claude Code может подключиться сам. Положите .mcp.json в папку проекта:
{
"mcpServers": {
"bombvault": {
"type": "http",
"url": "https://bombvault.example.com/mcp",
"headers": {
"Authorization": "Bearer ${BOMBVAULT_MCP_KEY}"
}
}
}
}
Задайте BOMBVAULT_MCP_KEY там, где запускается Claude Code, например в разделе "env" файла ~/.claude/settings.json или в профиле оболочки, через текстовый редактор, а не набирая в командной строке. Здесь ссылка безопасна, потому что Claude Code не запускает второй процесс, в который попал бы ключ. С собственным сертификатом BombVault так не получится: собственное подключение Claude Code отклоняет его даже с заданной переменной NODE_EXTRA_CA_CERTS. Никогда не коммитьте .mcp.json, в котором ключ записан открыто.
Claude Desktop¶
Claude Desktop подключается к BombVault через mcp-remote, которому на этом компьютере нужен Node.js. Сначала сохраните ключ в отдельном текстовом файле одной строкой, как описано для Claude Code. Откройте файл конфигурации в Claude Desktop через Settings, Developer, Edit Config. В Windows он лежит в %APPDATA%\Claude\claude_desktop_config.json, в macOS в ~/Library/Application Support/Claude/claude_desktop_config.json. Добавьте запись из карточки внутрь "mcpServers", рядом с уже имеющимися серверами, и перезапустите Claude Desktop:
{
"mcpServers": {
"bombvault": {
"command": "npx",
"args": ["-y", "mcp-remote@latest", "https://192.168.1.10:3443/mcp", "--header-file", "<path of the file with your key>"],
"env": {
"NODE_EXTRA_CA_CERTS": "<path of the downloaded bombvault-cert.pem>"
}
}
}
}
NODE_EXTRA_CA_CERTSнужен только для собственного сертификата BombVault. За сертификатом, которому ваш компьютер уже доверяет, уберите его.--allow-httpдобавляется только для простого адресаhttp://.- В Windows пишите пути с прямыми косыми чертами, например
C:/Users/sam/bombvault-key.txt, потому что одиночная обратная косая черта недопустима в JSON. Путь к файлу с ключом должен быть без пробелов: Claude Desktop в Windows передаёт путь с пробелом вnpxдвумя частями. - В конфигурации указан только файл с ключом, поэтому ключ не появляется ни в ней, ни в списке процессов. Храните файл там, где его можете прочитать только вы.
Клиенты в облаке¶
ChatGPT, Claude на claude.ai, Grok и Le Chat обращаются к BombVault с серверов своего поставщика, поэтому BombVault должен быть доступен из интернета с публично доверенным сертификатом, например за обратным прокси; Le Chat отклоняет самоподписанные. Вход на прокси может защищать веб-интерфейс, но /mcp должен доходить до BombVault без него: эти сервисы не умеют входить на прокси, а BombVault сам проверяет их ключ или токен. Grok и Le Chat отправляют постоянный ключ, и их кнопки настраивают их так же, как остальных. ChatGPT, а в большинстве организаций и Claude на claude.ai, подключаются только через вход по OAuth, описанный ниже.
Вход через OAuth¶
Для клиента, который не принимает ключ, BombVault сам служит сервером авторизации OAuth. Клиент сам регистрируется, отправляет тебя на страницу BombVault, и там ты входишь со своим паролем для входа (и вторым фактором, если он настроен) и разрешаешь ему доступ. Затем клиент получает токен, который действует только для конечной точки MCP этого BombVault, и сам его обновляет.
- Задай пароль для входа в разделе Настройки, Безопасность. Без него BombVault вообще не предлагает вход, потому что не у кого было бы спросить согласие.
- Сделай BombVault доступным из интернета по https с сертификатом, которому доверяют браузеры, обычно через обратный прокси. Клиент обращается к
/mcp,/oauth/и/.well-known/со своих серверов, поэтому прокси с собственным входом должен пропускать эти три пути до BombVault. Страница согласия по адресу/oauth/authorizeоткрывается в твоём собственном браузере и может оставаться за входом прокси. Укажи прокси также вTRUSTED_PROXY(см. Настройка). BombVault ограничивает регистрации клиентов по адресу, и без этого каждый клиент выглядит так, будто приходит с прокси. - На карточке MCP включи Вход через OAuth и укажи Публичный адрес: адрес https без пути, например
https://backup.example.com. Каждый токен привязан к этому адресу, поэтому после изменения каждому клиенту придётся войти заново. - Нажми кнопку ChatGPT или Claude. Диалог покажет URL коннектора, то есть публичный адрес с
/mcpв конце, и куда его вписать в этом клиенте. В ChatGPT включи режим разработчика в разделе Настройки, Приложения и коннекторы, Дополнительные настройки, выбери Создать, вставь URL коннектора как URL MCP-сервера и выбери OAuth в качестве аутентификации. На claude.ai открой Настройки, Коннекторы, Добавить свой коннектор, вставь URL коннектора, оставь пустыми идентификатор клиента и секрет OAuth и выбери Подключить. - Клиент открывает страницу согласия. На ней видно, кто просит доступ, куда тебя вернёт ответ, и переключатель Разрешить запуск копирования, который сначала выключен. Выбери Разрешить или Отказать.
Каждый вошедший клиент получает плитку рядом с ключами, со своим значком, журналом, кнопками Отозвать и Разрешить запуск копирования, и те же ограничения, что и у ключа. Отзыв действует сразу. Когда тот же клиент входит снова, новое разрешение заменяет старое, а разрешение, которым никто не пользовался 30 дней, истекает. Одновременно могут быть вошедшими до 10 клиентов, в дополнение к 10 ключам.
Страница согласия принимает запрос только от зарегистрированного клиента, который указывает ровно один из своих зарегистрированных адресов возврата: https или адрес loopback на любом порту для клиента на твоём собственном компьютере. Принимается только поток с кодом авторизации и PKCE (S256), а твой ответ привязан к твоей сессии, поэтому никакой другой сайт не сможет отправить его за тебя. Токены доступа действуют час. Токен обновления заменяется при каждом использовании, и если какой-то из них потом появляется снова, BombVault отзывает разрешение, потому что копия есть у кого-то ещё. Клиент, который повторяет своё последнее обновление в течение 30 секунд, потому что ответ до него не дошёл, вместо этого получает новые токены. BombVault не загружает метаданные клиентов из интернета, поэтому клиенты регистрируются через динамическую регистрацию клиентов.
Другие клиенты¶
Подойдёт любой клиент, говорящий на Streamable HTTP:
- URL: адрес веб-интерфейса плюс
/mcp, напримерhttps://192.168.1.10:3443/mcp. - Ключ в
Authorization: Bearer <key>или вX-API-Key: <key>. Если пришли оба, в них должен быть один и тот же ключ. POSTсContent-Type: application/jsonиAccept: application/json, text/event-stream.- Одно сообщение JSON-RPC на запрос; пакеты (batch) отклоняются.
- Версии протокола 2026-07-28, 2025-11-25, 2025-06-18 и 2025-03-26.
TLS и сертификаты¶
BombVault отдаёт HTTPS с сертификатом, который выпустил сам, и поначалу в этом сертификате указаны только localhost, 127.0.0.1 и ::1. Claude Code и mcp-remote отклоняют его на адресе локальной сети. Способы это обойти, в порядке, который подходит большинству установок Unraid:
- Добавить адрес в карточке MCP. Если открыть карточку по HTTPS на адресе, которого нет в сертификате, она сообщит об этом и предложит Добавить этот адрес в сертификат. Тогда BombVault заново выпустит сертификат с этим адресом (браузер предупредит ещё раз, как в первый раз). Потом нажмите Скачать сертификат; фрагменты задают
NODE_EXTRA_CA_CERTSна скачанный файл, и клиент доверяет именно этому сертификату. Это также значит, что любой клиент, настроенный со скачанным ранее файлом, перестаёт подключаться, как только сертификат выпущен заново, на этом компьютере и на любом другом, пока не получит новый файл. - Обратный прокси с доверенным сертификатом (Nginx Proxy Manager, SWAG, Caddy, Traefik). Клиент тогда видит сертификат прокси, больше ему ничего не нужно, и карточка не предупреждает о сертификате BombVault.
- Tailscale.
tailscale serveперед контейнером или интеграция Tailscale в Unraid даёт вам имяts.netс доверенным сертификатом. HTTP_ONLY=true, только за прокси, который завершает TLS, или в сети, которой вы полностью доверяете. Переключает весь веб-интерфейс на простой HTTP, требует изменить настройки контейнера и передаёт ключ без шифрования.
Никогда не задавайте NODE_TLS_REJECT_UNAUTHORIZED=0. Это отключает проверку сертификатов для всего, с чем общается этот процесс Node.js.
Обратный прокси должен передавать заголовок Authorization (или X-API-Key), что прокси делают, если им не велено иначе, и не должен буферизовать или переписывать /mcp. Блок location для Nginx или Nginx Proxy Manager, который заодно проверяет сертификат BombVault:
location /mcp {
proxy_pass https://192.168.1.10:3443;
proxy_ssl_verify on;
proxy_ssl_trusted_certificate /data/bombvault-cert.pem;
proxy_ssl_name localhost;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Host $host;
}
За прокси каждый запрос несёт адрес прокси. Пять неверных ключей от одного неправильно настроенного клиента тогда на минуту блокируют всех клиентов MCP за этим прокси. Укажите прокси в TRUSTED_PROXY (см. Настройка), чтобы счёт шёл по каждому клиенту.
Модель безопасности¶
- Без активного ключа и при выключенном входе через OAuth
/mcpотвечает404. - Вход через OAuth предлагается, только пока задан пароль для входа. Токены, коды и секреты клиентов хранятся только в виде отпечатка, а токен действует только для того адреса, для которого был выдан.
- С одного адреса клиент может зарегистрироваться не больше 10 раз в час, а BombVault хранит не больше 100 зарегистрированных клиентов, через которых никто не вошёл, каждого в течение суток. Неверные коды и токены обновления учитываются в той же блокировке, что и неверные ключи.
- Разрешения ведут себя как ключи при восстановлении резервной копии конфигурации или смене
APP_KEY: после восстановления каждому клиенту придётся войти заново. - Исключений по адресам нет. Запросам с
localhost, с хоста Unraid, от обратного прокси или отtailscale serveнужен ключ, как и любым другим, даже когда у веб-интерфейса нет пароля входа. - Ключи хранятся только как отпечатки, показываются один раз, их можно переименовать, заменить и отозвать. До 10 активных ключей, у каждого свой переключатель Разрешить запуск копирования.
- Каждое создание, замена, изменение прав и отзыв отправляет уведомление по вашим каналам уведомлений с адресом, откуда пришёл запрос, если уведомления не выключены.
- 5 неверных ключей в минуту с одного адреса, дальше
429. 120 запросов в минуту и 12 запущенных копирований в час на ключ, плюс пауза и защита хранения, описанные выше. - Запросы со страницы браузера с другим источником (origin) отклоняются.
- Пока пароль входа не задан, ключи нельзя создавать с имени хоста, которое выглядит публичным.
- Каждое копирование, запущенное ассистентом, и вызванные им запуски prune и off-site помечаются "через MCP" с именем ключа в журнале активности, в панели ошибок и в уведомлении о копировании.
- Каждый вызов инструмента записывается в журнал контейнера с id ключа и его последними четырьмя символами (никогда с именем) и учитывается в
/metrics(bombvault_mcp_requests_total,bombvault_mcp_tool_calls_total,bombvault_mcp_active_keys). - Восстановление резервной копии настроек отзывает все ключи, потому что восстановленная база может содержать ключи, которые вы отозвали уже после её сохранения. После этого создайте новые ключи.
- Ключ перестаёт работать, когда меняется
APP_KEY(переустановка или восстановление в другой контейнер). Карточка это замечает и помечает ключ, а Заменить ключ снова даёт ему действующий секрет. - Обращайся с ключом как с паролем. Клиент, который не умеет читать ключ ни из переменной окружения, ни из запроса, ни из файла ключа, хранит его открытым текстом в своей конфигурации или настройках, и его окно об этом говорит. На компьютере, которому ты доверяешь меньше, лучше используй ключ только для чтения.
Что покидает машину¶
Всё, что читает ассистент, уходит к стоящему за ним поставщику ИИ: имена элементов, расписания, история запусков с сообщениями об ошибках, id и время точек восстановления, названия движков баз данных и размеры дампов, текущая активность, данные о хранилище, покрытие и состояние. BombVault убирает пути хоста, расположение репозиториев, имена хостов, учётные данные, команды хуков и ключи, прежде чем что-либо уйдёт наружу.
Устранение неполадок¶
| Что вы видите | Что это значит |
|---|---|
404 |
Нет активного ключа и вход через OAuth выключен, либо путь неверный, например /api/mcp. Конечная точка — /mcp. |
401 |
Ключ отсутствует, набран с ошибкой, отозван или заменён. Возможно, прокси отбрасывает заголовок Authorization (попробуйте X-API-Key). Если карточка помечает ключ как больше не действующий, изменился APP_KEY: замените ключ. |
403 |
Запрос пришёл со страницы браузера с другим источником. Используйте настольного или консольного клиента. |
405 на GET |
Нормально. Точка подключения принимает только POST. |
400 "Accept must contain both 'application/json' and 'text/event-stream'" |
Клиент слишком старый для Streamable HTTP. Обновите его. |
400 "batch requests are not accepted" |
Клиент отправляет пакеты JSON-RPC. Отправляйте одно сообщение на запрос. |
429 |
Слишком много неверных ключей с этого адреса или больше 120 запросов в минуту с одним ключом. Подождите минуту и проверьте, не зациклился ли ассистент. |
| Ошибки со словами "certificate", "self-signed" или "unable to verify" | Клиент не доверяет сертификату BombVault. См. TLS и сертификаты. |
busy |
Домен занят другим копированием или задачей обслуживания. Повторите, когда она закончится. |
cooldown |
Этот элемент, этот домен или Полный бэкап запускался вне веб-интерфейса менее 15 минут назад. |
retention_guard |
Ещё одно копирование через MCP оставило бы в окне "хранить последние N" только точки восстановления из MCP, либо элемент уже получил 4 копии через MCP за последние 24 часа, включая неудачные и отменённые. В первом случае место освободит следующее копирование по расписанию, во втором элемент снова станет доступен через 24 часа после самой старой из этих копий. В веб-интерфейсе его можно запустить в любой момент. |
rate_limited |
Ключ израсходовал свои 12 запусков на этот час. |
not_permitted при запуске |
Ключ может только читать. Включите Разрешить запуск копирования в карточке; переподключаться не нужно. При отмене это значит, что запуск сделал не этот ключ. |
domain_off |
Этот вид копирования выключен в настройках. |
not_found |
BombVault не защищает этот элемент. Сначала добавьте его в веб-интерфейсе; MCP никогда не создаёт настройки. |
| Клиент не находит сервер авторизации | Вход через OAuth выключен, пароль для входа не задан, или прокси не пропускает /.well-known/ до BombVault. |
| Страница согласия сообщает о незарегистрированном адресе возврата | Клиент прислал адрес возврата, который не регистрировал. Удали коннектор в клиенте и добавь его снова. |
Вошедший клиент получает 401 |
Его разрешение отозвано, истекло после 30 дней без использования, или изменился публичный адрес. Клиент войдёт заново. |
Не задавайте контейнеру переменную окружения MCPGODEBUG. Она меняет поведение библиотеки MCP, а неверное значение останавливает BombVault при запуске ещё до того, как он запишет хоть одну строку в журнал.