The interaction tools each take a CSS selector and do exactly one thing, which makes them predictable but also means anything conditional — waiting for an element, reading a value back, walking a list — has to be written as JavaScript and sent through puppeteer_evaluate. That is a genuine capability and a genuine risk in the same tool, since it runs arbitrary script in whatever page is loaded. The parameter worth settling before use is allowDangerous on puppeteer_navigate, which sits alongside launchOptions; the tool description does not say what it permits, so read the project before turning it on.
A Puppeteer browser automation server with seven tools covering navigation, screenshots, element interaction by selector, and script evaluation.
- Navigation: puppeteer_navigate takes a url alongside launchOptions and an allowDangerous flag.
- Capture: puppeteer_screenshot takes the whole page or one selector, with a name, width, height and an encoded option.
- Interaction by selector: puppeteer_click clicks an element, puppeteer_fill fills an input field, puppeteer_select chooses a value in a select element, and puppeteer_hover hovers one.
- The escape hatch: puppeteer_evaluate executes JavaScript in the browser console.
A machine that can run a Chromium browser through Puppeteer. No credentials are configured.
One command — npx -y @modelcontextprotocol/server-puppeteer
