browser-control-mcp: безопасный отклик на hh.ru
browser-control-mcp
Локальный MCP-сервер, который управляет открытой Chrome-сессией через CDP, помогает откликнуться на hh.ru и блокирует платежи
Средний риск
Средний уровень ставим, когда инструмент запускает код, ходит в сеть или читает файлы проекта. Перед установкой посмотрите, что именно он делает.
Почему такой уровень
- Может отправить отклик и сопроводительное письмо на реальную вакансию после подтверждения
- Управляет уже открытой Chrome-сессией пользователя через мощный протокол CDP
Установка
В терминале, через 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/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
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Кнопка откроет агент и предложит добавить сервер. Если ничего не произошло, скопируйте конфиг ниже.
Выполните в терминале
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
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Склонируй репозиторий, выполни 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-агентов к заметкам
CLI для всех API Google Workspace с выводом в JSON и набором скиллов для агентов: Drive, Gmail, Calendar, Sheets и другие
Локальный поиск по заметкам, документации и расшифровкам встреч в Markdown: ключевые слова, смысловой поиск и ранжирование, есть MCP
Менеджер задач для AI-разработки: разбирает PRD на задачи с зависимостями и ведет агента по ним через MCP или CLI