MCP
Сервер для ИИ-помощников
- 10
- Инструментов
- 127.0.0.1 по умолчанию
- Куда обращается
- stdio, JSON-RPC
- Связь
- Node.js
- Нужно доустановить
Что здесь делает MCP
MCP это общий язык между ИИ-помощником и небольшими программами, которые делают настоящую работу. Помощник просит названное действие с названными доводами, программа выполняет его и отвечает.
В ARMANOS такая программа уже есть: один файл на Node без сторонних зависимостей. Ваш ИИ-инструмент сам запускает его и разговаривает с ним через обычный ввод и вывод.
Новой дороги к профилям нет
Сам сервер ничего не открывает в браузере. Каждый вызов инструмента превращается ровно в один запрос к локальному API на петле, к тому же самому, куда ходит ваш скрипт.
То есть помощнику не выдают новую дорогу к вашим профилям. Ему выдают ту, что и так была, с тем же токеном и по тем же правилам.
Программа всё равно должна быть открыта
Десять инструментов десять ходов
Инструментов ровно десять, и каждый указывает на ход, который локальный API уже умеет. Обещанного на будущее в списке нет.
У каждого инструмента есть описание, написанное для модели, а не для меню. В нём сказано, что вернётся, чтобы помощник выбирал, а не угадывал.
| Инструмент | Что делает | Какой ход зовёт |
|---|---|---|
| get_status | Проверяет, отвечает ли локальный API, и говорит версию | GET /status |
| list_profiles | Все профили или страница по отбору: поиск, теги, группа, статус, открыт ли, а как в окне «Фильтры» ещё система, страна и IP выхода, ядро, без тегов и последний запуск. Заметок профиля не отдаёт | 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 | Создаёт профиль по имени, сценарию использования, шаблону отпечатка, прокси, заметке, тегам и месту для сайтов; без presetId не присланное заполняет заготовка по умолчанию этого компьютера, а presetId none обходится без неё. Заметки профиля в ответе нет, и той, что положила заготовка | POST /api/v1/profile/create |
| update_profile | Меняет только присланные поля, с проверками окна профиля, в том числе ручные значения отпечатка, вход сайта и ключ 2FA. Заметок профиля в ответе нет, пароля сайта и ключа тоже | POST /api/v1/profile/update |
| delete_profile | Кладёт профиль в корзину, откуда его можно вернуть | POST /api/v1/profile/delete |
| get_one_time_code | Текущий код и сколько секунд ему осталось | GET /api/v1/profile/code |
| list_proxies | Сохранённая библиотека прокси без паролей | GET /api/v1/proxy/list |
Что сказать помощнику
Всё, что вы пишете помощнику, уходит его поставщику. Пароли прокси, пароли сайтов и ключи 2FA вносите в программе, а не в разговор.
Восемь просьб ниже стоят и в программе, на экране «Для программистов», с кнопкой «Копировать». Каждую исполняют десять инструментов сервера MCP.
Проверь, что ARMANOS на связи, и скажи, какие профили сейчас открыты
Создай 5 профилей с именами от Shop-01 до Shop-05 в группе «Магазины», шаблон Windows
Открой все профили группы «Магазины» и скажи, какие не открылись и почему
Закрой все открытые профили
Покажи прокси из моей библиотеки, которые не прошли последнюю проверку
Сколько у меня профилей в каждой группе и какие из них закрыты паролем
Дай код двухфакторной защиты для профиля «Etsy-2»
Перенеси в корзину профили с тегом «test»
Профили с вашего экрана
Второго хранилища нет, и выгрузки тоже нет. Помощник видит те же записи, что и вы на экране профилей, а созданный им профиль сразу появляется в программе.
Помощник проходит те же проверки, что и вы, нажимая кнопку в программе. Запертая лицензия не даст запустить профиль, создание сверх тарифа откажет с той же причиной, что и в программе, и послабления для этой дороги нет.
В ответ на запуск приходит адрес канала отладки, если он есть. На ARMANOS Browser у каждого профиля свой адрес, поэтому внешний исполнитель подключается ровно к нужному профилю.
Опознаватели
Номер профиля, имя и сценарий использования. Номер берут доводом запуск, остановка, удаление и код.
Группа и шаблон отпечатка
Где лежит профиль и какой из пяти шаблонов на нём надет.
Сводка по прокси
Вид связи, узел и порт. Логин и пароль остаются внутри программы.
Теги и время
Достаточно, чтобы помощник отсортировал и выбрал, ничего не открывая.

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

Что лежит в настройке
Заводить у нас аккаунт не нужно, и ключа от нас тоже нет. У установленной программы вся настройка это две переменные окружения, и сервер читает их один раз при запуске. При каждом вызове он ещё ищет в папке данных программы порт, на котором интерфейс вправду слушает, и берёт его, если токен там совпал с его собственным.
Путь в доводах ведёт внутрь установленной программы. В сборках Linux, где этот путь меняется от запуска к запуску, программа кладёт файл сервера рядом со своими данными, и вписанная один раз настройка работает после перезапуска.
- command
- node
- args[0]
- …/Resources/mcp/armanos-mcp-server.js
- env.ARMANOS_API_URL
- http://127.0.0.1:50325
- env.ARMANOS_API_TOKEN
- токен с экрана «Для программистов»
Весь блок лежит под ключом mcpServers.armanos: такой вид читает большинство клиентов MCP.
Токен остаётся на машине
Интерфейс слушает только петлю и больше нигде. Пока вы его не включили, он выключен, а при первом запуске записывает случайный токен из 48 знаков в файл в папке вашей учётной записи.
Одной петли для границы мало. Страницы, которые вы открываете, работают на этой же машине, поэтому запрос с приметами страницы интерфейс отвергает ещё до хода состояния, и версии программы такая страница не узнаёт.
Только петля
Другой компьютер до него не дотянется, и ничто в вашей сети тоже.
Токен на каждом вызове
Идёт заголовком. Открыт только ход состояния, и только программе с этой машины.
Странице отказ
Запрос с приметами страницы браузера интерфейс отвергает до хода состояния.
В ответах нет паролей
Список прокси выбрасывает пароли, а в профиле остаются вид связи, узел и порт.
Коды а не ключи
Инструмент кода отдаёт сам код и остаток секунд. Сам ключ двухфакторной защиты не покидает программу.
Другой конец это ваш ИИ-инструмент
И одна честная строка про другой конец. Сервер ничего не шлёт нам и не нуждается в интернете, но всё, что вернул инструмент, попадает в память вашего помощника, а где она обрабатывается, решает ваш ИИ-инструмент, а не мы.
Поэтому list_profiles, create_profile и update_profile не отдают заметки профилей, а list_profiles и не ищет по ним: люди держат там логины и коды восстановления. Инструментов с куки у сервера нет по той же причине.
Когда вызов не удался
Ни битый кадр, ни недоступный интерфейс, ни невнятный ответ вашего помощника не уронят. Вместо тишины он получит обычную ошибку инструмента и прочитает её вам.
Отказ интерфейса доходит своим текстом, а не в пересказе. Отказ про предел тарифа вы получите именно как предел тарифа, а не как безымянную неудачу.
| Что случилось | Что услышит помощник |
|---|---|
| Программа закрыта или локальный API выключен | Что по этому адресу локальный API не отвечает и что делать: открыть программу или включить локальный API. |
| Токен не сошёлся | Ошибка интерфейса и подсказка сверить токен в настройке с токеном на панели. |
| Неизвестный номер профиля | Тот самый отказ, который выдал интерфейс, без пересказа. |
| Ответ больше пяти мегабайт | Просьба сузить запрос вместо вызова, который никогда не вернётся. |
| Запуск идёт дольше девяноста секунд | Отказ по времени с именем интерфейса. Окно может всё же открыться, поэтому загляните в программу до повтора. |
Чего это не делает
- Не нажимает, не печатает и не переходит по ссылкам внутри страницы. Окно оно открывает и закрывает, а вести саму страницу должен клиент отладки, подключённый к адресу из ответа на запуск.
- Не запускает ваши сохранённые сценарии. Такие ходы в локальном API есть, но ни один инструмент MCP их сегодня не зовёт.
- Не ставит профилю пароль и куки. update_profile отказывает в этих полях, называя их, и они остаются работой в программе.
- Не открывает профиль без окна на один раз. У launch_profile такого довода нет, а update_profile с headless: true велит профилю открываться без окна всегда.
- Не работает через сеть. Интерфейс отвечает только на петлю, поэтому ИИ-инструмент и ARMANOS должны стоять на одном компьютере.
Как проверить
У каждого утверждения выше есть адрес в исходниках.
- Десять инструментов, и каждый привязан к одному ходу локального API
- 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
- Токен случайный, а локальный API выключен, пока вы его не включите
- apps/desktop/src/lib/api-config.js
- Сервер находит порт, на котором интерфейс вправду слушает, и говорит, выключен ли интерфейс или закрыта программа
- apps/desktop/src/mcp/armanos-mcp-server.js · apps/desktop/test/mcp-находит-сдвинутый-порт.js
- list_profiles отбирает профили доводами локального API и не отдаёт заметок
- apps/desktop/src/mcp/armanos-mcp-server.js · apps/desktop/test/api-список.js
- Отборы окна «Фильтры» в list_profiles и местном API дают те же профили, что само окно
- apps/desktop/src/manager/отбор-списка.js · apps/desktop/test/api-отборы-окна-живьём.js
- create_profile берёт заготовку по умолчанию этого компьютера, presetId none и другую заготовку; заметки заготовки в ответе нет; негодный presetId отвергается словами
- apps/desktop/src/mcp/armanos-mcp-server.js · apps/desktop/test/заготовка-api-и-mcp-живьём.js
Вопросы
- Сколько помощник ждёт ответа?
- На запуск профиля отведено девяносто секунд, на любой другой вызов пятнадцать. Открытие окна на ARMANOS Browser ждёт, пока движок объявит свой канал отладки, а это дольше, чем прочитать список.
- Собирает ли сервер вызовы в пачки?
- Нет. Один вызов инструмента это один запрос и один ответ, поэтому в журнале вашего клиента видно ровно то, что спросили, и ровно то, что пришло.
- А если обычный порт уже занят?
- Программа займёт свободный и скажет об этом на панели. В скопированном блоке будет стоять тот порт, который вправду работает, а не тот, что не удался. В блоке, вставленном раньше, остаётся старый адрес, а новый порт сервер сам ищет в папке данных программы.
- Я сменил токен, и вызовы перестали проходить. Почему?
- В уже вставленном блоке остался прежний токен, и интерфейс отвергает его сразу. Скопируйте блок заново и перезапустите своего помощника.
- Зачем помощник сначала просит список профилей?
- Ваших номеров он не знает, поэтому начинает со списка и сверяет ваши слова с именами, группами и тегами. Только после этого он зовёт инструмент, которому нужен номер профиля.
Читать дальше
Локальный API
Те самые ходы, которые зовёт сервер MCP, и как звать их самому.
Сборщик сценариев
Сохранённые сценарии из шагов, которые вы собираете без программирования.
Одноразовые коды
Где лежит ключ двухфакторной защиты и как код доходит до автоматизации.
Безопасность
Что остаётся на вашем компьютере, что уходит и чем защищено.
Включите и подключите своего помощника
В ARMANOS откройте раздел «Для программистов», скопируйте блок настройки и вставьте его в свой ИИ-инструмент.