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í
- Chrome poslouchá jen na
127.0.0.1:9222. socatvystaví tento lokální port do Docker bridge sítě jako172.17.0.1:9222.- Kontejner se připojuje pouze na
http://172.17.0.1:9222. - Přístup z Dockeru funguje jen pro port
9222; další hostitelské porty řeším samostatnými firewall pravidly.
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.