Afina MCP - 7 реальных сценариев автоматизации
Пятница, 23:00. Скрипт регистрации Bybit упал на 34 из 50 аккаунтов. Логи - 800 строк. Завтра в 9:00 открывается Launchpad. Раньше это означало: сидеть, листать, искать ошибку, вносить правки и перезапускать. Сейчас я написал три предложения в чат и пошел спать.
Агент прочитал логи, нашел причину (таймаут 5 секунд вместо нужных 15), исправил скрипт, проверил 4 аккаунта с проблемными прокси и отправил мне итог. В 23:14 все уже было готово.
Об этом и поговорим в статье.
Что такое MCP и как агент «видит» Afina - 3 минуты теории
Первая наша статья рассказывала, что такое MCP-сервер, а подробный гайд по MCP-серверу показывает, как его настроить. Здесь - только то, что нужно понимать перед практикой.
MCP - это не плагин и не бот-команды. Это API, через который AI-агент (Claude, GPT или любой другой) взаимодействует с Afina так же, как ты, только без мышки. Он может читать списки аккаунтов, создавать скрипты, запускать проверку прокси, обновлять модули. Все, что ты делаешь руками в интерфейсе, агент делает через API-вызовы.
Что агент реально может:
- Читать: аккаунты, скрипты, логи, модули, прокси, базы данных, переменные
- Писать: создавать и редактировать скрипты, аккаунты, модули, группы задач
- Запускать: скрипты на аккаунтах, браузерные сессии, проверку прокси
- Анализировать: логи ошибок, состояние прокси, структуру скриптов
- Исправлять: параметры скриптов, код модулей, назначения прокси
Что агент не может: видеть зашифрованные пароли и API-ключи. Он видит их названия и метаданные, но не значения. Это намеренное ограничение: твои секреты остаются секретами даже от агента.
Как Afina поднимает MCP-сервер и как подключить к нему агента
Что происходит при запуске Afina
Когда ты запускаешь Afina, она автоматически поднимает локальный HTTP REST API сервер. Ничего дополнительно настраивать не нужно: сервер стартует вместе с приложением и слушает порт 50778. Если порт занят, Afina автоматически занимает следующий свободный в диапазоне 50778-50787.
Этот сервер и есть точка входа для агента. Пока Afina запущена, API доступен.
Что такое afina-mcp и откуда он берется
afina-mcp - это отдельный npm-пакет, который не входит в Afina. Это посредник между агентом и Afina API. Ты запускаешь его через npx прямо из командной строки, и он загружается автоматически.
Схема взаимодействия:

- Claude отправляет в
afina-mcpJSON-RPC вызов через stdin:{"method":"tools/call","params":{"name":"list_accounts"}} afina-mcpтранслирует его в HTTP-запрос к Afina с заголовкомx-api-key- Afina возвращает данные ->
afina-mcp-> Claude получает ответ
afina-mcp не сохраняет состояние и не ведет логи. Он живет ровно столько, сколько длится сессия Claude.
Что агент видит через MCP
Когда сервер подключен, у Claude появляется 92 инструмента. Несколько примеров из реального подключения:
list_accounts- полный список профилей: id, название, прокси, теги, группы, статусisRunningstart_browser/stop_browser- запуск и остановка браузерной сессии для конкретного профиляrun_script/get_run_logs- запуск скрипта и чтение логов выполненияcreate_module/update_module- написание и обновление JS-модулей (файлы сохраняются на диске вdata/modules/{UUID}/)check_all_proxies- массовая проверка всех прокси с обновлением статусов в базеcreate_task_group/start_task_group- планирование и запуск групп задач
Агент не видит зашифрованные пароли и токены, только метаданные. Твои секреты защищены даже от агента.
Мастер-промпт для подключения
Скопируй промпт ниже, вставь свой API-ключ и отправь в любом Claude-клиенте (Claude Code, Claude Desktop, Cursor, Cline). Агент выполнит все шаги сам:
Налаштуй підключення до Afina MCP сервера.
Мій API-ключ Afina: [ВСТАВИТИ_КЛЮЧ]
Afina запущена, сервер доступний на http://localhost:50778
Зроби наступне:
1. Виконай команду:
claude mcp add afina --scope project -e AFINA_API_KEY=[ВСТАВИТИ_КЛЮЧ] -e AFINA_URL=http://localhost:50778 -- npx -y afina-mcp
2. Додай рядок .mcp.json до файлу .gitignore (або створи його, якщо не існує).
3. Перевір підключення:
claude mcp list
Якщо бачиш "afina: npx -y afina-mcp - ✓ Connected" - підключення успішне.
4. Нагадай мені перезапустити Claude Code - MCP-інструменти завантажуються тільки при старті нової сесії.
Якщо Node.js не встановлено або Afina не запущена - повідом про це окремо.
Хочешь подключить Afina ко всем своим проектам сразу? Замени
--scope projectна--scope user, и MCP станет доступен глобально.
Что нужно проверить перед отправкой промпта:
| Что | Как проверить |
|---|---|
| Afina запущена | иконка в системном трее |
| Node.js >= 18 | node --version в терминале |
| API-ключ скопирован | Afina -> Settings -> API key |
| Claude Code установлен | claude --version |
Семь независимых кейсов с Afina MCP
Без хронологии и без теории. Семь реальных задач: конкретные промпты, конкретные результаты. Каждый кейс автономный.
Проверка прокси: живые или мертвые
Пул из 20 прокси. Некоторые активности отработали, некоторые прокси иногда «отваливаются», некоторые просто тупят. Перед запуском новой активности нужно знать состояние пула прокси и убрать нежизнеспособное без ручного перебора.
Раньше: открыть список прокси, запустить массовую проверку, подождать, вручную просмотреть результаты, найти и удалить мертвые.
Сейчас - один запрос:
Перевір усі проксі в Afina.
Скільки живих, скільки мертвих?
Покажи список мертвих - я їх видалю.
Агент отвечает:
«Проверка завершена. Из 20 прокси: 18 живых, 2 не отвечают. Мертвые: 91.211.33.62, 64.7.251.207.

Результат: точный список живых и мертвых за секунды. Удаление мертвых - два клика вручную в Afina UI. Раз
200 профилей с гео-разбивкой и тирами - один промпт
Подготовка к новой активности. 200 аккаунтов: уникальные названия, правильные прокси по гео, соответствующие таймзоны и языки, четыре группы по тирам.
Раньше: 200 раз открывать форму, вводить параметры, выбирать прокси, сохранять. Несколько часов работы.
Сейчас:
Створи 200 акаунтів з такими налаштуваннями:
Назви: ACC1 до ACC200
Розбивка по гео і тирам:
- ACC1–50: проксі з групи "pl-proxies", таймзона Europe/Warsaw, мова: English - Tier 1
- ACC51–100: проксі з групи "de-proxies", таймзона Europe/Berlin, мова: English - Tier 2
- ACC101–150: проксі з групи "ua-proxies", таймзона Europe/Kyiv, мова: Ukrainian - Tier 3
- ACC151–200: проксі з групи "ua-proxies", таймзона Europe/Kyiv, мова: Ukrainian - Tier 4
Створи чотири групи: "Tier 1", "Tier 2", "Tier 3", "Tier 4".
Поклади відповідні 50 акаунтів у кожну.
Перед збереженням покажи перші 5 акаунтів кожного тиру - я підтверджу.
Агент:
«Подготовил 200 аккаунтов. Первые 5 по тиру: Tier 1 -> ACC1 (pl.x.x.1, Europe/Warsaw, en) ... ACC5 Tier 2 -> ACC51 (de.x.x.1, Europe/Berlin, en) ... ACC55 Tier 3 -> ACC101 (ua.x.x.1, Europe/Kyiv, uk) ... ACC105 Tier 4 -> ACC151 (ua.x.x.51, Europe/Kyiv, uk) ... ACC155 Подтверждаешь?»
Ты отвечаешь «да», и через несколько минут все 200 профилей есть в системе, распределены по группам с правильными параметрами.

Запускаем активность: группы задач
Профили есть - пора запускать скрипт. Активность "Bybit promo" на первой сотне аккаунтов, параллельно по 10, дневное окно 09:00-15:00, через группы задач.
Створи групу задач "Bybit promo" для акаунтів ACC1 до ACC100.
Запускай по 10 акаунтів паралельно.
Повторна спроба при помилці: 1 раз.
Вікно запуску: 09:00–15:00 щодня.
Таймаут на один скрипт: 30 хвилин.
Рандомізуй порядок акаунтів при кожному запуску.
За кулисами агент настраивает точные параметры группы: timeFrom: "09:00", timeTo: "15:00", activeSession: 10, timeout: 30, repeatCount: 1, isRepeatable: true. Это те же поля, которые в интерфейсе разбросаны по вкладкам: агент выставляет их за один запрос, а рандомизация включается через параметр shuffle.
Что-то упало. Агент, разберись
Первая партия отработала. Открываешь телефон - куча уведомлений об ошибках. 34 из 50 аккаунтов упали. Причина неизвестна.
Раньше: открывать логи каждого аккаунта по очереди, листать сотни строк, искать паттерн, вносить правки.
Сейчас - три шага:
Шаг 1. Читаем логи:
Прочитай логи групи задач "Bybit promo".
Скільки задач завершились з помилкою?
Що за помилки і на яких кроках?
Згрупуй по типу.
Агент:
«34 задачи упали. Разбивка по типам:
- 30 аккаунтов - шаг "Ожидание капча-кнопки", ошибка:
element not found (timeout 5000ms). Причина: таймаут слишком короткий для загрузки Bybit Puzzle.- 4 аккаунта - ошибка сети:
proxy connection refused. Это прокси, не скрипт».
Шаг 2. Исправляем скрипт:
Виправ таймаут у скрипті Bybit Registration
з 5000 до 15000ms для кроку "Очікування капча-кнопки".
Агент находит нужный блок в JSON-структуре скрипта и меняет параметр. Подтверждает: «Таймаут обновлен. 5000 -> 15000ms».
Шаг 3. Разбираемся с прокси:
Знайди 4 акаунти, що впали з помилкою proxy connection refused.
Перевір їхні проксі.
Агент:
«Аккаунты: ACC7, ACC19, ACC34, ACC41. Проверил прокси - все 4 не отвечают. Хочешь назначить новые из группы "pl-proxies"?»
Так, призначи нові унікальні.
Диагностика + исправление + замена прокси - 5 минут, три естественных запроса. Раньше это занимало минимум час.
Telegram-дебаг: чтобы ошибки больше не падали молча
Таймаут исправили. Но в следующий раз может возникнуть что-то другое, и снова придется листать логи. Правильное решение: настроить Telegram-уведомления на каждую красную ветку скрипта, чтобы каждая ошибка сразу приходила в чат.
В скрипте «Bybit Registration» 15 красных веток - путей ошибки. Вручную добавить Telegram-блок к каждой - это несколько часов.
Відкрий скрипт "Bybit Registration".
Знайди всі червоні (error) гілки - тобто блоки, які ведуть по шляху помилки.
До кожної червоної гілки додай блок відправки в Telegram
з таким шаблоном повідомлення:
#️⃣ | Bybit Registration
ℹ️ | 🔴 Помилка
🐛 | Крок: {назва блоку}
📋 | {деталь помилки}
👤 | Акаунт: ${accountName}

Агент читает структуру скрипта, находит все 15 красных соединений и вставляет блоки с правильными параметрами. Каждый блок знает, на каком шаге возникла ошибка: название и деталь берутся из контекста выполнения.
Теперь каждая ошибка в каждом аккаунте приходит в чат - со скриптом, шагом и именем аккаунта. Ничего не падает молча.
API изменился. Обновляем модуль и не ломаем подпись
Сервис решения капчи изменил эндпоинт API. Модуль GEETEST MODULE (или твой кастомный captcha_solver) перестал работать. Все скрипты, которые его используют, падают.
Почему модули - это не просто JS-файлы
Прежде чем рассказать, как агент это решает, важный технический нюанс, который отличает Afina от «просто запустить файл».
Каждый JS-модуль в Afina подписан криптографическим алгоритмом Ed25519 на основе MD5-хеша всех файлов модуля: index.js, package.json, settings.json. Если любой файл изменить в обход системы, подпись становится недействительной, и исполнитель скриптов выдаст ошибку signature_invalid. Ни один скрипт не запустит модуль без актуальной подписи.
Это защита от несанкционированных изменений: даже если кто-то получит доступ к диску и будет править код напрямую, подпись сломается и модуль заблокируется.
После каждого легитимного обновления кода нужно обязательно сделать resign: пересчитать подпись под новое состояние файлов. Без resign модуль заблокирован.
Агент знает об этом и выполняет resign автоматически. Это ключевой момент.
Оновіть модуль captcha_solver - 2captcha змінив ендпоінт.
Старий: api.2captcha.com/in.php
Новий: api.2captcha.com/createTask
Після оновлення - одразу resign.
Агент:
- Открывает код модуля - читает
index.js - Находит старый эндпоинт, заменяет на новый
- Вызывает
resign_module- пересчитывает подпись под обновленное состояние файлов - Подтверждает: «Эндпоинт обновлен, resign выполнен. Все скрипты, которые используют этот модуль, теперь будут запускаться с новым API».

Написать модуль с нуля - тоже через агента
Не менее удобный сценарий - когда модуля вообще еще нет. Не нужно расписывать всю техническую логику: достаточно дать название, задачу, поля и ссылку на документацию, и агент сам разберется с форматом запросов:
Напиши JS-модуль "2captcha_geetest_solver":
- Що робить: відправляє Geetest-капчу на розв'язання через 2captcha і повертає токен
- Поля налаштувань: apiKey (рядок, обов'язкове)
- Вхідні параметри: imageBase64 (рядок)
- Документація: 2captcha.com/api-docs
Розберися з форматом запитів за документацією.
Після створення - resign.
Агент читает документацию, определяет правильные эндпоинты и формат запросов, пишет index.js с полной логикой, settings.json с описанием параметров, package.json с зависимостями, затем вызывает create_module и resign_module. Модуль появляется в библиотеке, и его можно подключать к любому скрипту через блок executeModule.
Аудит библиотеки модулей
Если модулей накопилось много, агент помогает навести порядок:
Покажи всі модулі.
Є серед них застарілі версії або ті, що не використовуються в жодному скрипті?
Агент просматривает список и сравнивает хеши модулей с их вызовами в скриптах. Находит «мертвые» версии - те, что остались после обновлений.
WebRTC не работает. Разбираемся через агента
Клиент жалуется: «У меня WebRTC не включается в Afina». Прокси вроде бы SOCKS5 с UDP от DataImpulse, но на browserleaks.com/webrtc показывает проблему.
Как на самом деле работает WebRTC в Afina
WebRTC, QUIC и WebTransport включаются автоматически, если SOCKS5-прокси реально поддерживает UDP-туннелирование. Ручного переключателя нет: система сама определяет возможности прокси.
Проблема в другом: многие провайдеры резидентских прокси заявляют поддержку UDP, но на практике UDP-трафик не туннелируется корректно. Признак: на browserleaks.com/webrtc WebRTC Public IP не совпадает с Remote IP. Это leak.
Проверить это вручную для 200 аккаунтов нереально. С MCP - один запрос:
Перевір усі проксі в групі "Main".
Для кожного вкажи: статус (живий/мертвий), підтримка UDP, країна, затримка.
Покажи окремо ті, де UDP не підтверджений.
Агент вызывает check_all_proxies и возвращает структурированный отчет:
«Из 60 прокси в группе "Main": 58 живых. Из них UDP подтвержден у 38, не подтвержден у 20. Список без UDP: [87.x.x.x, 91.x.x.x, ...]»
Акаунти з групи "Main", що мають проксі без UDP -
перемісти в групу "no-udp-proxies".
Призначи їм проксі зі списку "datacenter-udp".
Агент перебирает аккаунты, проверяет их текущие прокси, перемещает тех, кому нужна замена, и назначает новые без дублей.

Практический вывод: резидентские UDP-прокси, в том числе DataImpulse, часто не дают настоящего UDP-туннелирования. Датацентровые SOCKS5+UDP, например ProxyWing, стабильнее для WebRTC/QUIC. Twilio Network Test бывает ненадежен: может показывать ошибку UDP там, где ProxyWing-тест проходит чисто.
RabbyWallet: проверка баланса на пяти аккаунтах без скрипта
Нужно быстро проверить баланс RabbyWallet на 5 аккаунтах. Одноразово, без написания скрипта.
Решение - AI-сессия в браузере:
Відкрий по черзі акаунти ACC1, ACC2, ACC3, ACC4, ACC5.
Для кожного:
1. Запусти браузер
2. Відкрий розширення RabbyWallet
3. Розблокуй гаманець - використай змінну пароля rabby_pass
4. Прочитай загальний баланс у доларах і зафіксуй
5. Закрий браузер
Після всіх п'яти - виведи підсумкову таблицю: акаунт → баланс.
Агент выполняет:
start_browser- запускает ACC1 с его отпечатком, прокси, cookie- Открывает RabbyWallet через расширение
- Использует значение переменной
rabby_passдля разблокировки кошелька get_page_text- читает текст панели кошелька- Находит баланс и сохраняет
stop_browser- закрывает сессию- Повторяет для ACC2-5
Агент:
«Готово. Балансы: ACC1 - $34.76 браузер закрыт».
Никакого скрипта, никакого кода. Просто разговор.

OKX Boost: проверить текущие активности
Аналогичный сценарий, но теперь нужен не баланс, а список активностей на платформе:
Відкрий профіль ACC101.
Зайди на okx.com/boost.
Знайди всі активні завдання та активності на сторінці.
Зроби скріншот і поверни мені список: назва активності, умова, термін дії.
Закрий браузер.
Агент запускает браузер, загружает страницу OKX Boost, читает ее содержимое через get_page_text, делает take_screenshot и возвращает структурированный список:
«На OKX Boost сейчас активны:
- Web3 Task Marathon - 3 задачи, награда: 10 OKB за каждую, до 20 июня
- Invitation Bonus - за реферала +20 OKB, бессрочно
- Liquidity Mining Campaign - минимальный депозит $100, APY до 18%, до 30 июня Скриншот добавлен».
Если что-то пошло не так, агент не молчит: «Появилось модальное окно верификации - вот что увидел браузер», и передает скриншот для анализа.
Бонус: миграция профилей за 5 минут
Если ты переходишь в Afina с другого антидетект-браузера, агент переносит все профили автоматически.
Імпортуй усі профілі з Dolphin Anty в Afina.
Поклади в групу "migrated-dolphin-june".
Після міграції - перевір проксі кожного профілю і відзнач ті, що не проходять перевірку.
Агент подключается к Dolphin API, получает полный список профилей, переносит по одному, запускает проверку прокси и возвращает отчет:
«148 профилей перенесено успешно. 2 - ошибка парсинга cookie (файл поврежден). 12 имеют неработающие прокси - я отметил их тегом "proxy-error". Показать список?»
Поддерживается миграция из:
- AdsPower - через
adspower_import_profiles - Dolphin Anty - через
dolphin_import_profiles - Vision - через
vision_import_profiles
А если нужно перенести авторизованную сессию без повторного логина:
Експортуй куки з поточної вкладки Chrome
і встанови їх для акаунта ACC101.
Профиль открывается уже авторизованным.
Сравнение: как это было и как стало
| Задача | Раньше | С MCP-сервером |
|---|---|---|
| Создать 200 аккаунтов с гео-разбивкой, прокси и тирами | Несколько часов ручного заполнения | Один промпт, агент выставляет все параметры |
| Запустить активность "Bybit promo" на 100 аккаунтах | Вручную настраивать группу задач по полям | Один запрос: 10 параллельно, 09:00-15:00, таймаут 30 мин, рандомизация |
| Проверить 200 прокси и найти мертвые | Запустить вручную, ждать, анализировать, удалять по одному | check_all_proxies -> агент выдает список мертвых, удаление - 2 клика в UI |
| Проверить баланс RabbyWallet на 5 аккаунтах | Открывать каждый браузер, разблокировать вручную, смотреть | AI-сессия с паролем из переменной: один промпт -> таблица балансов |
| Проверить активности на OKX Boost | Открывать браузер, заходить, смотреть вручную | Агент заходит, читает страницу, возвращает структурированный список |
| Написать JS-модуль для нового API | Час читать доку, писать код, resign вручную | Ссылка на доку -> агент пишет, resign автоматически |
| Обновить модуль после изменения эндпоинта | Открыть, отредактировать, вручную resign | Один промпт -> edit + resign |
| Прочитать логи и найти причину ошибок | Листать сотни строк вручную | Агент читает, группирует по типам, объясняет причину |
| Добавить Telegram-нотификацию на 15 красных веток | Вручную несколько часов по блоку | Один запрос, агент вставляет все блоки |
| Диагностика UDP/WebRTC для 87 прокси | Ручное тестирование нереально | check_all_proxies + массовая замена аккаунтов |
С чего начать прямо сейчас - 5 действий на 5 минут
Если MCP-сервер уже подключен и ты еще не пробовал ничего из этого, вот самый быстрый старт:
-
Проверь прокси - напиши в чат:
«Перевір усі проксі в Afina і скажи, скільки живих і мертвих». Это безопасно и сразу показывает, как все работает. -
Прочитай логи - найди любую группу задач и напиши:
«Прочитай логи останнього запуску і скажи, що пішло не так». -
Посмотри на скрипт - напиши:
«Покажи список скриптів і для одного з них поясни, що він робить». Агент читает структуру и объясняет логику. -
Аудит модулей - напиши:
«Покажи всі модулі. Є серед них дублікати?». -
Разовая AI-сессия - запусти профиль и попроси агента что-то найти на странице. Без скрипта, без кода - просто разговор.
FAQ — Часто задаваемые вопросы
Безопасно ли давать агенту доступ к Afina?
Да, с несколькими важными оговорками. Агент никогда не видит зашифрованные значения ключей и паролей, только их названия. Удаление аккаунтов - только мягкое (данные восстанавливаемы), если явно не попросить «полное удаление». Деструктивные действия лучше выполнять с подтверждением: «покажи список перед удалением - я подтвержу».
Агент может сломать скрипт, если я попрошу его отредактировать?
MCP-сервер Afina имеет встроенный валидатор: перед сохранением скрипта он проверяет структуру, автоматически соединяет несвязанные блоки и исправляет мелкие ошибки в JSON. Даже если агент сделает что-то не совсем правильно, валидатор не даст сохранить некорректную структуру.
Почему после обновления модуля нужно делать resign? Это не автоматически?
Resign намеренно не автоматический. Если бы система подписывала файлы при каждом изменении без подтверждения, защита от несанкционированных изменений не имела бы смысла. Resign - это твое явное «я знаю об этих изменениях и подтверждаю их». Через агента это происходит одним запросом, но подтверждение остается за человеком.
Что такое activeSession: 0 в группе задач?
Значение 0 означает отсутствие лимита на параллельные сессии: скрипт будет запускаться на стольких аккаунтах одновременно, на сколько хватит ресурсов. Для большинства активностей лучше выставить конкретное число (5-10), чтобы не перегружать систему.
Если агент запустил браузер, он сам его закроет?
Да, если попросить. Но лучше явно указывать «закрой браузер после задачи», тогда сессия не останется открытой. Незакрытые браузерные сессии расходуют ресурсы.
Можно ли попросить агента написать скрипт «с нуля», и он будет правильным?
Агент читает внутреннюю документацию afina://docs/rpa-blocks и знает структуру блоков Afina. Простые и средние скрипты (клики, формы, условия, таймауты) он пишет корректно. Для очень сложных скриптов с нестандартной логикой лучше описать структуру детально или попросить агента показать результат перед сохранением. Валидатор MCP дополнительно подстрахует.
Поддерживаются ли npm-зависимости в модулях?
Да. Если агент пишет модуль с npm-зависимостью, например axios, он указывает ее в package.json. После create_module система установит зависимости автоматически.
