browse — MCP-сервер, который пускает ИИ-агентов в ваш настоящий браузер
📂 Исходный код на GitHubMCP-сервер и расширение для Chromium, которые дают ИИ-агентам ваш настоящий браузер: с вашими вкладками, логинами и расширениями
Браузерные агенты обычно живут в стерильном мире: отдельный Chromium, чистый профиль, ни одного вашего логина. browse от компании Anomaly устроен иначе. Это MCP-сервер и расширение для Chromium, которые дают агенту ваш настоящий браузер — с вашими вкладками, вашими логинами и вашими расширениями. Агент открывает собственные вкладки в фоне, делает свою работу и не мешает вам. Проект написан на TypeScript, распространяется по лицензии MIT и ориентирован в первую очередь на opencode, хотя подойдёт любому MCP-клиенту.
Как это устроено
Схема состоит из трёх звеньев. Агент общается с MCP-сервером browse по stdio. Сервер передаёт команды локальному релею — процессу, который слушает 127.0.0.1:19988. А расширение в браузере, подключённое к релею по WebSocket, исполняет эти команды через chrome.debugger.
Управление страницей построено на Playwright: инструмент execute принимает фрагмент кода, который работает с объектами page, context и снимком страницы. Чтобы сайтам было труднее распознать автоматизацию, внутри используется Patchright — он прячет типичные признаки вроде navigator.webdriver. Ввод имитирует человека: мышь движется по кривым траекториям, текст набирается с паузами, страница прокручивается плавно. Полной невидимости всё равно нет — Chrome показывает полоску о запущенной отладке, и авторы честно об этом пишут.
Установка
macOS и Linux:
curl -fsSL https://opencode.ai/browse/install | bash
В PowerShell на Windows: irm https://opencode.ai/browse/install.ps1 | iex. Через Node.js подойдёт npx @opencode/browse install.
Установщик делает три вещи: кладёт команду browse в ~/.local/bin, добавляет MCP-сервер в выбранных вами агентов и ставит расширение из Chrome Web Store. Привязка расширения к релею происходит сама через одноразовый код. Работает это в Chrome, Edge, Brave, Arc, Helium, Vivaldi, Opera и Chromium. Обновления приходят автоматически: релиз проверяется раз в час, обновление ставится в фоне, когда агент не пользуется браузером.
Список поддерживаемых клиентов длинный: OpenCode, Claude Code, Claude Desktop, Cursor, Codex, VS Code, Windsurf, Amp, Gemini CLI, Cline, Roo Code, Zed, Goose, Warp и ещё около двадцати. Установщик находит их конфиги и дописывает нужную запись сам. Для любого другого stdio-клиента достаточно вписать вручную:
{ "mcpServers": { "browse": { "command": "browse", "args": ["mcp"] } } }
Инструменты MCP
| Инструмент | Что делает |
|---|---|
execute |
Запускает код Playwright против страницы сессии |
session_new, session_list, session_use, session_reset, session_delete |
Именованные сессии со своими вкладками; переживают перезапуск |
session_adopt |
Забирает вкладку, которую вы вручную отдали агенту |
session_allowlist |
Ограничивает вкладки сессии заданным набором сайтов |
network |
Пишет сетевой трафик в HAR с вычищенными секретами |
recording |
Записывает вкладку в видео MP4 или WebM |
flight_recorder |
Держит последнюю минуту записи и сохраняет её, если что-то сломалось |
secrets_list, secrets_run |
Позволяют агенту вводить сохранённые пароли, не видя их значений |
tabs_cleanup |
Закрывает вкладки агентов, к которым давно не обращались |
settings |
Читает и меняет настройки, когда вы об этом просите |
status |
Показывает состояние подключения |
Каждая сессия — это набор вкладок агента со своим именем. Вкладки открываются в фоне вашего окна и складываются в отдельную свёрнутую группу. Агент не может вытащить своё окно вперёд и переключить вас на себя. Вкладки, к которым никто не прикасался 10 минут, закрываются сами (срок можно поменять в настройках).
Хендоффы: машина и человек по очереди
Главная идея проекта — агент работает рядом с вами, а не вместо вас. Когда наступает момент, который требует человека, — логин, код 2FA, оплата, — агент передаёт вкладку вам. На странице появляется небольшая карточка с адресом сайта: вы делаете свою часть и жмёте Continue, после чего агент продолжает работу. Пароли и коды в чат копировать не нужно.
Работает и обратная передача: клик по кнопке расширения отдаёт агенту вашу текущую вкладку. Бейдж на кнопке показывает ON, пока вкладка у агента, RUN — пока он работает, и WAIT — когда ждёт вас. Повторный клик забирает вкладку назад и останавливает запущенный скрипт. Агент не может закрыть одолженную вкладку.
Для демо-видео есть режим записи: в ролик попадает только страница, без курсора агента, карточек и служебных элементов. Призрачный курсор можно включить специально, если он нужен в кадре.
Безопасность
Авторы исходят из двух допущений: страницы, которые читает агент, могут пытаться им манипулировать, а другие программы на вашем компьютере — попытаться залезть в релей. Отсюда набор защит:
- Токен релея. Каждый запрос к
127.0.0.1:19988требует bearer-токен, который лежит в домашней папке с правами только для вас. Релей слушает только localhost и отвергает запросы из браузера с чужих сайтов. - Привязка браузера. Одноразовый код вида
XXXX-XXXXдействует 10 минут; пять ошибочных попыток подряд отменяют все ожидающие коды. Браузер обменивает код на собственный ключ через соглашение ECDH, а дальше обе стороны при каждом подключении доказывают, что знают ключ. - Песочница для
execute. Код агента не видит Node API — ни файловой системы, ниprocess, ни сети. Доступ к файлам ограничен разрешёнными корнями, а синхронный код останавливается примерно через 2 секунды. Авторы прямо предупреждают: это не граница безопасности, код агента считайте кодом, запущенным от вашего имени. - Ограничения CDP. Куки доступны только для страниц самой сессии. Очистка куков и кэша, закрытие браузера и вывод окна на передний план запрещены всегда.
- Белые списки доменов. Сессию можно привязать к конкретным сайтам — релей отвергнет переходы на другие адреса, включая защиту от DNS-rebinding. Мера опциональная.
- Секреты сайтов. Команда
browse secrets addсохраняет пароль или TOTP-сид на диске с правами 0700/0600. Агент вводит такой секрет черезsecrets.type(), только на разрешённых сайтах, и не видит значения: оно не попадает в логи, журналы и HAR. - Бот-челленджи. Страницы Cloudflare, Akamai, DataDome и подобных защит агент не решает никогда. Он сообщает о них и либо ждёт, пока браузер пройдёт проверку сам (до 15 секунд), либо передаёт вкладку вам.
Журналы сессий лежат с закрытыми правами, вычищают набранные пароли и коды и удаляются через 14 дней.
Зачем это в работе
Первый сценарий — автоматизация на сайтах, где вы уже залогинены: внутренние панели, админки, сервисы с подпиской. Второй — тестирование своих приложений в реальном окружении, а не в пустом профиле. Третий — запись демо и скринкастов: вкладка пишется в MP4 начисто, без следов автоматизации. Наконец, агент может просто собирать информацию в фоне, пока вы работаете в своём окне.
Полное справочное руководство для агентов лежит в файле cli/skills/browse/SKILL.md, посмотреть его можно командой browse skill. Проект не принимает пулл-реквесты — только issues, и, по словам авторов, их агенты разбирают их довольно быстро.
Источник: https://github.com/anomalyco/browse