The interaction tools address elements by CSS selector alone, so a page that renames its classes on deploy breaks the script rather than the server, and puppeteer_navigate is where browser-level configuration goes through launchOptions and the allowDangerous flag. There is no wait or condition tool in the surface: timing on a page that renders late is handled inside puppeteer_evaluate, which is also where any assertion about the page has to live.
A Puppeteer-backed browser automation server with 7 tools: navigation with launch options, pointer and form interactions addressed by CSS selector, page or element screenshots, and JavaScript execution in the browser console.
- Navigation with the browser launch under your control: puppeteer_navigate takes a url plus launchOptions for the browser itself and an allowDangerous flag.
- Interaction addressed by CSS selector: puppeteer_click clicks the element a selector matches, puppeteer_fill writes a value into an input, puppeteer_select chooses a value inside a select element, and puppeteer_hover moves the pointer over an element.
- Screenshots of the page or of one element: puppeteer_screenshot takes a name, an optional selector to scope the shot, width and height, and an encoded flag.
- An escape hatch for anything the interaction tools do not cover: puppeteer_evaluate runs a script in the browser console and returns its result.
Nothing — no account, no key.
One command — npx -y @modelcontextprotocol/server-puppeteer
