MCP
Сервер для ИИ-помощников
- 9
- Инструментов
- только 127.0.0.1
- Куда обращается
- stdio, JSON-RPC
- Связь
- Node.js
- Нужно доустановить
MCP это способ помощнику позвать программу на вашем компьютере
MCP расшифровывается как Model Context Protocol. Это общий язык между ИИ-помощником и небольшими программами, которые делают настоящую работу. Помощник просит названное действие с названными доводами, программа выполняет его и отвечает.
В ARMANOS такая программа уже есть. Это один файл на Node без сторонних зависимостей. Ваш ИИ-инструмент сам запускает его и разговаривает с ним через обычный ввод и вывод.
Сам сервер ничего не открывает в браузере. Каждый вызов инструмента превращается ровно в один запрос к локальному интерфейсу на 127.0.0.1, к тому же самому, куда ходит скрипт на Python или JavaScript.
То есть помощнику не выдают новую дорогу к вашим профилям. Ему выдают ту, что и так была, с тем же токеном и по тем же правилам.
Программа всё равно должна быть открыта
Девять инструментов, у каждого свой единственный ход
Список инструментов записан в самом файле сервера. Каждый инструмент указывает на ход, который локальный интерфейс уже умеет, поэтому в списке нет ничего обещанного на будущее.
У каждого инструмента есть описание, написанное для модели, а не для меню. В нём сказано, что вернётся и когда этот вызов уместен, чтобы помощник выбирал, а не угадывал.
Доводы нарочно узкие. Большинству инструментов не нужно ничего, остальным нужен profileId, а create_profile берёт те же поля, что и форма создания профиля.
| Инструмент | Что делает | Какой ход зовёт |
|---|---|---|
| get_status | Проверяет, что локальный интерфейс отвечает, и сообщает готовность и версию программы | GET /status |
| list_profiles | Все профили: имя, сценарий, группа, шаблон отпечатка, краткие данные прокси, метки и признак «открыт» | GET /api/v1/profile/list |
| get_active_profiles | Номера профилей, у которых прямо сейчас открыто окно | GET /api/v1/browser/active |
| launch_profile | Открывает окно одного профиля и возвращает его порт отладки, если он есть | POST /api/v1/browser/start |
| stop_profile | Закрывает все окна одного профиля и говорит, сколько закрыл | POST /api/v1/browser/stop |
| create_profile | Создаёт профиль: имя, группа, сценарий, шаблон отпечатка, прокси, метки, заметки | POST /api/v1/profile/create |
| delete_profile | Переносит профиль в корзину, откуда его можно вернуть из программы | POST /api/v1/profile/delete |
| get_one_time_code | Текущие шесть цифр и сколько секунд они ещё годны, если у профиля сохранён ключ двухфакторной защиты | GET /api/v1/profile/code |
| list_proxies | Сохранённая библиотека прокси с итогом последней проверки, без паролей | GET /api/v1/proxy/list |
Помощник работает с теми же профилями, что видите вы
Второго хранилища нет, и выгрузки тоже нет. list_profiles читает те же записи, что и экран профилей, а созданный помощником профиль сразу появляется в программе.
Все изменения проходят через ту же проверку, что и кнопки в окне. Заблокированная лицензия не даст запустить профиль, а создание сверх тарифа откажет с той же причиной, которую назвала бы сама программа. Отдельного послабления для MCP нет.
Запуск отвечает адресом отладки, если он есть. На движке ARMANOS Browser у каждого профиля свой адрес, и Puppeteer подключается именно к нему. На встроенном движке есть только общий адрес всей программы, и в ответе это сказано прямо.
profileId, имя, сценарий
Опознаватели, которые остальные инструменты берут доводом.
группа и шаблон отпечатка
В какой группе лежит профиль и какой из пяти шаблонов на нём надет.
краткие данные прокси
Протокол, узел и порт. Логин и пароль остаются внутри программы.
метки, дата создания, последнее использование
Достаточно, чтобы помощник отсортировал и выбрал, ничего не открывая.
признак работы
Открыто ли окно этого профиля прямо сейчас.

Подключение занимает четыре шага
Всё, что вы вставляете, программа собирает за вас. Она знает путь к файлу сервера внутри установки, адрес, на котором интерфейс действительно слушает, и ваш нынешний токен.
Состояние MCP на панели зависит от интерфейса, а не от отдельной настройки. Оно показывает «Готов» только пока локальный интерфейс правда слушает, так что вы не вставите настройку для несуществующего сервера.
- 1
Включите локальный интерфейс
Откройте раздел API & MCP в ARMANOS и переключите тумблер. Признак должен показывать «Работает», а состояние MCP «Готов».
- 2
Поставьте Node.js
Ваш ИИ-инструмент запускает сервер командой node. Без Node.js на этом компьютере он сообщит только о ненайденной команде.
- 3
Скопируйте настройку клиента
Одна кнопка копирует весь блок JSON, где путь, адрес и токен уже подставлены.
- 4
Вставьте её и перезапустите клиент
В Claude Desktop: настройки, затем раздел для разработчика, затем правка файла настроек. Другие клиенты MCP читают файл такого же вида.

Что на самом деле написано в блоке настройки
Никакой учётной записи заводить не нужно, и никакого ключа от нас тоже. Две переменные окружения это вся настройка, и сервер читает их один раз при запуске.
Если порт 50325 занят другой программой, ARMANOS садится на свободный и говорит об этом на панели. В скопированном блоке тогда стоит тот порт, который взят на самом деле, а не тот, который не вышел.
Смена токена действует для интерфейса немедленно. В уже вставленном блоке остаётся прежний токен, поэтому скопируйте блок заново и перезапустите клиент, иначе каждый вызов вернёт 401.
Путь в поле args ведёт внутрь установленной программы. В сборке AppImage для Linux программа сначала кладёт файл сервера рядом со своими данными: AppImage разворачивается во временный каталог с новым именем при каждом запуске. Путь туда сработал бы один раз и молча сломался бы.
- command
- node
- args[0]
- …/Resources/mcp/armanos-mcp-server.js
- env.ARMANOS_API_URL
- http://127.0.0.1:50325
- env.ARMANOS_API_TOKEN
- токен из раздела API & MCP
Весь блок лежит внутри mcpServers.armanos, в том виде, который читает большинство клиентов MCP.
Одна ваша фраза превращается в несколько вызовов
Допустим, вы просите открыть три профиля для магазинов и дать код входа для одного из них. Номеров ваших профилей помощник не знает, поэтому начинает со списка.
Запуску отведено девяносто секунд, остальным вызовам пятнадцать. Открытие окна на движке ARMANOS Browser ждёт, пока движок объявит свой порт отладки, а это дольше, чем прочитать список.
Внутри сервера ничего не копится и не склеивается. Один вызов инструмента это один запрос и один ответ, поэтому в журнале вашего клиента видно, о чём именно просили и что пришло в ответ.
- 1
list_profiles
Читает все профили и сопоставляет ваши слова с именами, группами и метками.
- 2
launch_profile, три раза
По вызову на профиль. Каждый проходит проверку лицензии и тарифа и возвращает свой адрес отладки.
- 3
get_one_time_code
Возвращает нынешние шесть цифр и остаток секунд для профиля, у которого сохранён ключ двухфакторной защиты.
- 4
stop_profile
Когда работа сделана, по вызову на профиль закрывает его окна и сообщает, сколько закрыл.
Токен остаётся на этом компьютере, и всё, что он охраняет, тоже
Интерфейс слушает 127.0.0.1 и больше нигде. Он выключен, пока вы его не включите, а при первом запуске программа пишет случайный токен из 48 знаков в файл, который на macOS и Linux создаётся только для вашей учётной записи.
Одной петли для защиты мало. Страницы, которые вы открываете, работают на этой же машине, а подменённое имя домена достаёт до 127.0.0.1 как до своего. Поэтому интерфейс отклоняет запрос, похожий на приход со страницы, ещё до любого ответа, включая версию программы.
И честно про другой конец. Сервер ничего не отправляет нам и не нуждается в сети, но всё, что вернул инструмент, попадает в переписку с помощником. Где эта переписка обрабатывается, решает ваш ИИ-инструмент, а не ARMANOS.
Только петля
Другой компьютер до интерфейса не дотянется, и остальная сеть тоже.
Токен на каждый вызов
Уходит заголовком x-api-token. Открыт только /status, и только для программы на этой машине.
Странице не отвечают
Заголовок Origin, Sec-Fetch-Site не равный none или чужое имя узла получают отказ 403.
В ответах нет паролей
Список прокси отдаётся без паролей, а в списке профилей есть только протокол, узел и порт.
Коды, а не ключи
get_one_time_code возвращает шесть цифр и остаток секунд. Сам ключ двухфакторной защиты из программы не выходит.
Неудачный вызов возвращается фразой, а не зависанием
Сервер написан так, чтобы не умирать от битого кадра, недоступного интерфейса или испорченного ответа. Неудача превращается в обычную ошибку инструмента с текстом, который помощник может вам прочитать.
Потолок в пять мегабайт важнее, чем кажется. Большой список профилей с длинными заметками до него дорастает, а оборванное чтение раньше оставляло вызов неразрешённым навсегда, и со стороны это выглядело как зависший помощник.
Отказы интерфейса передаются со своим текстом, а не пересказываются. Отказ про предел тарифа доходит до вас именно как предел тарифа, а не как безымянная неудача.
| Что случилось | Что услышит помощник |
|---|---|
| Программа закрыта или интерфейс выключен | Что локальный интерфейс недоступен по названному адресу и что его надо включить в разделе API & MCP. |
| Токен не совпал | Отказ интерфейса и подсказка сверить ARMANOS_API_TOKEN с токеном на панели. |
| Неизвестный номер профиля | Тот самый отказ, который дал интерфейс, без переписывания. |
| Ответ больше пяти мегабайт | Просьба сузить запрос вместо вызова, который не вернётся никогда. |
| Запуск идёт дольше девяноста секунд | Сообщение об истёкшем ожидании. Окно при этом может всё же открыться, поэтому сначала загляните в программу. |
Чего это не делает
- Не нажимает, не печатает и не переходит по ссылкам внутри страницы. Окно оно открывает и закрывает, а вести саму страницу должен клиент отладки, подключённый к адресу из ответа на запуск.
- Не запускает ваши сохранённые сценарии. Такие ходы в локальном интерфейсе есть, но ни один инструмент MCP их сегодня не зовёт.
- Не правит существующий профиль. Инструмента для изменения нет, поэтому переименование, метки и смена прокси остаются работой в программе.
- Не открывает профиль без окна. Запуск без окна интерфейс умеет, но в описании инструментов этого довода нет.
- Не работает через сеть. Интерфейс отвечает только на петлю, поэтому ИИ-инструмент и ARMANOS должны стоять на одном компьютере.
Как проверить
У каждого утверждения выше есть адрес в хранилище кода.
- Девять инструментов, каждый привязан к одному ходу локального интерфейса
- apps/desktop/src/mcp/armanos-mcp-server.js
- Проверка токена и отказ всему, что похоже на страницу сайта
- apps/desktop/src/lib/local-api.js · apps/desktop/test/local-api-gate.js
- Блок настройки, который собирает программа: путь, адрес и токен
- apps/desktop/src/manager/renderer.js · apps/desktop/src/main/main.js
- Путь к файлу сервера остаётся живым после перезапуска, включая AppImage
- apps/desktop/src/main/main.js · apps/desktop/test/путь-mcp-переживает-перезапуск.js
- Случайный токен и выключенный до вашего решения локальный интерфейс
- apps/desktop/src/lib/api-config.js
Читать дальше
Локальный интерфейс
Те самые ходы, которые зовёт сервер MCP, и как звать их самому.
Сборщик сценариев
Сохранённые сценарии из шагов, которые собираются без программирования.
Одноразовые коды
Где лежит ключ двухфакторной защиты и как код доходит до автоматизации.
Безопасность
Что остаётся на вашем компьютере, что уходит и чем защищено.
Включите и подключите своего помощника
Поставьте ARMANOS, откройте раздел API & MCP, скопируйте блок настройки и вставьте его в свой ИИ-инструмент.