browser-control-mcp: безопасный отклик на hh.ru

browser-control-mcp

Локальный MCP-сервер, который управляет открытой Chrome-сессией через CDP, помогает откликнуться на hh.ru и блокирует платежи

MCP-сервер

Средний риск

Средний уровень ставим, когда инструмент запускает код, ходит в сеть или читает файлы проекта. Перед установкой посмотрите, что именно он делает.

Почему такой уровень

  • Может отправить отклик и сопроводительное письмо на реальную вакансию после подтверждения
  • Управляет уже открытой Chrome-сессией пользователя через мощный протокол CDP
Все причины и проверки
Российский стек

eno004731-cpu/browser-control-mcp

Установка

В терминале, через SkillFoxx CLI

npx skillfoxx add mcp/browser-control-mcp

Определит агенты на машине, проверит риск и зафиксирует версию.

Другие способы установки

Собрано автоматически, проверьте перед установкой.

Выполните в терминале

claude mcp add --transport stdio --env 'CDP_URL=<значение CDP_URL>' browser-control-mcp -- node

Или добавьте в файл .mcp.json, в проекте

{
  "mcpServers": {
    "browser-control-mcp": {
      "command": "node",
      "args": [],
      "env": {
        "CDP_URL": "<значение CDP_URL>"
      }
    }
  }
}

Если файл уже есть, добавьте сервер внутрь ключа mcpServers.

Ключи и настройки

NODE_ENVнеобязательная
Node environment
LOG_LEVELнеобязательная
Logging level
CDP_URLобязательная
URL for Chrome DevTools Protocol
ALLOWED_DOMAINSнеобязательная
Comma-separated list of allowed domains
DRY_RUNнеобязательная
Enable dry run mode
REQUIRE_CONFIRMATIONнеобязательная
Require confirmation for sensitive actions
BROWSER_ALLOWED_DOMAINSнеобязательная
Allowed browser domains
BROWSER_DENIED_DOMAINSнеобязательная
Denied browser domains
BROWSER_ALLOW_PRIVATE_NETWORKнеобязательная
Allow private network access
APPLICATION_STORE_PATHнеобязательная
Path to application storage file

Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.

Установить в Cursor

Кнопка откроет агент и предложит добавить сервер. Если ничего не произошло, скопируйте конфиг ниже.

Добавьте в файл ~/.cursor/mcp.json, для всех проектов

{
  "mcpServers": {
    "browser-control-mcp": {
      "command": "node",
      "args": [],
      "env": {
        "CDP_URL": "<значение CDP_URL>"
      }
    }
  }
}

Если файл уже есть, добавьте сервер внутрь ключа mcpServers. Для одного проекта тот же блок кладут в .cursor/mcp.json.

Ключи и настройки

NODE_ENVнеобязательная
Node environment
LOG_LEVELнеобязательная
Logging level
CDP_URLобязательная
URL for Chrome DevTools Protocol
ALLOWED_DOMAINSнеобязательная
Comma-separated list of allowed domains
DRY_RUNнеобязательная
Enable dry run mode
REQUIRE_CONFIRMATIONнеобязательная
Require confirmation for sensitive actions
BROWSER_ALLOWED_DOMAINSнеобязательная
Allowed browser domains
BROWSER_DENIED_DOMAINSнеобязательная
Denied browser domains
BROWSER_ALLOW_PRIVATE_NETWORKнеобязательная
Allow private network access
APPLICATION_STORE_PATHнеобязательная
Path to application storage file

Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.

Установить в VS Code

Кнопка откроет агент и предложит добавить сервер. Если ничего не произошло, скопируйте конфиг ниже.

Выполните в терминале

code --add-mcp '{"name":"browser-control-mcp","type":"stdio","command":"node","args":[],"env":{"CDP_URL":"<значение CDP_URL>"}}'

Или добавьте в файл .vscode/mcp.json, в проекте

{
  "servers": {
    "browser-control-mcp": {
      "type": "stdio",
      "command": "node",
      "args": [],
      "env": {
        "CDP_URL": "<значение CDP_URL>"
      }
    }
  }
}

Если файл уже есть, добавьте сервер внутрь ключа servers.

Ключи и настройки

NODE_ENVнеобязательная
Node environment
LOG_LEVELнеобязательная
Logging level
CDP_URLобязательная
URL for Chrome DevTools Protocol
ALLOWED_DOMAINSнеобязательная
Comma-separated list of allowed domains
DRY_RUNнеобязательная
Enable dry run mode
REQUIRE_CONFIRMATIONнеобязательная
Require confirmation for sensitive actions
BROWSER_ALLOWED_DOMAINSнеобязательная
Allowed browser domains
BROWSER_DENIED_DOMAINSнеобязательная
Denied browser domains
BROWSER_ALLOW_PRIVATE_NETWORKнеобязательная
Allow private network access
APPLICATION_STORE_PATHнеобязательная
Path to application storage file

Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.

Выполните в терминале

codex mcp add browser-control-mcp --env 'CDP_URL=<значение CDP_URL>' -- node

Или добавьте в файл ~/.codex/config.toml, для всех проектов

[mcp_servers.browser-control-mcp]
command = "node"
args = []
env = { CDP_URL = "<значение CDP_URL>" }

Если файл уже есть, допишите блок в конец.

Ключи и настройки

NODE_ENVнеобязательная
Node environment
LOG_LEVELнеобязательная
Logging level
CDP_URLобязательная
URL for Chrome DevTools Protocol
ALLOWED_DOMAINSнеобязательная
Comma-separated list of allowed domains
DRY_RUNнеобязательная
Enable dry run mode
REQUIRE_CONFIRMATIONнеобязательная
Require confirmation for sensitive actions
BROWSER_ALLOWED_DOMAINSнеобязательная
Allowed browser domains
BROWSER_DENIED_DOMAINSнеобязательная
Denied browser domains
BROWSER_ALLOW_PRIVATE_NETWORKнеобязательная
Allow private network access
APPLICATION_STORE_PATHнеобязательная
Path to application storage file

Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.

Выполните в терминале

gemini mcp add -s user -e 'CDP_URL=<значение CDP_URL>' browser-control-mcp node

Или добавьте в файл ~/.gemini/settings.json, для всех проектов

{
  "mcpServers": {
    "browser-control-mcp": {
      "command": "node",
      "args": [],
      "env": {
        "CDP_URL": "<значение CDP_URL>"
      }
    }
  }
}

Если файл уже есть, добавьте сервер внутрь ключа mcpServers.

Ключи и настройки

NODE_ENVнеобязательная
Node environment
LOG_LEVELнеобязательная
Logging level
CDP_URLобязательная
URL for Chrome DevTools Protocol
ALLOWED_DOMAINSнеобязательная
Comma-separated list of allowed domains
DRY_RUNнеобязательная
Enable dry run mode
REQUIRE_CONFIRMATIONнеобязательная
Require confirmation for sensitive actions
BROWSER_ALLOWED_DOMAINSнеобязательная
Allowed browser domains
BROWSER_DENIED_DOMAINSнеобязательная
Denied browser domains
BROWSER_ALLOW_PRIVATE_NETWORKнеобязательная
Allow private network access
APPLICATION_STORE_PATHнеобязательная
Path to application storage file

Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.

Добавьте в файл ~/.config/devin/mcp_config.json, для всех проектов

{
  "mcpServers": {
    "browser-control-mcp": {
      "command": "node",
      "args": [],
      "env": {
        "CDP_URL": "<значение CDP_URL>"
      }
    }
  }
}

Если файл уже есть, добавьте сервер внутрь ключа mcpServers. В легаси Cascade конфиг MCP лежит в ~/.codeium/windsurf/mcp_config.json.

Ключи и настройки

NODE_ENVнеобязательная
Node environment
LOG_LEVELнеобязательная
Logging level
CDP_URLобязательная
URL for Chrome DevTools Protocol
ALLOWED_DOMAINSнеобязательная
Comma-separated list of allowed domains
DRY_RUNнеобязательная
Enable dry run mode
REQUIRE_CONFIRMATIONнеобязательная
Require confirmation for sensitive actions
BROWSER_ALLOWED_DOMAINSнеобязательная
Allowed browser domains
BROWSER_DENIED_DOMAINSнеобязательная
Denied browser domains
BROWSER_ALLOW_PRIVATE_NETWORKнеобязательная
Allow private network access
APPLICATION_STORE_PATHнеобязательная
Path to application storage file

Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.

Бывший Windsurf.

Добавьте в файл cline_mcp_settings.json, для всех проектов

{
  "mcpServers": {
    "browser-control-mcp": {
      "command": "node",
      "args": [],
      "env": {
        "CDP_URL": "<значение CDP_URL>"
      }
    }
  }
}

Если файл уже есть, добавьте сервер внутрь ключа mcpServers. Файл настроек открывается в Cline: вкладка MCP Servers, кнопка Configure MCP Servers.

Ключи и настройки

NODE_ENVнеобязательная
Node environment
LOG_LEVELнеобязательная
Logging level
CDP_URLобязательная
URL for Chrome DevTools Protocol
ALLOWED_DOMAINSнеобязательная
Comma-separated list of allowed domains
DRY_RUNнеобязательная
Enable dry run mode
REQUIRE_CONFIRMATIONнеобязательная
Require confirmation for sensitive actions
BROWSER_ALLOWED_DOMAINSнеобязательная
Allowed browser domains
BROWSER_DENIED_DOMAINSнеобязательная
Denied browser domains
BROWSER_ALLOW_PRIVATE_NETWORKнеобязательная
Allow private network access
APPLICATION_STORE_PATHнеобязательная
Path to application storage file

Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.

Добавьте в файл .roo/mcp.json, в проекте

{
  "mcpServers": {
    "browser-control-mcp": {
      "command": "node",
      "args": [],
      "env": {
        "CDP_URL": "<значение CDP_URL>"
      }
    }
  }
}

Если файл уже есть, добавьте сервер внутрь ключа mcpServers.

Ключи и настройки

NODE_ENVнеобязательная
Node environment
LOG_LEVELнеобязательная
Logging level
CDP_URLобязательная
URL for Chrome DevTools Protocol
ALLOWED_DOMAINSнеобязательная
Comma-separated list of allowed domains
DRY_RUNнеобязательная
Enable dry run mode
REQUIRE_CONFIRMATIONнеобязательная
Require confirmation for sensitive actions
BROWSER_ALLOWED_DOMAINSнеобязательная
Allowed browser domains
BROWSER_DENIED_DOMAINSнеобязательная
Denied browser domains
BROWSER_ALLOW_PRIVATE_NETWORKнеобязательная
Allow private network access
APPLICATION_STORE_PATHнеобязательная
Path to application storage file

Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.

Форк Roo Code, папки .roo те же.

Добавьте в файл opencode.json, в проекте

{
  "mcp": {
    "browser-control-mcp": {
      "type": "local",
      "command": [
        "node"
      ],
      "environment": {
        "CDP_URL": "<значение CDP_URL>"
      }
    }
  }
}

Если файл уже есть, добавьте сервер внутрь ключа mcp.

Ключи и настройки

NODE_ENVнеобязательная
Node environment
LOG_LEVELнеобязательная
Logging level
CDP_URLобязательная
URL for Chrome DevTools Protocol
ALLOWED_DOMAINSнеобязательная
Comma-separated list of allowed domains
DRY_RUNнеобязательная
Enable dry run mode
REQUIRE_CONFIRMATIONнеобязательная
Require confirmation for sensitive actions
BROWSER_ALLOWED_DOMAINSнеобязательная
Allowed browser domains
BROWSER_DENIED_DOMAINSнеобязательная
Denied browser domains
BROWSER_ALLOW_PRIVATE_NETWORKнеобязательная
Allow private network access
APPLICATION_STORE_PATHнеобязательная
Path to application storage file

Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.

Добавьте в файл ~/.config/zed/settings.json, для всех проектов

{
  "context_servers": {
    "browser-control-mcp": {
      "command": "node",
      "args": [],
      "env": {
        "CDP_URL": "<значение CDP_URL>"
      }
    }
  }
}

Если файл уже есть, добавьте сервер внутрь ключа context_servers.

Ключи и настройки

NODE_ENVнеобязательная
Node environment
LOG_LEVELнеобязательная
Logging level
CDP_URLобязательная
URL for Chrome DevTools Protocol
ALLOWED_DOMAINSнеобязательная
Comma-separated list of allowed domains
DRY_RUNнеобязательная
Enable dry run mode
REQUIRE_CONFIRMATIONнеобязательная
Require confirmation for sensitive actions
BROWSER_ALLOWED_DOMAINSнеобязательная
Allowed browser domains
BROWSER_DENIED_DOMAINSнеобязательная
Denied browser domains
BROWSER_ALLOW_PRIVATE_NETWORKнеобязательная
Allow private network access
APPLICATION_STORE_PATHнеобязательная
Path to application storage file

Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.

Добавьте в файл .codeassistant/mcp.json, в проекте

{
  "mcpServers": {
    "browser-control-mcp": {
      "command": "node",
      "args": [],
      "env": {
        "CDP_URL": "<значение CDP_URL>"
      }
    }
  }
}

Если файл уже есть, добавьте сервер внутрь ключа mcpServers.

Ключи и настройки

NODE_ENVнеобязательная
Node environment
LOG_LEVELнеобязательная
Logging level
CDP_URLобязательная
URL for Chrome DevTools Protocol
ALLOWED_DOMAINSнеобязательная
Comma-separated list of allowed domains
DRY_RUNнеобязательная
Enable dry run mode
REQUIRE_CONFIRMATIONнеобязательная
Require confirmation for sensitive actions
BROWSER_ALLOWED_DOMAINSнеобязательная
Allowed browser domains
BROWSER_DENIED_DOMAINSнеобязательная
Denied browser domains
BROWSER_ALLOW_PRIVATE_NETWORKнеобязательная
Allow private network access
APPLICATION_STORE_PATHнеобязательная
Path to application storage file

Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.

Понадобится: Node.js

Сверено с репозиторием 26 сент. 2026, коммит 3c44313.

Текст для агента

Склонируй репозиторий, выполни npm install и cp .env.example .env, запусти Chrome с флагами --remote-debugging-port=9222 --user-data-dir на своем профиле, затем npm run dev, подключи сервер к Codex по MCP и держи DRY_RUN=true, пока не готов подтверждать каждый отклик вручную.

Другие способы из описания автора
npm install && cp .env.example .env

Установка зависимостей и базовый конфиг, после клонирования репозитория.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

Сервер подключается к уже запущенному Chrome через Chrome DevTools Protocol на локальном порту, а не открывает свой браузер и не хранит логины, пароли или cookies. Специализированный модуль hh.ru открывает страницу вакансии в текущей пользовательской сессии, проверяет авторизацию, парсит вакансию, находит вопросы работодателя и готовит сопроводительное письмо, но заполняет ответы и письмо только после подтверждения и не отправляет отклик без явного разрешения. Каждое действие классифицируется по риску: read и low выполняются сразу, sensitive и irreversible требуют одноразовый токен с ограниченным временем жизни, а critical (платежи, покупки, денежные переводы) заблокированы полностью без возможности подтверждения. По умолчанию включен режим dry-run: даже подтвержденный сценарий не нажимает финальную кнопку отклика, пока его явно не выключить. Отдельный универсальный модуль browser-control дает базовые инструменты открытия вкладок, кликов и заполнения полей с той же моделью риска, не привязанные к hh.ru.

Для кого. Для соискателей, которые хотят автоматизировать заполнение отклика на hh.ru, но настаивают на ручном подтверждении перед фактической отправкой.

Подходит, если

  • Нужна помощь с сопроводительным письмом и ответами на вопросы работодателя в реальной вкладке hh.ru
  • Важно, чтобы отклик не ушел без явного подтверждения, и чтобы платежные действия были заблокированы в принципе
  • Нужен универсальный контроль браузера с оценкой риска, а не только сценарий hh.ru

Не подходит, если

  • Нужна полностью автономная массовая отправка откликов без подтверждения: MVP намеренно этого не делает
  • Не хотите открывать Chrome с debug-портом: CDP-доступ по описанию автора очень мощный и должен слушать только 127.0.0.1
  • Нужны готовые инструменты заполнения ответов кандидата (parse_resume_context, fill_question_answers): они в разделе «планируемые», а не реализованы

Пример запроса к агенту

Открой эту вакансию на hh.ru, проверь, нужен ли вопрос от работодателя, и подготовь сопроводительное письмо, но не отправляй без меня

Ограничения

Проект сам называет себя MVP и учебной практикой по TypeScript. Требует запуска Chrome с открытым локальным debug-портом, автор явно предупреждает не открывать его наружу. Ряд инструментов (парсинг контекста резюме, заполнение ответов кандидата, полноценный submit_response) отмечены в README как план, а не готовая функциональность. После закрытия вкладки или перезапуска Chrome автоматического восстановления по URL или заголовку нет, если одинаковых вкладок несколько.

Как отключить. Остановите MCP-процесс и закройте Chrome с debug-портом, уберите сервер из конфигурации клиента.

MCP

Транспорт
stdio
Авторизация
не нужна
Переменные окружения
Переменные окружения
CDP_URL
обязательная
Адрес локального Chrome DevTools Protocol, по умолчанию http://127.0.0.1:9222.
DRY_RUN
Включен по умолчанию (true): финальная кнопка отклика не нажимается даже при подтверждении.
ALLOWED_DOMAINS
Список доменов, на которых разрешена автоматизация hh.ru, например hh.ru,ramenskoe.hh.ru.

Проверка безопасности

  • Может отправить отклик и сопроводительное письмо на реальную вакансию после подтверждения
  • Управляет уже открытой Chrome-сессией пользователя через мощный протокол CDP

Коротко о README

README подробно описывает модель безопасности: без хранения учетных данных, dry-run по умолчанию, одноразовые токены подтверждения с TTL, полную блокировку платежных действий и раздельные пары prepare/submit инструментов для разных сценариев отклика на hh.ru. Дана архитектурная схема, таблица реализованных и планируемых MCP tools, инструкции запуска Chrome с debug-портом на macOS, Linux и Windows и список переменных окружения. Отдельно подчеркнуто, что проект не официальный продукт Google, Chromium или hh.ru.

Частые вопросы

Может ли сервер отправить отклик без моего ведома?

Нет, по дизайну отклик не отправляется без явного подтверждения, а при DRY_RUN=true финальная кнопка не нажимается вовсе.

Может ли сервер выполнить платеж или покупку?

Нет, такие действия отнесены к уровню critical и заблокированы полностью, подтвердить их нельзя.

Официальный

Самостоятельно размещаемая база знаний с блочными ссылками и встроенным MCP-сервером для подключения AI-агентов к заметкам

MCP-серверСредний риск46,5 тыс.Звезды репозитория
Выбор редакции

CLI для всех API Google Workspace с выводом в JSON и набором скиллов для агентов: Drive, Gmail, Calendar, Sheets и другие

CLIВысокий риск31,2 тыс.Звезды репозитория
Выбор редакции

Локальный поиск по заметкам, документации и расшифровкам встреч в Markdown: ключевые слова, смысловой поиск и ранжирование, есть MCP

CLIСредний рискБез VPN30,1 тыс.Звезды репозитория
Выбор редакции

Менеджер задач для AI-разработки: разбирает PRD на задачи с зависимостями и ведет агента по ним через MCP или CLI

MCP-серверСредний риск28,1 тыс.Звезды репозитория
Foxx AIbrowser-control-mcp: безопасный отклик на hh.ru

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.