The Puppeteer MCP server is a browser automation server for the Model Context Protocol (MCP). It connects AI assistants to a Chromium browser for page navigation, element interaction, screenshot capture, and JavaScript execution. The MCP project archived the official package in May 2025.
Puppeteer MCP Server Browser Automation · Model Context Protocol reference server Status: Archived
MCP Verdict
| Attribute | MCP Verdict |
|---|---|
| Recommendation | Not recommended for new projects |
| Best for | Narrow Chromium-only legacy workflows |
| Main concern | No security patches, no specification updates, Puppeteer 23 dependency line |
| Primary alternative | Playwright MCP server (@playwright/mcp) |
At a Glance
| Attribute | Value |
|---|---|
| Package | @modelcontextprotocol/server-puppeteer |
| Original author | Anthropic, PBC |
| Current maintainer | None (archived) |
| npm status | Deprecated |
| Last version | 2025.5.12 |
| License | MIT |
| Transport | stdio |
| Browser engines | Chromium only |
| Tools | 7 |
| Resources | 2 |
| MCP authentication | None (local process) |
| Browser authentication | Session-dependent (browser may hold cookies, credentials) |
| Repository | modelcontextprotocol/servers-archived |
What Does the Puppeteer MCP Server Do?
The Puppeteer MCP server translates agent requests into Chromium browser actions through the Model Context Protocol. It wraps Google’s Puppeteer library and exposes browser capabilities as MCP tool definitions. Any compatible MCP client discovers and calls these tools.
What Capabilities Does Puppeteer MCP Add to an Agent?
Puppeteer MCP adds live browser interaction to an agent’s capability surface.
| Puppeteer MCP capability | Result |
|---|---|
| Browser navigation | Open and render live URLs |
| DOM interaction | Click, fill, select, and hover on rendered elements |
| Screenshot capture | Record visual browser state |
| JavaScript execution | Evaluate code in the current page context |
The server connects the agent to a real Chromium browser instance. The agent sees and interacts with web pages the way a user does, through rendered HTML rather than raw source.
What Tools Does the Puppeteer MCP Server Expose?
The server exposes 7 tools grouped into 4 capability categories.
Navigation
| Tool | Action |
|---|---|
puppeteer_navigate | Navigate the browser to any URL |
Observation
| Tool | Action |
|---|---|
puppeteer_screenshot | Capture the full page or a specific element |
puppeteer_hover | Hover over an element identified by CSS selector |
Interaction
| Tool | Action |
|---|---|
puppeteer_click | Click an element identified by CSS selector |
puppeteer_fill | Enter text into an input field |
puppeteer_select | Choose an option from a dropdown menu |
Execution
| Tool | Action | Impact |
|---|---|---|
puppeteer_evaluate | Execute arbitrary JavaScript in the current browser page context | High |
The server exposes 2 resources alongside these tools:
| Resource | Purpose |
|---|---|
console://logs | Access captured browser console output |
screenshot://<name> | Retrieve stored screenshots by name |
Why Was the Puppeteer MCP Server Archived?
The MCP project archived the Puppeteer MCP server as part of a broader effort to reduce reference-server maintenance. The project concentrated resources on a smaller set of core servers. The MCP maintainer confirmed this rationale in May 2025 when the server moved to the servers-archived repository.
The archived servers repository confirms that archived reference implementations receive no maintenance, no security updates, and no bug fixes.
The MCP project does not designate a specific official replacement for the Puppeteer MCP server. The archived repository recommends checking alternatives without naming one.
MCP Verdict interpretation: The archive coincided with the rise of Playwright MCP as a stronger actively maintained browser automation option. Playwright MCP provides cross-browser support, accessibility-tree navigation, and first-party Microsoft maintenance. MCP Verdict recommends Playwright MCP for most new browser automation deployments based on current capabilities and maintenance status, not an official migration declaration.
Archive timeline:
| Date | Event | Source |
|---|---|---|
| November 2024 | Puppeteer MCP published as reference server | Documented |
| May 2025 | Server moved to servers-archived repository | Documented |
| May 2025 | npm package marked deprecated | Documented |
| May 2025 | MCP maintainer cites maintenance overhead | GitHub Issue #749 |
How Does Puppeteer MCP Compare to Playwright MCP?
Puppeteer MCP exposes CSS-selector-based Chromium-only automation. Playwright MCP exposes accessibility-tree navigation across multiple browser engines.
| Attribute | Puppeteer MCP | Playwright MCP |
|---|---|---|
| Publisher | MCP project (archived) | Microsoft (active) |
| Status | Archived, deprecated on npm | Active |
| Browser engines | Chromium only | Chromium, Firefox, WebKit |
| Selector model | CSS selectors | Accessibility tree (structured text) |
| Default tool count | 7 | 24 (snapshot mode) |
| Package | @modelcontextprotocol/server-puppeteer | @playwright/mcp |
| Mobile emulation | No | Yes |
| Network interception | No | Yes |
Playwright MCP uses structured accessibility snapshots instead of CSS selectors. This gives models semantic element references and reduces dependence on raw DOM selectors. Microsoft describes accessibility snapshots as structured, deterministic, and optimized for language model consumption.
MCP Verdict interpretation: Playwright MCP is the stronger general-purpose choice for new browser automation deployments. Puppeteer MCP retains a smaller tool surface and remains simpler for narrow legacy Chromium workflows. A full comparison is available on the Puppeteer MCP vs Playwright MCP page when published.
What Is the Blast Radius of the Puppeteer MCP Server?
The blast radius defines what the Puppeteer MCP server can affect when an agent makes a bad decision. Browser automation tools interact with live web applications through the UI. A tool named click can click a delete button, a purchase button, or a send button.
| Capability | Access |
|---|---|
| Read public web data | Yes |
| Read authenticated web data | Possible with authenticated browser state |
| Modify remote application state | Yes (through web UI interactions) |
| Delete remote data | Possible through web UI actions |
| Execute page JavaScript | Yes |
| Direct OS code execution | No documented tool |
| Direct filesystem access | No dedicated tool |
| Access network | Yes |
| Access local/private network | Possible unless externally restricted |
| Send messages | Possible through web applications |
| Trigger financial actions | Possible through web applications |
Highest-impact realistic consequence: An agent executing puppeteer_evaluate runs arbitrary JavaScript in any page the browser navigates to. Combined with puppeteer_navigate, the agent reaches internal network targets (localhost services, admin panels, cloud metadata endpoints) and executes scripts in those contexts.
The server accepts ALLOW_DANGEROUS: true as an environment variable. This setting permits browser launch arguments that reduce default Chrome security protections, such as --no-sandbox and --disable-web-security. This behavior is documented in the package README.
MCP Verdict recommendation: Leave ALLOW_DANGEROUS disabled unless the workflow explicitly requires unsafe Chrome launch arguments. This setting does not provide a complete security boundary for browser navigation.
What Breaks When You Use an Archived MCP Server?
Archived MCP servers receive no security patches, no specification updates, and no dependency maintenance. The servers-archived SECURITY.md confirms this explicitly.
| Failure condition | Evidence | Detail |
|---|---|---|
| No security patches | servers-archived SECURITY.md | Vulnerabilities in the server code or its dependencies remain unpatched. |
| Puppeteer dependency drift | Documented: package.json | The package declares puppeteer ^23.4.0, keeping resolution within major version 23. Current Puppeteer is on major version 25. |
| Stale MCP SDK dependency | 2026 dependency audit | The published package resolves @modelcontextprotocol/sdk 1.0.1. Current SDK versions have advanced. |
| No MCP specification updates | Documented | The server predates OAuth 2.1, streamable HTTP transport, MCP Apps, and the extensions track. It supports stdio transport only. |
| Client transport incompatibility | Derived by MCP Verdict | Remote MCP clients requiring streamable HTTP cannot connect. The server supports stdio only, limiting it to local deployments. |
| Container sandbox failures | Reported | Docker deployments require --no-sandbox and --disable-setuid-sandbox flags. Missing flags cause silent launch failures. |
| Oversized screenshot payloads | Reported | Full-page screenshots of complex sites produce large base64 payloads. Clients with strict message-size limits may reject the response. |
MCP Verdict interpretation: The archived server functions for local, short-lived, non-sensitive tasks. Production deployments, authenticated sessions, and security-sensitive environments face elevated risk from unpatched dependencies and missing specification support.
What Is the Agent Cost of Using the Puppeteer MCP Server?
The server exposes a small tool surface compared to other browser automation MCP servers. Fewer tools consume less context window. MCP Verdict measured the tool-definition cost at 665 tokens (cl100k_base tokenizer, compact JSON serialization, version 2025.5.12).
| Attribute | Value |
|---|---|
| Tools exposed | 7 |
| Resources exposed | 2 |
| Tool-definition tokens | 665 (measured by MCP Verdict) |
| Interaction tools | 3 (click, fill, select) |
| High-impact tools | 1 (evaluate) |
| Typical screenshot output | Large (full-page base64 image) |
| Tool surface classification | Small |
Per-tool token cost (measured by MCP Verdict, cl100k_base tokenizer):
| Tool | Tokens | Parameters |
|---|---|---|
puppeteer_navigate | 150 | url, launchOptions, allowDangerous |
puppeteer_screenshot | 170 | name, selector, width, height, encoded |
puppeteer_click | 61 | selector |
puppeteer_fill | 79 | selector, value |
puppeteer_select | 84 | selector, value |
puppeteer_hover | 61 | selector |
puppeteer_evaluate | 60 | script |
| Total | 665 | 15 parameters across 7 tools |
Comparison: tool count across browser MCP servers
| Server | Default tools | Tool-definition tokens |
|---|---|---|
| Puppeteer MCP | 7 | 665 (measured by MCP Verdict) |
| Playwright MCP | 24 (snapshot mode) | Not yet measured by MCP Verdict |
| Chrome DevTools MCP | 15+ | Not yet measured by MCP Verdict |
MCP Verdict interpretation: The Puppeteer MCP server has the smallest tool-definition footprint of any browser automation MCP server. 665 tokens is negligible context overhead. The real cost comes from screenshot output, not tool definitions. A single full-page screenshot as base64 can consume thousands of tokens. Clients with eager tool loading pay almost nothing for Puppeteer MCP’s definitions.
Do You Need MCP for Browser Automation?
MCP adds value when the agent needs interactive, multi-step browser control across different client environments. MCP adds overhead when the task is deterministic and the agent can write scripts directly.
| Situation | MCP Verdict choice |
|---|---|
| Agent needs interactive browser control across clients | Playwright MCP |
| Coding agent writes browser scripts directly | Playwright CLI or Puppeteer library (no MCP overhead) |
| Chrome-specific deterministic automation | Puppeteer library directly |
| Chrome debugging and performance analysis | Chrome DevTools MCP |
| Existing Puppeteer MCP workflow that still functions | Keep temporarily, plan migration |
Playwright’s own documentation notes that coding agents may benefit from CLI and Skills instead of MCP for token efficiency. This is a strong signal. Browser MCP adds the most value when the agent needs stateful, multi-step browser loops rather than one-shot script generation.
Does the Puppeteer MCP Server Still Work?
The npm package remains installable. Running npx -y @modelcontextprotocol/server-puppeteer still downloads and starts the server. The npm registry marks the package as deprecated but does not block installation.
MCP Verdict has not independently verified current runtime compatibility. The package installs, but startup and client discovery require runtime testing. Successful browser automation depends on current client versions and operating systems.
The deprecated package continues receiving substantial npm downloads despite the deprecated label. CI pipelines, reinstalls, bots, and dependent packages contribute to download counts. Download volume does not directly indicate active human usage.
How Can Existing Users Run the Archived Puppeteer MCP Server?
Existing users with working Puppeteer MCP installations can continue running the archived server. This section covers the official archived package. Community projects appear in the next section.
⚠ Archived: shown for existing installations and migration planning only.
Prerequisites:
| Requirement | Check command |
|---|---|
| Node.js 18+ | node --version |
| npm | npm --version |
Claude Desktop configuration:
| OS | Config path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"],
"env": {}
}
}
}
Save the file. Quit Claude Desktop completely (Cmd+Q on macOS, system tray quit on Windows). Reopen the application. Closing the window does not restart MCP servers.
Claude Code:
claude mcp add puppeteer -- npx -y @modelcontextprotocol/server-puppeteer
Cursor:
Create or edit .cursor/mcp.json in the project root.
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
}
}
}
What Community Puppeteer MCP Projects Exist?
Community developers maintain Puppeteer-based MCP server projects. These are separate entities from the official archived server. They share the Puppeteer library dependency but differ in tool count, features, and maintenance.
MCP Verdict has not independently validated these projects. They do not receive Anthropic or MCP project security reviews.
| Attribute | Value |
|---|---|
| Maintainer | Community (merajmehrabi) |
| Package | puppeteer-mcp-server |
| Tools | 7+ (mirrors official set) |
| Existing Chrome connection | Yes (remote debugging port) |
| License | MIT |
| Attribute | Value |
|---|---|
| Maintainer | Community (jaenster) |
| Package | puppeteer-mcp-claude |
| Tools | 11 |
| Auto-installer | Yes (npx puppeteer-mcp-claude install) |
| Cookie management | Yes |
| Request interception | Yes |
| License | MIT |
Community alternatives exist, but MCP Verdict recommends Playwright MCP as the stronger first-party-maintained option for most new deployments.
What Replaced the Puppeteer MCP Server?
3 alternatives serve the workflows the Puppeteer MCP server covered. Playwright MCP, Chrome DevTools MCP, and the raw Puppeteer library each address different use cases.
Playwright MCP Server
| Attribute | Value |
|---|---|
| Publisher | Microsoft |
| Package | @playwright/mcp |
| Status | Active |
| Browser engines | Chromium, Firefox, WebKit |
| Best for | Cross-browser automation, accessibility-tree navigation, CI pipelines |
The Playwright MCP server is the strongest actively maintained browser automation MCP server. It provides cross-browser support, mobile emulation, and network interception.
Chrome DevTools MCP
| Attribute | Value |
|---|---|
| Publisher | Google Chrome DevTools team |
| Package | chrome-devtools-mcp@latest |
| Status | Active |
| Browser engines | Chrome |
| Best for | Browser automation with debugging, performance traces, console inspection, network analysis |
The Chrome DevTools MCP server exposes both automation and debugging capabilities. It provides click, fill, hover, type, upload, and navigation tools alongside console, network, and performance inspection. It covers a broader capability surface than the archived Puppeteer MCP server.
Raw Puppeteer Library (No MCP)
| Attribute | Value |
|---|---|
| Publisher | |
| Package | puppeteer (major version 25) |
| Status | Active |
| Best for | Deterministic scripts, PDF generation, Chrome-specific automation without agent overhead |
The Puppeteer library itself remains actively maintained. Developers who need Chrome-specific automation without MCP agent overhead use the library directly. A Puppeteer script executes deterministically. An MCP-mediated workflow depends on the model’s reasoning about which tools to call.
Who Should Still Use the Puppeteer MCP Server?
Existing users with narrow Chromium workflows remain the strongest fit for the archived Puppeteer MCP server. New projects have stronger actively maintained alternatives.
Good Fit
| User | Workflow | Reason |
|---|---|---|
| Developer with existing working config | Chrome-only scraping or screenshot tasks | Working setup, migration not urgent for non-sensitive tasks |
| CSS selector workflow owner | Automation scripts with explicit CSS selectors | Accessibility-tree migration requires rewriting selector logic |
Poor Fit
| User | Workflow | Reason |
|---|---|---|
| Developer starting a new project | Any browser automation | Playwright MCP provides better browser coverage and active maintenance |
| CI pipeline builder | Multi-browser end-to-end testing | Puppeteer MCP supports Chromium only |
| Security-conscious team | Authenticated sessions, internal tools | No security patches, unpatched dependency chain |
| Enterprise environment | Production browser automation | Archived dependency creates compliance risk |
| Mobile testing team | Mobile viewport and emulation | Puppeteer MCP does not support mobile emulation |
What Does the README Not Tell You?
The deprecated package continues receiving substantial npm downloads despite the deprecated label. CI pipelines, reinstalls, and tutorial-following developers contribute to this volume.
The archived server remains on the Puppeteer 23 dependency line. Current Puppeteer has advanced to major version 25. The package.json declares puppeteer ^23.4.0, keeping dependency resolution within Puppeteer major version 23.
The published package resolves @modelcontextprotocol/sdk 1.0.1. Current MCP SDK versions have advanced. A 2026 dependency review flagged this as a concern.
The MCP project does not designate Playwright MCP as the official replacement for Puppeteer MCP. The archived repository README recommends checking alternatives without naming one. MCP Verdict recommends Playwright based on current capabilities and maintenance, not an official migration declaration.
What Is the MCP Verdict for the Puppeteer MCP Server?
The Puppeteer MCP server introduced thousands of developers to MCP-mediated browser control. The MCP project archived it to reduce maintenance overhead. The server still installs and functions for narrow Chromium-only tasks.
| Attribute | MCP Verdict |
|---|---|
| Recommendation | Not recommended for new projects |
| Best for | Narrow Chromium-only legacy workflows where migration is not yet justified |
| Main concern | Archived with no security patches, Puppeteer 23 dependency line, no MCP specification updates |
| Best alternative | Playwright MCP server (@playwright/mcp) |
Every new browser automation project benefits from starting with Playwright MCP or Chrome DevTools MCP instead. Existing Puppeteer MCP installations that function correctly can continue temporarily while planning migration.
Sources
- @modelcontextprotocol/server-puppeteer: npm registry, deprecated notice, version 2025.5.12
- servers-archived README: archive status, maintenance disclaimer
- servers-archived SECURITY.md: no security updates, no vulnerability patches
- GitHub Issue #749: MCP maintainer cites maintenance overhead as archive reason
- @playwright/mcp: npm registry, current version, release history
- Playwright MCP README: accessibility snapshots, browser support, CLI vs MCP guidance
- Playwright getting-started-mcp.md: CLI and Skills recommendation for token efficiency
- puppeteer-mcp-server: community fork, tool list, remote debugging support
- puppeteer-mcp-claude: community fork, 11 tools, auto-installer
- Puppeteer: npm registry, current major version 25
- GitHub Issue #4118: 2026 dependency audit, SDK 1.0.1 resolution, security concerns