Attaching to a Chrome you started yourself means anything you signed into stays available for the whole run, and there is no browser extension to install or get approved in a locked-down environment. Interactions are coordinate-driven, and the screenshot returned after each step is what closes the loop for the model.
A server that attaches to a Chrome instance you started with debugging enabled, then drives it: navigation, clicks, typing, scrolling, hovering, resizing and reading page content.
- launch_browser and close_browser to attach to and release the debugging session
- navigate_to, which reuses an existing tab when the domain matches rather than opening yet another one
- click and hover at given coordinates, and type_text for input
- scroll_down and scroll_up, a viewport at a time
- resize_browser to change the window size mid-run
- get_page_content for the current page's HTML
- A screenshot after each operation, so the model sees the result of what it just did
- Waiting on network activity, so a page has settled before the next step runs
- Automatic discovery of Chrome instances locally and in containers
Chrome started with debugging enabled and pointed at a scratch profile directory; the server attaches to that instance rather than launching its own. Because it is a real session, any site you signed into stays signed in for the whole run. Runs under Node, and works against containerized Chrome.
One command — npx chrome-debug-mcp
