https://github.com/korchasa/foxcode
Мне постоянно приходится давать агенту доступ к браузеру. Для тестирования приложений, дебага, да и просто чтобы что-то узнать или помочь с чем-то. После перехода с playwright-mcp на playwright-cli скорость повысилась, но все равно была слишком низкой. Плюс, мне нужен был способ дать claude code доступ к настоящему браузеру — с моими сессиями, относящимися к конкретному проекту. Пришлось делать свое решение. Заодно решил проверить идею из https://www.anthropic.com/engineering/code-execution-with-mcp с оптимизацией через программирование вызовов.
Как это работает
Архитектура:
- claude code общается с mcp-сервером по stdio
- mcp-сервер держит websocket-соединение с firefox-расширением
- расширение выполняет javascript в контексте активной вкладки
Аутентификация через случайный 32-hex токен в ~/.foxcode/password (mode 0600). Передаётся через url hash — никогда не отправляется на сервер.
Инструменты и api
Основной инструмент в mcp — evalInBrowser(code, timeout?). Внутри доступен объект api с методами, аналогичными playwright. Например, можно залогиниться и собрать данные за один вызов:
await api.navigate("https://app.example.com/login");
await api.fill("#email", "user@test.com");
await api.fill("#password", "secret");
await api.click("button[type=submit]");
await api.waitFor(".dashboard", { timeout: 5000 });
return await api.snapshot(".stats-panel");
Преимущества
- множество операций в одном вызове, которые могут зависеть друг от друга, так что не нужно делать несколько вызовов для сложных сценариев
- профиль браузера сохраняется между сессиями, так что можно логиниться и сохранять куки
- для сайта браузер не отличим (кроме поведенческих эвристик) от обычного
- в режиме проектного профиля браузер стартует быстро, с готовым профилем, а при запуске в пользовательском режиме вообще используется основной профиль, который уже запущен
Недостатки
- соединение не мгновенное и есть стадия установки соединения и авторизации
- для пользовательского профиля пока нужно вручную установить расширение через страницу about:debugging, так что это не совсем plug-and-play
- пока поддерживается только firefox
Установка
/plugin в claude code — это откроет интерактивный менеджер плагинов. Добавьте маркетплейс korchasa/foxcode на вкладке Marketplaces, затем установите foxcode на вкладке Discover.
Запуск
Есть два режима запуска:
/foxcode:foxcode-run-project-profile— изолированный firefox с чистым профилем. Профиль хранится внутри текущего проекта./foxcode:foxcode-run-user-profile— ваш основной firefox. Требует ручной установки расширения черезabout:debugging.
Планы на следующий “подход”:
- попробовать добавить расширение в официальный магазин, чтобы не нужно было устанавливать вручную
- поддержка других браузеров
- самообучение для оптимизации сценариев, которые часто выполняются