Перейти к содержанию

Архитектура

Время выполнения

cloakbrowser-mcp — это внешний сервер MCP, который может предоставлять доступ к stdio или Streamable HTTP. При запуске он:

  1. извлекает или устанавливает бинарный файл CloakBrowser на базе Chromium;
  2. создаёт временный файл конфигурации Playwright MCP;
  3. запускает исходный процесс @playwright/mcp в качестве дочернего процесса через stdio;
  4. подключается к этому дочернему процессу с помощью транспортного протокола клиента MCP SDK;
  5. предоставляет доступ к внешнему серверу MCP клиенту MCP пользователя через выбранный транспортный протокол;
  6. пересылает список инструментов и вызовы инструментов без изменений;
  7. добавляет cloakbrowser_binary_info и cloakbrowser_bridge_info.

Почему именно такой дизайн

Проект Playwright MCP, разрабатываемый на верхнем уровне, уже владеет контрактами браузерных инструментов и быстро развивается. Модель «моста» позволяет сохранить компактность этого проекта и избежать дублирования логики автоматизации браузера.

Docker

Образ Docker использует закрепленный официальный образ Playwright MCP в качестве базового образа. Бридж установлен под именем /opt/cloakbrowser-mcp, в то время как исходный образ Playwright MCP по-прежнему доступен по адресу /app/cli.js.

Настройка

Бридж записывает временную конфигурацию в формате JSON с параметрами запуска CloakBrowser. Переменные среды PLAYWRIGHT_MCP_* из верхнего уровня по-прежнему передаются в Playwright MCP верхнего уровня.

Транспорт

Транспорт по умолчанию — stdio. Потоковый HTTP явно включается с помощью --transport streamable-http или CLOAK_PLAYWRIGHT_MCP_TRANSPORT=streamable-http.

В случае stdio один внешний сервер управляет одним дочерним процессом Playwright MCP на стороне upstream и сохраняет поведение профиля по умолчанию для Playwright MCP на стороне upstream. В случае Streamable HTTP каждый сеанс MCP имеет собственный внешний сервер, дочерний процесс на стороне Playwright MCP, сгенерированную конфигурацию и состояние транспорта в памяти. Сеансы HTTP запускают Playwright MCP с изолированными профилями браузера, чтобы одновременно работающие пользователи не использовали один и тот же постоянный профиль Chromium и не конкурировали за него.

Бэкенд сессии хранит только метаданные. Встроенным бэкендом является memory; будущие адаптеры Redis, Postgres или SQLite смогут координировать метаданные и блокировки, но они не смогут восстановить активный процесс браузера на стороне клиента после завершения работы серверного процесса, которому он принадлежит. При горизонтальном масштабировании следует использовать «прилипающие» сессии, индексированные по ключу mcp-session-id.

Мост использует MCP SDK StreamableHTTPServerTransport для Streamable HTTP. Он не предоставляет доступ к устаревшему MCP SSEServerTransport или устаревшую конечную точку /sse.