ov-layers/skills/chrome-devtools-mcp/SKILL.md
Chrome DevTools MCP server via mcp-proxy (Streamable HTTP on port 9224). Use when working with the chrome-devtools-mcp layer, MCP-based browser automation, or the mcp-proxy stdio-to-HTTP bridge pattern.
npx skillsauth add overthinkos/overthink-plugins chrome-devtools-mcpInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Property | Value |
|----------|-------|
| Dependencies | nodejs, supervisord |
| Ports | 9224 (Streamable HTTP MCP endpoint) |
| Services | chrome-devtools-mcp (supervisord, autostart) |
| Install files | layer.yml, pixi.toml, package.json |
| Name | URL Template | Transport |
|------|-------------|-----------|
| chrome-devtools | http://{{.ContainerName}}:9224/mcp | http |
Pod-aware: same-container consumers receive http://localhost:9224/mcp, cross-container consumers receive http://ov-<image>:9224/mcp. Consumed by hermes (mcp_accepts: chrome-devtools) for MCP-based browser inspection and automation.
MCP Client (hermes, Claude Code)
↓ Streamable HTTP (POST /mcp)
mcp-proxy (Python, pixi) — 0.0.0.0:9224
↓ stdio
chrome-devtools-mcp (Node.js, npm)
↓ Chrome DevTools Protocol
cdp-proxy (port 9222) → Chrome (port 9223)
package.json) connects to Chrome at http://127.0.0.1:9222 via the cdp-proxyautorestart=true (handles startup ordering — retries until Chrome is ready)| Category | Tools |
|----------|-------|
| Input | click, drag, fill, fill_form, hover, type_text, press_key, upload_file, handle_dialog |
| Navigation | navigate_page, list_pages, select_page, new_page, close_page, wait_for |
| Inspection | take_screenshot, take_snapshot, evaluate_script, get_console_message, list_console_messages |
| Network | list_network_requests, get_network_request |
| Performance | performance_start_trace, performance_stop_trace, performance_analyze_insight, take_memory_snapshot, lighthouse_audit |
| Emulation | emulate, resize_page |
mcp-proxychrome-devtools-mcpHermes config.yaml is guarded by a # ov:auto-configured sentinel — it only generates on first start, never overwrites. When chrome-devtools-mcp is added to a running deployment, hermes won't automatically pick it up.
Fix: Delete config.yaml and restart hermes:
ov shell <image> -c "rm /opt/data/config.yaml"
ov service restart <image> hermes
After restart, hermes mcp list should show chrome-devtools as enabled with all 29 tools.
This layer is auto-included by the chrome base layer via layers: [chrome-devtools-mcp]. Any image that includes chrome, chrome-sway, chrome-niri, chrome-mutter, chrome-kwin, chrome-x11, or any desktop metalayer gets this automatically — zero explicit configuration needed.
/ov-layers:chrome — includes via layers: [chrome-devtools-mcp]/ov-images:selkies-desktop/ov-images:selkies-desktop-nvidia/ov-images:sway-browser-vnc/ov-images:openclaw-sway-browser/ov-images:openclaw-ollama-sway-browser/ov-layers:chrome — parent layer, provides Chrome + CDP on port 9222/ov-layers:jupyter-mcp — analogous MCP server pattern (Tier 1, different domain)/ov-layers:hermes — consumes via mcp_accepts: chrome-devtools/ov-layers:mcporter — MCP server CLI (npm-based, similar npm install pattern)/ov:cdp — direct Chrome DevTools Protocol commands (lower-level than MCP)/ov:mcp — test-side client for this layer's MCP endpoint (ov test mcp ping, list-tools, etc.). The layer ships 2 deploy-scope mcp: declarative checks (mcp-chrome-devtools-ping, mcp-chrome-devtools-list-tools asserting navigate_page / take_screenshot). Port-publishing gotcha: when this layer is added to an image that already has a deploy.yml ports: override (e.g. sway-browser-vnc), port 9224 may not be published until the override is updated. ov test mcp surfaces this with the exact ports: [9224:9224] remediation message — see /ov:mcp for the full fix.Use when the user asks about:
/ov:layer — layer authoring reference (layer.yml schema, task verbs, service declarations)/ov:test — declarative testing (tests: block, ov image test, ov test)tools
OpenCharly CLI (charly) binary installed into container/VM images for in-container use. Use when working with charly binary deployment inside containers, native D-Bus support, or the full charly toolchain (charly binary + virtualization + gocryptfs + socat).
development
Operator CachyOS workstation profile — a kind:local template + target:local deploy that installs the full dev stack (30 candies) onto a CachyOS host via ShellExecutor. Lives in the overthinkos/cachyos submodule. MUST be invoked before editing or applying the charly-cachyos workstation profile.
tools
Fedora box with the full charly toolchain using shared candies. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Same candy list as charly-arch. Includes NVIDIA GPU runtime. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-fedora box.
tools
Arch Linux box with the full charly toolchain. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Composes /charly-coder:charly-mcp so the box is reachable as an MCP gateway on port 18765. NVIDIA GPU runtime composed in. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-arch box.