browser-mcp
Browser MCP
Предоставьте ваш браузер Chrome/Edge как инструменты MCP для любого ИИ-агента. Расширение Chrome (Manifest V3) само выступает в роли MCP-сервера: оно подключается к code-mcp-gateway и отвечает на MCP-запросы на месте — локальный сервер не требуется. Оно говорит на том же протоколе JSON-RPC, что и code-mcp, поэтому легко встраивается в существующие настройки агентов.
Как это работает
flowchart LR
subgraph Agent["Agent side"]
A["MCP client / AI agent"]
end
subgraph Gateway["code-mcp-gateway (Cloudflare Worker)"]
G["wss://code-mcp.tuanm.dev/ws/<id>"]
end
subgraph Browser["Your browser"]
E["Extension (MV3)<br/>service worker = MCP server<br/>offscreen = WS bridge"]
P["Page (content script)"]
end
A -- "MCP JSON-RPC" --> G
G -- "register / keepalive /<br/>forward requests" --> E
E -- "CDP / tabs / scripting" --> PВсплывающее окно принимает Device ID и Token; расширение подключается напрямую к шлюзу (регистрация, keepalive каждые 25 с, watchdog 75 с, переподключение с джиттером и экспоненциальной задержкой) и обслуживает initialize / tools/list / tools/call на месте. Любой агент, который может достичь шлюза, может управлять браузером.
Опциональный локальный сервер (browser-mcp.ts) добавляет файловое хранилище (file_read, большие загрузки/скачивания) и простую локальную MCP HTTP-конечную точку. См. Локальный сервер.
Related MCP server: BrowserPilot
Быстрый старт
Chrome или Edge >= 111. Bun >= 1.1 нужен только для локального сервера или инструментов разработки — расширение работает автономно.
Загрузите расширение. Откройте
chrome://extensions, включите Режим разработчика, нажмите Загрузить распакованное и выберитеpackages/browser-extension. (Или запуститеbun browser-mcp.tsи скачайте zip сhttp://127.0.0.1:7777/extension.)Подключитесь. Нажмите на значок на панели инструментов (метка MCP становится зелёной при подключении). Введите Device ID и Token шлюза, нажмите Подключиться. Всплывающее окно покажет Подключено (шлюз).
Используйте. Направьте любого MCP-клиента на ваше устройство шлюза. Расширение отвечает на
tools/list47 инструментами.
Токен должен совпадать с токеном, настроенным для этого устройства на шлюзе. Шлюз передаёт его с каждым запросом, а расширение проверяет его. Если оставить его пустым, любой, кто достигнет шлюза, сможет управлять браузером.
Локальный сервер
Нужен только для файлового хранилища (file_read, загрузок/скачиваний > 512 КБ) или локальной MCP HTTP-конечной точки:
bun browser-mcp.ts # http://127.0.0.1:7777/mcp
bun browser-mcp.ts --token <s> # require auth on /mcp + /filesПри запущенном сервере всплывающее окно также передаёт ID + Token на собственную ссылку шлюза сервера; без него расширение всё равно работает напрямую. Локальные клиенты используют http://127.0.0.1:7777/mcp — см. mcp-client.example.json (добавьте "headers": { "Authorization": "Bearer <token>" }, если запускаете с --token). Проверка: curl -s http://127.0.0.1:7777/health.
Удалённый доступ через code-mcp-gateway
Прямой (по умолчанию). Введите ID + Token во всплывающем окне; расширение само обслуживает MCP. Локальный сервер не нужен.
Серверная привязка. С локальным сервером всплывающее окно подключается к
wss://code-mcp.tuanm.dev/ws/<id>, и сервер отвечает на MCP через HTTP.CLI (пользовательский шлюз):
bun browser-mcp.ts --gateway <domain> --token <s> --id <device-id>Тот же протокол, что и в прямом режиме. Используйте тот же --token на устройстве шлюза; никогда не запускайте режим шлюза без него. Установите BMCP_GATEWAY_DOMAIN, чтобы переопределить хост шлюза по умолчанию во всплывающем окне.
Инструменты (47)
Обнаружение элементов с помощью системы @ref: snapshot возвращает интерактивное дерево элементов с маркерами [ref=eN]; каждый инструмент взаимодействия принимает ref или CSS-селектор (refs кэшируются и разрешаются автоматически; устаревшие refs вызывают ошибку «run snapshot again»).
Обнаружение —
snapshot,find(role/name/text/label/placeholder/title/testid/selector),get,isВзаимодействие —
click,dblclick,type,fill,check,uncheck,select,hover,focus,press,drag,scroll,uploadНавигация —
navigate,reload,back,forward,close,tabs,windowЧтение страницы —
extract,execute,screenshot(блок изображения),pdf,wait,highlightСостояние и отладка —
store,cookies,storage,console,errors,network,status,file_readЭмуляция и управление —
emulate,set(viewport/device/geo/offline/headers/media),perms,auth,dialog,frames,touch,download
Захват console/errors/network начинается при первом вызове (лениво), поэтому после включения перезагрузите страницу или выполните навигацию, чтобы захватить трафик. Back/forward используют историю навигации CDP. Выполните curl -s -X POST http://127.0.0.1:7777/mcp -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' для полных схем.
Флаги
Флаг | Описание | По умолчанию |
| Порт прослушивания |
|
| Адрес привязки |
|
| Требовать аутентификацию на | нет |
| Требовать этот токен от расширения на bridge + файловых конечных точках | нет |
| Привязать MCP-конечную точку через code-mcp-gateway | нет |
| ID устройства шлюза (переопределяется ID из всплывающего окна) | случайный |
| Где хранятся скачанные/загруженные файлы |
|
| ТОЛЬКО ДЛЯ РАЗРАБОТКИ: пропустить проверку Origin расширения. Никогда на общей машине | выкл. |
Безопасность
Ограничение по Origin.
/browser/wsпринимает только origin'ыchrome-extension://;/mcpи/files/*отклоняют браузерные origin'ы, кроме localhost — вредоносный сайт не сможет управлять вашим браузером через localhost (CSRF). Нативные MCP-клиенты (без заголовка Origin) не затрагиваются.--tokenограничивает доступ к/mcpи/files/*(?token=или Bearer);--extension-tokenдобавляет секрет, который расширение должно предъявлять на bridge.File ID — это 12-значный случайный hex, проверяемый по строгому шаблону; имена загружаемых файлов санируются. Ограничения размера: загрузки 500 МиБ, скриншоты 8 МиБ инлайн.
chrome.debuggerпоказывает жёлтую инфопанель, пока подключён (сигнал согласия);perms/cookiesиспользуют API, не связанные с отладчиком, где это возможно.По умолчанию привязывается к
127.0.0.1; привязка к0.0.0.0без--tokenвыводит предупреждение.
Тайм-ауты
Команды bridge: 30 с по умолчанию, 60 с для navigate/execute/wait_for, 120 с для download/file_upload — максимум 120 с локально и 55 с в режиме шлюза (шлюз прерывает пересылку через 60 с). Инструменты принимают bridge_timeout для переопределения.
Разработка
bun run check # syntax-check server + scripts + extension JS
bun run test # mock-extension + mock-gateway E2E suite
bun run build # rebuild dist/browser-extension.zip
bun browser-mcp.ts # run the serverThis server cannot be deployed
Maintenance
Related MCP Connectors
Hyperbrowser MCP — wraps the Hyperbrowser AI-agent browsing API
Live browser debugging for AI assistants — DOM, console, network via MCP.
- PomeradoOAuthai.pomerado
MCPs that do tasks on any website. Search flights, book, shop, check accounts and fill in forms.
Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceAn extension-based MCP server that enables AI assistants to control your existing Chrome browser, leveraging your active login states and settings for automation. It provides over 20 tools for tasks like semantic tab search, screen capture, network monitoring, and direct element interaction.-
- AlicenseBqualityDmaintenanceEnables AI to control browsers via natural language for web automation, testing, and data scraping. Supports Chrome-based browsers and integrates with any MCP-compatible AI tool.172MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to control your webpage via MCP, allowing navigation, screenshots, clicks, content reading, and more through a Chrome extension.22MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to control your existing Chrome browser via MCP, using your logged-in sessions for automation on authenticated sites. Provides high-level browser tools plus raw CDP and Chrome API access.MIT