npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

afina-mcp

v0.10.4

Published

MCP server for Afina anti-detect browser automation. Lets LLMs (Claude, GPT-4, Gemini, local) manage accounts, write/test/run RPA scripts & modules, schedule task groups, and inspect proxies/databases/variables in Afina via dialogue.

Readme

afina-mcp

MCP-сервер для Afina — антидетект-браузера. Подключает любой LLM (через MCP-совместимый клиент: Claude Desktop, Claude Code, Cursor, Cline, Continue и др.) к десктопному приложению Afina и даёт LLM возможность управлять аккаунтами, писать/тестировать/запускать RPA-скрипты и модули, ставить задачи с расписанием, работать с прокси/базами/переменными — всё через диалог.

⚠️ Требуется запущенное десктоп-приложение Afina с включённым API key (Settings → API key). MCP-сервер — это бридж к локальному HTTP API Afina на http://127.0.0.1:50778. Без приложения tools будут падать с ECONNREFUSED.


Что умеет

  • 👤 Аккаунты (полный CRUD) — list/get/create (с авто-генерацией фингерпринта)/update/soft-delete/hard-delete. Прокси, теги, группы, шумы фингерпринта, экран, startup URLs, per-account настройки.
  • 🌐 Управление браузером — старт/стоп профиля, eval_in_browser (JS в контексте страницы), find_clickable/find_input (найти элемент по тексту — селекторы не угадываются вслепую), get_page_text, take_screenshot.
  • 🔑 Переменные аккаунта — plain (account.settings) и зашифрованные (account_data_blob): get/set/delete отдельных ключей. Зашифрованные расшифровываются executor'ом перед запуском скрипта.
  • ✍️ RPA-скрипты — list/get/create/update/run/stop. LLM генерирует JSON { elements, connections, startElement }, который Afina исполняет тем же executor'ом что и UI-built скрипты. Есть валидатор + автозаполнение label/targetPosition.
  • 🧩 RPA-модули (executeModule) — list/get/create/update/resign/delete/hard-delete. Создал модуль → правишь файлы в moduleDirAbs напрямую (Read/Edit/Write хоста) → resign_module (обязательно — иначе executor не запустит).
  • Задачи и группы задач — полный контроль как из UI: расписание (окно времени суток / часов), повторы, таймауты, лимит параллелизма, отложенный запуск (executeAt с natural-language: "in 5m", "tomorrow 09:00", "2026-05-11 14:30"). run_script_on_accounts — идемпотентный композитный запуск на N аккаунтах.
  • 🪵 Логи — чтение лога задачи/запуска по uuid, отслеживание прогресса в реальном времени.
  • 🛡 Прокси — проверка (с UDP-тестом для socks5), bulk-аудит, добавление с прогрев-проверкой. Обновляет proxy и per-account proxy_usage кэш.
  • 🗄 Базы данных — подключения для RPA-блока database: list/get/create/update/delete/hard-delete (SQLite/Postgres/MySQL/etc).
  • 📊 Глобальные переменные (${name} в скриптах) и Keys Catalog — list/create/update/delete.
  • 📧 Email (IMAP) — список credentials, включить/выключить мониторинг.

Всего ~67 tools. Полный список с параметрами — docs/TOOLS.md.


Установка

1. Получи API key

В десктопном приложении Afina: Settings → API key. Скопируй.

2. Подключи к MCP-клиенту

Claude Desktop (macOS / Windows)

Открой конфиг:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "afina": {
      "command": "npx",
      "args": ["-y", "afina-mcp"],
      "env": {
        "AFINA_URL": "http://127.0.0.1:50778",
        "AFINA_API_KEY": "<твой ключ>"
      }
    }
  }
}

Перезапусти Claude Desktop. Должна появиться иконка молотка с tools от Afina.

Claude Code (CLI)

claude mcp add afina \
  -e AFINA_API_KEY=<твой ключ> \
  -e AFINA_URL=http://127.0.0.1:50778 \
  -- npx -y afina-mcp

Cursor

.cursor/mcp.json в корне проекта (или ~/.cursor/mcp.json глобально):

{
  "mcpServers": {
    "afina": {
      "command": "npx",
      "args": ["-y", "afina-mcp"],
      "env": { "AFINA_API_KEY": "<твой ключ>" }
    }
  }
}

Cline / Continue / другие

Любой MCP-клиент с stdio-транспортом: command: npx, args: ["-y", "afina-mcp"], env AFINA_API_KEY (+ опц. AFINA_URL).


Конфигурация (env)

| Переменная | Default | Описание | |---|---|---| | AFINA_URL | http://127.0.0.1:50778 | Базовый URL Afina HTTP API. | | AFINA_API_KEY | — (required) | Ключ из Settings → API key. | | AFINA_MCP_EVAL_ENABLED | 1 | Поставь 0 чтобы выключить eval_in_browser (даёт LLM полный JS-доступ к страницам). |


Resources

  • afina://docs/rpa-blocks — markdown-каталог всех RPA-блоков с параметрами и JSON-примерами + ПРАВИЛА формата хранения (left/top, targetPosition обязателен, и т.д.). LLM обязан прочитать ЭТО прежде чем писать скрипт.
  • afina://docs/script-schema — JSON Schema для script.settings.

Документация

  • docs/TOOLS.md — полный справочник всех tools с параметрами.
  • docs/PUBLISHING.md — как опубликовать в npm и реестры MCP.
  • docs/WHAT_WAS_BUILT.md — что сделано, архитектура, история.
  • HTTP API Afina (бэкенд): AfinaTauri/docs/API/README.md в основном репо.

Разработка

npm install
npm run build          # tsc → dist/
npm run dev            # tsc --watch
node dist/index.js     # smoke-тест (запустится на stdio, ждёт MCP-сообщений)

После любого изменения кода — npm run build, потом рестарт MCP-клиента (он перечитает dist/).

Структура:

src/
  index.ts            — entrypoint, регистрация tools + resources
  client.ts           — HTTP-клиент к Afina API (axios + x-api-key)
  resources.ts        — afina://docs/* resources
  blocks-catalog.ts   — каталог RPA-блоков (для rpa-blocks resource)
  block-labels.ts     — мапа type → sidebar.X label
  script-validator.ts — валидация/автофикс script.settings
  tools/
    accounts.ts       — аккаунты CRUD + старт/стоп браузера
    browser.ts        — eval / find / screenshot
    data.ts           — databases / global vars / keys / account vars
    modules.ts        — RPA-модули CRUD + resign
    scripts.ts        — скрипты CRUD + run/stop
    tasks.ts          — задачи и группы задач (+ parseTime helper)
    proxies.ts        — прокси
    emails.ts         — IMAP credentials
    types.ts          — ToolDef interface

Лицензия

MIT.