What it does
Puppeteer MCP wraps the official Puppeteer library — Google's Node.js API for controlling headless Chrome. Claude gets a real Chromium browser instance, enabling it to interact with any web page exactly as a user would, including full JavaScript execution, cookie handling, and dynamic content rendering.
It is part of the official Anthropic MCP reference server collection, making it a reliable choice for tasks like taking visual screenshots, testing web applications, automating repetitive browser tasks, or scraping content from JavaScript-dependent pages.
- Navigate to any URL with full JS execution
- Take full-page or viewport screenshots
- Click elements, type text, and submit forms
- Evaluate arbitrary JavaScript in the page context
- Extract HTML content from rendered pages
- Wait for specific selectors before proceeding
How to connect
claude mcp add puppeteer -- npx -y @modelcontextprotocol/server-puppeteer
Available tools
navigate— go to a URL and wait for page loadscreenshot— capture a PNG screenshot of the current pageclick— click an element by CSS selectortype— type text into a focused elementevaluate— execute JavaScript in the page contextget_content— return the page's HTML contentwait_for_selector— wait until a selector is visible
Example usage
Ask Claude to take a screenshot of a competitor's pricing page or extract rendered text from a SPA:
# User prompt
Take a full-page screenshot of github.com and
describe the layout and key UI elements you see.
navigate("https://github.com") wait_for_selector(".application-main") screenshot({ fullPage: true }) → returns base64 PNG, ~1200x3400px → Claude describes layout elements
Playwright vs Puppeteer: Both automate real browsers, but Playwright supports Chromium, Firefox, and WebKit, offers more robust waiting strategies, and is generally preferred for new projects. Use Puppeteer if you already have existing Puppeteer familiarity or scripts.