Перейти до змісту

Архітектура

Час виконання

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 на верхньому рівні та зберігає стандартну поведінку профілю Playwright MCP на верхньому рівні. Для Streamable HTTP кожна сесія MCP має власний зовнішній сервер, дочірній процес, згенеровану конфігурацію та стан транспорту в пам’яті. Сесії HTTP запускають Playwright MCP з ізольованими профілями браузера, щоб одночасні користувачі не ділили між собою й не змагалися за один і той самий постійний профіль Chromium.

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

Міст використовує MCP SDK StreamableHTTPServerTransport для Streamable HTTP. Він не надає доступ до застарілого MCP SSEServerTransport або застарілу кінцеву точку /sse.