Obsah

Playwright MCP pro non-headless Chrome na hostitelském počítači

Úvodní Kontext

Potřeboval jsem, aby AI běžící v Docker kontejneru ovládala můj hostitelský Google Chrome přes Playwright MCP a CDP. Cílem bylo zachovat běžný viditelný Chrome mimo kontejner a přitom ho zpřístupnit kontejneru bez přímého otevření portu do celé sítě.

Klíčové Kroky / Konfigurace

Jednorázové nastavení firewallu

Na hostitelském počítači jsem povolil přístup z Docker bridge sítě na port 9222. Toto pravidlo stačí nastavit jednou:

ufw allow in on docker0 proto tcp from 172.17.0.0/16 to any port 9222

Jednorázové nastavení MCP serveru v OpenCode

Do konfigurace OpenCode jsem přidal druhý Playwright MCP server, který se nepřipojuje na lokální prohlížeč v kontejneru, ale na hostitelský Chrome přes Docker gateway 172.17.0.1:9222:

"playwright-chrome": {
  "type": "local",
  "command": [
    "npx",
    "@playwright/mcp@latest",
    "--cdp-endpoint",
    "http://172.17.0.1:9222"
  ],
  "enabled": true
}

Po této úpravě musím restartovat OpenCode nebo otevřít novou session, aby se nová MCP konfigurace načetla.

Důležitá Nastavení

Praktické Příklady

1. Spuštění socat na hostitelském počítači

Při každém použití nejdřív zpřístupním hostitelský localhost port do Docker bridge sítě:

socat TCP-LISTEN:9222,bind=172.17.0.1,reuseaddr,fork TCP:127.0.0.1:9222

2. Spuštění běžného Chrome s CDP

Pak na hostitelském počítači spustím běžný Chrome s remote debuggingem. Nepoužívám headless režim, takže vidím reálné okno prohlížeče:

google-chrome --remote-debugging-address=127.0.0.1 --remote-debugging-port=9222 --user-data-dir=/tmp/pw-profile

3. Jak to funguje v praxi

Tento setup mi odděluje prohlížeč od Docker kontejneru, ale pořád umožňuje jeho ovládání přes MCP. Chrome zůstává vázaný jen na 127.0.0.1, zatímco socat dělá kontrolovaný most do Docker bridge sítě. Díky tomu AI v kontejneru pracuje s hostitelským Chrome, aniž bych musel prohlížeč spouštět uvnitř Dockeru.

Závěr / Výstupy

Tento postup používám, když chci ovládat hostitelský non-headless Chrome z Docker prostředí přes Playwright MCP. Získal jsem jednoduché a opakovatelné řešení, které kombinuje lokální bezpečnost, viditelný prohlížeč a připojení přes CDP.