A Model Context Protocol (MCP) server that provides Claude Code with comprehensive browser automation capabilities through Puppeteer
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"puppeteer-mcp-claude": {
"env": {
"NODE_ENV": "production"
},
"args": [
"puppeteer-mcp-claude",
"serve"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
A Model Context Protocol (MCP) server that provides Claude Code with comprehensive browser automation capabilities through Puppeteer. This server allows Claude to interact with web pages, take screenshots, execute JavaScript, and perform various browser automation tasks.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y 'puppeteer-mcp-claude' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked puppeteer-mcp-claude against OSV.dev.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in browser
Browser automation with Puppeteer for web scraping and testing
🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
MCP server for Firecrawl — search, scrape, and interact with the web. Supports both cloud and self-hosted instances. Features include web search, scraping, page interaction, batch processing, and LLM-powered content analysis.
The Apify MCP server enables your AI agents to extract data from social media, search engines, maps, e-commerce sites, or any other website using thousands of ready-made scrapers, crawlers, and automation tools available on the Apify Store.
MCP Security Weekly
Get CVE alerts and security updates for Puppeteer Mcp Claude and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A Model Context Protocol server that gives Claude Code (and any other MCP-aware client) a real browser via Puppeteer — navigate pages, click and type, run JavaScript, capture screenshots, manage cookies, intercept requests.
macOS / Linux
curl -fsSL https://raw.githubusercontent.com/jaenster/puppeteer-mcp-claude/main/install.sh | bash
Windows (PowerShell)
iwr -useb https://raw.githubusercontent.com/jaenster/puppeteer-mcp-claude/main/install.ps1 | iex
Both scripts verify Node ≥ 18, install the package globally via npm, and register it with Claude Code at user scope. Override scope with SCOPE=project (bash) or $env:SCOPE='project' (PowerShell).
Manual — if you'd rather not run a remote script:
npm install -g puppeteer-mcp-claude
claude mcp add puppeteer-mcp-claude -- npx -y puppeteer-mcp-claude serve
Then restart Claude Code and ask: "Take a screenshot of example.com".
You don't have to call puppeteer_launch first — the browser auto-launches with defaults the moment any other tool runs. Page ids default to "default", so single-tab flows can omit pageId entirely.
| Tool | What it does |
|---|---|
puppeteer_launch | (Optional) launch a browser or connect to an existing Chrome via browserWSEndpoint. Use this for stealth mode, proxies, custom viewport, etc. |
puppeteer_new_page | Open a new tab. |
puppeteer_navigate | Go to a URL. |
puppeteer_click | Click a CSS selector. |
puppeteer_type | Type into an input. |
puppeteer_get_text | Read textContent of an element. |
puppeteer_screenshot | Capture a PNG — returned inline as an MCP image block, optionally also saved to disk. |
puppeteer_evaluate | Run a JS expression in page context, returns the value. |
puppeteer_wait_for_selector | Wait until an element appears. |
puppeteer_close_page | Close a tab. |
puppeteer_close_browser | Close the whole browser. |
puppeteer_set_cookies / puppeteer_get_cookies / puppeteer_delete_cookies | Cookie jar management. |
puppeteer_set_request_interception | Block resources by type or inject request headers. |
Every tool returns its result in two parallel forms:
content[0].text — TOON (Token-Oriented Object Notation), a compact, schema-aware JSON alternative. Good for hosts that pipe the text body straight into the model's context.structuredContent — the same data as a typed JSON object, for MCP clients that prefer machine-readable output.Which one your host uses is up to the host — both are MCP-spec-compliant. Typed clients that want the object without depending on structuredContent can import { decode } from '@toon-format/toon' and parse content[0].text.
How an LLM would typically drive this server — each example shows the prompt you'd give Claude and the tool sequence it produces.
"Take a screenshot of news.ycombinator.com."
... [View full README on GitHub](https://github.com/jaenster/puppeteer-mcp-claude#readme)