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.
Планове за следващия “подход”:
- опит за добавяне на разширението в официалния магазин, за да не се налага ръчна инсталация
- поддръжка на други браузъри
- самообучение за оптимизация на сценарии, които често се изпълняват