Puppeteer MCP
A lightweight browser-control MCP that can navigate pages, click and fill elements, capture screenshots and execute JavaScript through Puppeteer. The capability still works, but this specific MCP package is now deprecated, archived and unmaintained.
Start with Decision, Status, Security, Token Cost, Limitations and Replacement. The setup section is retained for legacy evaluation only because the package is deprecated.
Should you use Puppeteer MCP today?
Historical testing, disposable demos, compatibility investigation and understanding early MCP browser-automation design.
New production deployments, authenticated browsing, autonomous agents, private-network access, or any workflow that expects active security maintenance.
A tiny seven-tool surface that is easy to understand and inexpensive to expose to a model.
The server retains powerful browser authority while the package itself has been abandoned and receives no future security fixes.
The low verdict is not a judgment on Puppeteer as a browser-automation library. It reflects the lifecycle and safety consequences of using this specific archived MCP server in 2026.
Why Puppeteer MCP scores 34/100
The score is weighted around the server’s actual job: giving an AI agent reliable browser authority. Basic navigation and interaction still work, but an agent-facing browser server must also be maintainable, compatible with current MCP clients and defensible when it handles untrusted webpages or authenticated sessions.
The server therefore scores reasonably on effectiveness and efficiency, but very poorly on maintainability, compatibility and safety.
| Universal parameter | Score | Finding |
|---|---|---|
| Effectiveness | 68 | Core navigation, form interaction, screenshots and JavaScript execution still do what the package advertises. |
| Reliability | 48 | Frozen dependencies and no future browser/client compatibility work. |
| Safety | 39 | Powerful browser authority, outdated safeguards and no active security maintenance. |
| Efficiency | 79 | Only seven tool schemas, although screenshot and retry loops can become expensive. |
| Compatibility | 30 | Old MCP SDK and no adoption path for current protocol generations. |
| Maintainability | 5 | Explicitly archived and deprecated. |
| Setup friction | 84 | NPX/Docker setup remains simple despite the package being obsolete. |
Browser-specific parameters
| Parameter | Score | Finding |
|---|---|---|
| Navigation/interactivity | 76 | Core browser interactions remain useful. |
| Element-targeting reliability | 55 | CSS-selector-centric interaction is brittle for autonomous agents. |
| Prompt-injection containment | 31 | No modern agent-specific containment layer is documented. |
| Private-network containment | 30 | Arbitrary navigation with no modern host/origin policy layer. |
| Browser-code execution safety | 38 | puppeteer_evaluate provides substantial page authority. |
| Context efficiency | 78 | Small schema set; screenshot/base64 and selector retries can erase the advantage. |
| Failure observability | 59 | Console logs help, but modern DevTools alternatives expose much richer diagnostics. |
| Modern-alternative differentiation | 18 | Puppeteer’s current documentation now points MCP users elsewhere. |
Puppeteer MCP is deprecated and no longer maintained
@modelcontextprotocol/server-puppeteer is no longer an actively maintained MCP server. Its source was moved into the archived Model Context Protocol reference-server repository, npm marks the package deprecated, and the archive states that archived servers receive no bug fixes, no security updates and no security guarantees.
This lifecycle state matters because Puppeteer MCP is not a passive data reader. It can navigate arbitrary URLs, submit forms, manipulate pages and execute JavaScript inside a browser session.
@modelcontextprotocol/server-puppeteer is marked deprecated.What is Puppeteer MCP?
Puppeteer MCP is an archived Model Context Protocol server that lets an MCP-compatible AI client control a browser through Puppeteer.
The server converts MCP tool calls into Puppeteer browser actions. An agent can navigate to a URL, click or hover over CSS-selected elements, fill inputs, select options, capture screenshots and execute JavaScript in the current page.
The important distinction is that Puppeteer itself remains an active browser-automation project. The deprecated component is this older MCP reference server.
Is Puppeteer MCP made by Google?
The underlying Puppeteer library is maintained by Chrome’s Browser Automation team. The archived Puppeteer MCP package was a Model Context Protocol reference implementation. They should not be treated as the same project or lifecycle.
What can Puppeteer MCP do?
Open browser destinations
Navigate to supplied URLs, including any destinations reachable from the host environment unless outside controls restrict them.
Click, hover and submit
Target elements with CSS selectors, trigger buttons, hover states and form actions.
Fill and select
Enter values into page inputs and select options from dropdown controls.
Screenshots and console
Capture page/element screenshots and expose stored browser console output to the MCP client.
Run JavaScript
puppeteer_evaluate executes arbitrary JavaScript inside the loaded page context.
Act with existing authority
If the launched browser/profile is authenticated, actions can occur inside those authenticated pages.
An agent can potentially submit forms, trigger destructive controls, change settings, send content and manipulate application state. Seven tools still represent substantial browser authority.
How Puppeteer MCP interacts with webpages
The old Puppeteer server primarily works through CSS selectors, screenshots, console output and page JavaScript. That is a simpler interaction model than newer browser-agent servers that return structured semantic page representations.
Typical selectors look like:
button.submit
#email
.product-card:nth-child(2)
This works when the DOM is predictable, but it can be brittle for autonomous agents. A model may need to inspect a page, infer a selector, try an interaction, discover it failed and repeat the loop.
A small tool schema does not guarantee a cheap browser workflow if the model repeatedly guesses selectors and retries actions.
Why Playwright’s structured page state matters
Current Playwright MCP can expose accessibility snapshots and stable element references such as a semantic “Sign in” button. Puppeteer MCP’s older CSS-selector-centric interface gives the model less direct semantic structure. That difference affects both reliability and context efficiency during long agent loops.
Puppeteer MCP tools
The archived package exposes exactly seven browser tools. The small surface is easy for an MCP client to advertise and relatively cheap in schema context.
| Tool | Authority | What it does |
|---|---|---|
puppeteer_navigate | Read / navigation | Navigate the browser to a supplied URL. |
puppeteer_screenshot | Read | Capture a full-page or element screenshot. |
puppeteer_click | Write / interaction | Click a CSS-selected element. |
puppeteer_hover | Interaction | Hover over a selected element. |
puppeteer_fill | Write / form | Enter content into an input field. |
puppeteer_select | Write / form | Select an option from a page control. |
puppeteer_evaluate | High authority | Execute JavaScript in the page context and return the result. |
Resources
The package also exposes browser console logs and captured screenshots as MCP resources. This helps observability, but large logs and image-heavy loops can substantially increase context usage.
What a Puppeteer MCP interaction looks like
A simple screenshot task is short:
A form workflow is more expensive because it can require several calls:
navigate → inspect/guess selector → fill → select → click → inspect result → retry if needed
This difference is important when estimating real token usage. Puppeteer MCP’s schema overhead is low, but a brittle interaction loop can generate many turns.
How to install Puppeteer MCP
The package remains installable, but npm marks it deprecated. This configuration is useful for historical testing or compatibility investigation, not as a current upstream recommendation for new production deployments.
A standard stdio configuration uses:
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-puppeteer"
]
}
}
}
NPX vs Docker
| Attribute | NPX | Docker |
|---|---|---|
| Setup | Fast local launch | Containerized setup |
| Runtime boundary | Host Node/browser environment | Container boundary |
| Browser profile | Depends on local launch options | Usually cleaner/disposable environment |
| Network access | Host reachability | Can be constrained deliberately |
| Best current use | Disposable legacy test | Safer isolation for evaluation |
Dangerous browser flags
The package includes one useful safeguard: dangerous Chromium launch arguments such as --no-sandbox and --disable-web-security are blocked by default unless dangerous options are explicitly enabled. That is good design, but it does not compensate for the package’s end-of-life status.
Using Puppeteer MCP with Claude Code, Cursor and OpenCode
Search demand around Puppeteer MCP is strongly client-oriented. The server uses stdio, so clients capable of launching compatible stdio MCP processes can historically configure it. The practical risk is not the configuration syntax—it is compatibility drift as modern MCP clients move beyond the protocol generation used by this package.
| Client / intent | Parent-page answer | Content decision |
|---|---|---|
| Claude Code | Historically configurable as a stdio MCP server. | Strongest dedicated child-page candidate because search evidence includes both general and installation intent. |
| Cursor | Historically compatible with stdio MCP configuration. | Potential child page if volume/SERP depth supports it. |
| OpenCode | Can work with stdio-style MCP configurations where current compatibility allows. | Potential child page if search evidence remains distinct. |
A successful process launch is not enough to prove modern compatibility. The published package uses a very old MCP SDK and has no maintenance path for newer protocol behavior.
What can Puppeteer MCP access?
The effective authority is broader than the seven-tool count suggests. Depending on the runtime and browser session, Puppeteer MCP can interact with:
- public webpages and browser-rendered content;
- forms, buttons and interactive controls;
- screenshots and browser console output;
- DOM and application state through JavaScript;
- authenticated pages when the browser profile contains a valid session;
- localhost or private-network targets reachable from the host/container.
puppeteer_navigate accepts arbitrary destinations, while puppeteer_evaluate can execute code inside the page. That combination makes network isolation and browser-session hygiene important.
Puppeteer MCP security
The central security problem is the combination of untrusted webpage content + an LLM decision loop + browser write authority + no active package maintenance.
Arbitrary navigation and private-network exposure
A 2026 audit of the archived package highlighted unrestricted URL access and the possibility of interacting with local/private-network destinations accessible from the runtime. The old server does not document a modern host allowlist or origin/network policy comparable with newer browser-agent tooling.
JavaScript execution
puppeteer_evaluate can inspect and manipulate the DOM, form state, page-accessible storage and application state, and can trigger network activity from the page. Puppeteer is designed to make browser automation powerful; exposing that capability to an AI agent makes isolation and review especially important.
Prompt injection
A malicious page can contain instructions aimed at the agent. The archived server predates much of the current browser-agent hardening discussion and does not document a modern prompt-injection containment layer.
Old MCP SDK and dependency risk
A May 2026 audit reported that the published 2025.5.12 package resolved @modelcontextprotocol/sdk@1.0.1 and puppeteer@23.11.1. The same review identified high-severity advisories affecting that old MCP SDK line, including ReDoS and missing default DNS-rebinding protection in affected versions.
Because the package is deprecated, there is no expected upstream upgrade path.
Does Puppeteer MCP support the current MCP specification?
The archived release does not adopt MCP 2026-07-28. It was frozen long before that protocol generation existed and still uses @modelcontextprotocol/sdk@1.0.1.
This matters less for a disposable historical test than for a long-lived integration. As clients evolve, a frozen server can continue to launch while gradually losing interoperability with modern protocol expectations.
MCP 2026-07-28: not adopted by the archived upstream package.
Telemetry and data handling
No separate product-telemetry subsystem was identified in the archived local Puppeteer MCP implementation during the evaluation.
That does not mean browsing is private. The browser still communicates with every website it visits, the MCP client can receive screenshots/console/JavaScript results, and model-provider data handling depends on the client and provider used around the MCP server.
How much context does Puppeteer MCP use?
Puppeteer MCP has a useful efficiency advantage at connection time: it exposes only seven tools. Estimated total tool-schema overhead is roughly 2K–4K tokens, depending on the MCP client and the tokenizer/model used.
Tool-schema cost
The seven schemas are small compared with modern browser MCPs exposing dozens of tools. This makes the initial fixed context load relatively low.
Result cost
Normal small text results can be modest. Screenshots, long console logs, base64 image representations and large puppeteer_evaluate results can be much heavier.
Retry cost
The largest hidden context cost can be failed interaction loops. A model may inspect a page, guess a CSS selector, try it, fail, inspect again and repeat. A richer semantic page representation can therefore be more token-efficient in practice even when its tool schemas are larger.
For cross-model pricing below, use approximately 40K input + 10K output tokens for a moderately involved browser-evaluation run. This is not the fixed cost of one Puppeteer MCP request and excludes model-specific image billing.
Model cost for a 40K-input + 10K-output run
The table uses current standard short-context API rates available on September 27, 2026. It excludes caching, batch discounts, priority/fast tiers, image charges, search/tool fees and subscription plans.
| Current model | Input / output per 1M | Approx. run cost |
|---|---|---|
| GPT-6 Astra OpenAI | $20 / $100 | $1.8 |
| GPT-6 Sol OpenAI | $4 / $20 | $0.36 |
| GPT-6 Luna OpenAI | $0.2 / $1 | $0.018 |
| GPT-5.6 Sol OpenAI | $4 / $20 promotional | $0.36 |
| Claude Fable 5.1 Anthropic | $10 / $50 | $0.9 |
| Claude Sonnet 5 Anthropic | $2 / $10 | $0.18 |
| Claude Opus 4.8 Anthropic | $5 / $25 | $0.45 |
| Gemini 3.1 Pro Preview | $2 / $12 <200K request | $0.2 |
| Gemini 3.8 Flash | $0.75 / $3.75 introductory through Dec 31, 2026 | $0.0675 |
| Gemini 3.1 Flash-Lite | $0.25 / $1.5 | $0.025 |
| Grok 4.6 xAI | $2 / $6 <200K request | $0.14 |
| Grok Build 0.1 xAI | $1 / $2 <200K request | $0.06 |
| Mistral Medium 3.5 Mistral | $1.5 / $7.5 | $0.135 |
| Mistral Large 3 Mistral | $0.5 / $1.5 | $0.035 |
| DeepSeek V4.1 Flash DeepSeek | $0.15–$0.30 / $0.60–$1.20 off-peak; peak is 2× | $0.012–$0.024 |
Pricing notes: GPT-5.6 Sol uses its current promotional API rate. Gemini 3.8 Flash uses its introductory 2026 rate. Gemini 3.1 Pro and Grok rows assume a request below their higher long-context price threshold. DeepSeek V4.1 Flash uses its official peak/off-peak pricing range.
What does Puppeteer MCP actually cost?
The MCP server itself has $0 license cost; it is MIT-licensed. But the meaningful operational cost has four layers.
$0 server license
No per-call fee is charged by the archived Puppeteer MCP package itself.
Browser/runtime resources
CPU, memory, browser downloads, containers and any remote machine used to host the browser.
Tool-loop token cost
Tool schemas, screenshots, logs, retry loops, conversation history and model output all contribute to usage.
Obsolete infrastructure
Security isolation, compatibility fixes, migration work and the cost of building around software nobody intends to maintain.
Wall-clock evaluation budget
| Task | Typical evaluation time |
|---|---|
| Install/configure | ~5 minutes |
| Browser-task gauntlet | ~20–30 minutes |
| Security/network tests | ~10 minutes |
| Compare against a maintained browser MCP | ~15–20 minutes |
| Total | ~45–60 minutes |
Hidden costs
- browser download and runtime overhead;
- outdated Chrome/Puppeteer compatibility;
- model retries caused by brittle CSS selectors;
- authenticated-session exposure;
- local/private-network reachability;
- webpage prompt injection;
- no future security patches;
- eventual client breakage from old MCP protocol support.
The biggest hidden cost is building workflows around software whose upstream project explicitly does not intend to maintain it.
Puppeteer MCP limitations
Archived and unsupported
The central limitation. There is no normal upstream path for fixes, SDK upgrades, browser-compatibility work or security remediation.
Small tool surface
Seven tools keep the schema lean, but modern browser MCPs expose much richer navigation, structured page state, network and debugging capabilities.
CSS-selector-oriented targeting
Agents can struggle when they must infer brittle selectors instead of receiving stable semantic element references.
Screenshot and retry overhead
Image-heavy workflows and repeated selector attempts can consume more context than the small schema count suggests.
Limited debugging depth
Console logs provide some observability, but there is no equivalent of the dedicated network, performance and DevTools surface now available through Chrome DevTools MCP.
No maintenance response
New browser-agent threats, protocol changes and dependency issues cannot be assumed to receive an upstream patch.
Puppeteer MCP vs Playwright MCP
Google search evidence connects these two servers strongly enough that the comparison belongs on the parent page, but the full query deserves its own dedicated comparison URL.
| Attribute | Puppeteer MCP | Playwright MCP |
|---|---|---|
| Maintenance | Archived / deprecated | Actively maintained |
| Primary page interaction | CSS selectors, screenshots, JavaScript | Structured accessibility snapshots plus browser tools |
| Tool surface | 7 tools | Broader current automation surface |
| JavaScript execution | Yes | Yes |
| Screenshots | Yes | Yes |
| Element representation | Selector-oriented | Semantic/stable references available |
| MCP evolution | Frozen | Active |
| Security maintenance | No future upstream fixes | Active project maintenance |
| Primary present-day issue | Lifecycle risk | Trade-offs around capability, context and browser authority |
The most important difference is not simply feature count. One server is frozen; the other continues to evolve as an agent-facing browser tool.
What replaced Puppeteer MCP?
Puppeteer itself has not disappeared from MCP browser automation. Its current documentation now points MCP users to Chrome DevTools MCP, a maintained Puppeteer-based server for browser automation and debugging.
That creates a clearer present-day relationship:
Chrome DevTools MCP adds deeper browser diagnostics such as network inspection, console debugging, screenshots and performance-oriented tooling. For someone specifically seeking a maintained Puppeteer-backed MCP, this is the important successor relationship to understand.
Where Puppeteer MCP still fits — and where it does not
Reasonable historical use
- Studying early MCP browser-server design.
- Disposable offline demonstrations.
- Compatibility investigation for a legacy integration.
- Testing the exact old seven-tool interface.
Do not build new critical workflows around it
- Production browser automation.
- Authenticated browsing.
- Long-running autonomous agents.
- Internal/private-network access.
- Security-sensitive environments.
- Projects that need current MCP compatibility.
The cheapest sensible test
If you specifically need to investigate the historical server, use a disposable environment rather than a normal personal browser session.
- Run the server in a disposable container or isolated machine.
- Do not attach authenticated personal browser data.
- Block access to sensitive private networks.
- Navigate a public test page.
- Capture a screenshot.
- Test click, fill and select behavior.
- Execute a harmless JavaScript inspection.
- Try a page containing prompt-injection-style text.
- Compare the same task with Chrome DevTools MCP and Playwright MCP.
This measures whether the historical server still works in your environment without turning the test itself into an unnecessary security exposure.
MCPVerdict assessment
Puppeteer MCP was useful as an early demonstration of browser automation through MCP. The toolset is small, understandable and inexpensive at schema-load time. It also includes a sensible default that blocks obviously dangerous Chromium launch flags unless explicitly enabled.
But this exact server has reached end-of-life. It is archived with no security guarantees, npm marks it deprecated, it remains on an old MCP SDK, and Puppeteer’s current documentation now points MCP users toward Chrome DevTools MCP instead.
Browser MCPs operate on untrusted webpages while retaining click, form and JavaScript authority. In that environment, maintenance is a first-order safety property—not a cosmetic project-health metric.
Puppeteer is still relevant; the original Puppeteer MCP server is not current infrastructure.
Puppeteer MCP technical details
Show the full technical profile
| Attribute | Evaluated value |
|---|---|
| Name | Puppeteer MCP |
| Package | @modelcontextprotocol/server-puppeteer |
| Latest evaluated package | 2025.5.12 |
| Status | Deprecated / archived / unmaintained |
| License | MIT |
| Runtime | Node.js + Puppeteer |
| Transport | stdio |
| Declared tools | 7 |
| Console resource | Yes |
| Screenshot resource | Yes |
| Authentication | No Puppeteer API credential; browser profile/session defines site authority |
| Telemetry identified | No separate product telemetry subsystem identified |
| Estimated schema overhead | ~2K–4K tokens |
| Scan grade | C |
| Overall score | 34/100 |
| Confidence | Low |
| MCP 2026-07-28 | Not adopted |
| Current Puppeteer-backed MCP path | Chrome DevTools MCP |
Evidence and confidence
Verdict confidence: Low. The package’s archive and deprecation status are strongly evidenced. Confidence is lower for present-day performance because an abandoned server naturally has little fresh 2026 user and release evidence.
The evaluation therefore separates strong lifecycle evidence from measurements that would still require a controlled live run.
| Finding | Signal | Confidence |
|---|---|---|
| npm marks the package deprecated | Negative lifecycle | Strong |
| Canonical source is archived | Negative lifecycle | Strong |
| Archive promises no security fixes/guarantees | Negative safety/maintenance | Strong |
| 2026 audit found old MCP SDK dependency | Negative compatibility/security | Strong |
| Audit identified modern browser guardrail gaps | Negative safety | Strong |
| Puppeteer documentation points to Chrome DevTools MCP | Ecosystem replacement | Strong |
| Modern success rate across current sites/clients | Unknown without live test | Thin |
What only a live test can establish
- Chrome launch reliability on current operating systems;
- current website compatibility;
- click/form success rate;
- exact token usage under a chosen client/model;
- browser crash frequency;
- current client interoperability.
Those measurements could change the performance picture. They would not change the documented fact that the upstream package is deprecated and archived.
Primary sources
Package status, version, tool descriptions and legacy setup. Model Context Protocol — archived reference servers
Canonical archive and maintenance/security status. MCP servers issue #4118
2026 dependency/security/guardrail review of the Puppeteer server. Puppeteer documentation
Current Puppeteer project status and present-day MCP direction. Chrome DevTools MCP
Maintained Puppeteer-based browser automation and debugging MCP. Microsoft Playwright MCP
Current comparison point for structured browser-agent automation.
Frequently asked questions
Is Puppeteer MCP deprecated?
Yes. npm marks @modelcontextprotocol/server-puppeteer deprecated, and its source is in the archived MCP reference-server repository.
Is Puppeteer itself deprecated?
No. Puppeteer remains an active browser-automation project. The deprecated component is this older MCP server.
How many tools does Puppeteer MCP expose?
Seven: navigate, screenshot, click, hover, fill, select and evaluate.
Can Puppeteer MCP execute JavaScript?
Yes. puppeteer_evaluate executes arbitrary JavaScript in the current page context.
Can Puppeteer MCP access localhost?
The old server does not document a modern private-network blocking layer. Destinations reachable from the host/container may therefore be accessible unless additional network restrictions are applied.
Is Puppeteer MCP free?
The server is MIT-licensed and has no per-call server fee. Browser compute, model usage, retries and operational/security work still create real cost.
Can Claude Code use Puppeteer MCP?
Historically, yes through stdio MCP configuration. Current interoperability should be tested because the server uses an old MCP SDK and is no longer maintained.
Can Cursor use Puppeteer MCP?
Historically, Cursor can launch stdio MCP servers. The same current-compatibility warning applies to this frozen package.
Can OpenCode use Puppeteer MCP?
It can be configured where stdio compatibility remains intact, but this should be treated as legacy usage rather than current upstream-supported integration.
Does Puppeteer MCP support the current MCP 2026-07-28 specification?
No. The archived package predates that protocol generation and remains on an old MCP SDK.
What should replace Puppeteer MCP?
Puppeteer’s current documentation points MCP users toward Chrome DevTools MCP. Playwright MCP is another actively maintained browser-automation MCP with a different interaction model.
Is Puppeteer MCP faster than Selenium?
That comparison is primarily about the underlying Puppeteer and Selenium browser-automation libraries, not this MCP server. It is therefore outside the core evaluation of Puppeteer MCP.