A Monday price check
Every Monday at 9:00, open each product page listed in prices.md, read today's price from the page, and write me a short note naming anything that changed since last week.
Verified MCP server: Puppeteer
The short answer
Last verified 2026-08-03
The puppeteer MCP server hands an AI assistant a real Chrome window on your own Mac: it can open a page, click, type, pick from a dropdown, take a screenshot, and run JavaScript against whatever is loaded. It is the reference browser server of the Model Context Protocol project, it needs no account and no API key, and it is also deprecated. npm has served the same release since May 2025 and warns that the package is no longer supported, and its source now lives in an archived repository, yet it was still downloaded 26,452 times last week. So we ran it. We spoke the protocol to it, enumerated all 7 tools, watched it open a real visible Chrome window and load a live page, and then broke it on purpose four times to capture the exact errors. The raw output is on this page, and a maintained alternative is named below if you need one. [1][2][3][6]
Verification
Method
We spawned the server with npx over stdio, completed the MCP initialize handshake and called tools/list, then made real tool calls against a public test page. puppeteer_navigate launched a browser and loaded https://example.com, and puppeteer_evaluate read the page back to us as "Example Domain / Example Domain". We also checked what it had actually started rather than assuming: the running process was Puppeteer's own cached Chrome for Testing 131 build, launched with no headless flag and a throwaway profile, so the window was real and visible. We then provoked four failures on purpose to capture the exact error text, all of it printed below. The tool table is that tools/list capture, word for word. Two details we are not smoothing over: the server answered our 2025-06-18 handshake with the older protocol revision 2024-11-05, and it printed nothing of its own on standard error, so the banner below is npm warning us on a clean install that both this package and the Puppeteer version it pins are deprecated.
Startup banner
npm warn deprecated puppeteer@23.11.1: < 24.15.0 is no longer supported npm warn deprecated @modelcontextprotocol/server-puppeteer@2025.5.12: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
One real tool call
tools/call puppeteer_navigate {"url": "https://example.com"}Navigated to https://example.com
Real lines from the captured result: enough to prove the call answered.
Tools
The server answered tools/list with 7 tools on 2026-08-03. The names, descriptions and parameters below are its own words, copied from that response and never edited.
| Tool | What it does |
|---|---|
| puppeteer_navigateurl*launchOptionsallowDangerous | Navigate to a URL |
| puppeteer_screenshotname*selectorwidthheightencoded | Take a screenshot of the current page or a specific element |
| puppeteer_clickselector* | Click an element on the page |
| puppeteer_fillselector*value* | Fill out an input field |
| puppeteer_selectselector*value* | Select an element on the page with Select tag |
| puppeteer_hoverselector* | Hover an element on the page |
| puppeteer_evaluatescript* | Execute JavaScript in the browser console |
Parameters marked with * are required.
Setup
Copy the block for the app you use. Each one is the configuration this server was verified with.
Open the file ~/Library/Application Support/Claude/claude_desktop_config.json (in Claude Desktop: Settings, then Developer, then Edit Config) and add:
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-puppeteer"
]
}
}
}There is nothing to fill in: no folder, no key, no connection string. This is the exact config we ran. Quit and reopen Claude Desktop afterwards. On a Mac that has never run Puppeteer before, the first start also fetches Puppeteer's own copy of Chrome, about 300 MB once unpacked, so give it time before deciding it hung. [10][5]
One command in your terminal:
claude mcp add puppeteer -- npx -y @modelcontextprotocol/server-puppeteer
Everything after the double dash is the exact command Claude Code will run, and it is the same command our verification used. No arguments follow the package name. [11]
Add to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json inside one project:
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-puppeteer"
]
}
}
}Same block as Claude Desktop. Cursor picks the file up on restart. [12]
No JSON file and no terminal. In Routines: Settings, then Assistant, then Connections, then Add MCP Server. Switch the form to Command (stdio) and enter:
Name Puppeteer Command npx Arguments -y @modelcontextprotocol/server-puppeteer
Leave Environment Variables empty: this server needs none, and our run used none. Click Test Connection first: a working server answers with its tool count, seven for this one. If Puppeteer has never run on this Mac, that first test also has to fetch its own copy of Chrome, so give it time before deciding it failed. [13]
No terminal needed
If you have never opened Terminal and never want to, this is your path. Routines is a Mac app that runs MCP servers for you: fill in three fields once, and this server's tools are available to your AI in chat and in scheduled routines.
01
Download the app from getroutines.ai/download, drag it to Applications, and sign in.
02
Click your account at the bottom of the sidebar and choose Settings. Open the Assistant section, then the Connections tab, scroll to MCP Servers, and click Add MCP Server.
03
Switch the form to Command (stdio): this server is a command your Mac runs, not a web address it calls.
04
Name: Puppeteer. Command: npx. Arguments: -y @modelcontextprotocol/server-puppeteer, and nothing after it. Unlike most servers in this directory there is no path, key or address to add, because the server takes no arguments at all.
05
Leave Environment Variables empty, this server needs none. Click Test Connection: Routines starts the server and reports how many tools it found, seven for this one. If Puppeteer has never run on this Mac, that first test also downloads its own copy of Chrome, about 300 MB once unpacked, so it can sit there a while; later starts are quick, because the copy is kept. Then click Add Server.
06
The tools work in chat right away. Ask for a page and a window titled Google Chrome for Testing opens in front of you: that is Puppeteer's own copy of Chrome, separate from your everyday browser and starting with an empty profile. A visible window is the default here, which is worth knowing before you schedule anything. To let a scheduled routine use the tools, open the routine, find the Tools & connections card, and tick the server under Apps.
Routine ideas
Once the server is connected, a scheduled routine can use its tools while you are away. Copy a prompt, paste it into Routines, and pick a time.
Every Monday at 9:00, open each product page listed in prices.md, read today's price from the page, and write me a short note naming anything that changed since last week.
Every Friday at 15:00, open the pricing page of each company listed in competitors.md, copy the plan names and prices into a table, and save it as competitor-prices.md so I can see what moved.
Every weekday at 8:00, open my home page and my pricing page, confirm each one loads and still shows its main heading, and only message me if something is missing or a page fails to open.
Troubleshooting
Real errors captured during the verification run, printed exactly as the server returned them.
What you see
Dangerous browser arguments detected: --no-sandbox. Fround from environment variable and tool call argument. Set allowDangerous: true in the tool call arguments to override.
The fix
Working as designed. The server keeps a list of Chrome flags that weaken the browser's own protections, --no-sandbox among them, and refuses to launch with any of them unless you opt in. We triggered this on purpose. Either drop the flag, or pass allowDangerous: true with the call, or set the environment variable ALLOW_DANGEROUS to true. The misspelling of "Found" in the message is the server's own, printed exactly as it ships. Note also that this check runs before the browser exists, so it comes back as a protocol error rather than a normal tool result.
What you see
Failed to click #does-not-exist-mcp-verify: No element found for selector: #does-not-exist-mcp-verify
The fix
The CSS selector matched nothing at the moment of the click. Two usual causes: the selector is wrong, or the page had not finished rendering that element yet. puppeteer_click does not wait for anything, unlike puppeteer_fill, puppeteer_select and puppeteer_hover, which wait up to thirty seconds. Ask the assistant to take a screenshot or read the page first, then click what it actually found.
What you see
Protocol error (Page.navigate): Cannot navigate to invalid URL
The fix
The address needs its scheme. We sent example.com without https:// and Chrome refused it; https://example.com went through on the very next call. The server passes your string straight to the browser and does not repair it, so write addresses in full.
What you see
Failed to fill #missing-input: Waiting for selector `#missing-input` failed: Waiting failed: 30000ms exceeded
The fix
puppeteer_fill waits for the field to appear and gives up after thirty seconds. Almost always the selector is wrong or the field lives inside a part of the page that never loaded, such as a cookie wall or a login form the assistant never got past. Have it look at the page before it types.
The fix
The npx command belongs to Node.js. If Node is not installed on your Mac, every client on this page fails at the spawn step before the server can say anything. Install Node from nodejs.org, restart your MCP client, and try again.
FAQ
It is the reference browser-automation server of the Model Context Protocol project, built on Puppeteer, Google's library for driving Chrome from code. Once connected, an AI assistant such as Claude can open web pages, click and type on them, take screenshots, and run JavaScript against what is loaded, which is how you get it to read a site that has no API. It runs as a local process on your Mac and talks to your AI app over stdio. [5][6]
No, and you should know that before you install it. npm marks the package deprecated with the note "Package no longer supported", the newest release is 2025.5.12 from May 2025, and the source moved out of the project's active repository into a separate one that is archived and labelled "Reference MCP servers that are no longer maintained". It was still downloaded 26,452 times last week, and it ran correctly for us on 2026-08-03, which is the tension worth naming: widely used, plainly unmaintained. Its age shows in small ways, such as answering our 2025-06-18 handshake with the older protocol revision 2024-11-05, and pinning a Puppeteer version that npm now warns about as well. Working today is not a promise about next year. [1][2][3][4]
The running server exposes 7 tools: puppeteer_navigate to open a page, puppeteer_click, puppeteer_fill, puppeteer_select and puppeteer_hover to interact with it, puppeteer_screenshot to capture the page or one element, and puppeteer_evaluate to run JavaScript in it. The table above is the live tools/list output, word for word. The server also advertises MCP resources, which is how it offers the browser console log and any screenshot you took for browsing; we enumerated tools on this run, not resources. [6]
No. There is nothing to sign up for and no credential to paste, and the server reads no secrets from its environment: the environment variables it does read, PUPPETEER_LAUNCH_OPTIONS, ALLOW_DANGEROUS and DOCKER_CONTAINER, only change how the browser is launched. What it does need is a browser. Puppeteer installs its own, a build called Chrome for Testing that sits alongside your normal Chrome rather than replacing it, so the very first start needs an internet connection and some patience while that arrives. [1][6]
Treat it as more exposed than most servers in this directory, but be precise about what the exposure is. Started the way every config on this page shows, it opens a real, visible window of Chrome for Testing, Puppeteer's own build, with a fresh temporary profile: we confirmed that on the wire, and it means your everyday Chrome, your logins and your cookies are not inside it. What it does have is your machine and your network. The project's own README cautions that the server can reach local files and local or internal IP addresses precisely because the browser runs on your computer, and that is the risk worth weighing. There is one real fence and we tested it: Chrome flags that weaken the browser, such as --no-sandbox, are refused unless you explicitly opt in, and the error we got is printed in the troubleshooting section above. Beyond that, the assistant can type into whatever page it has opened, so treat any site you ask it to sign into as a site it can then act on. [5][6]
Two worth knowing. The Playwright MCP server is Microsoft's own, actively published, and we verified it live on this site as well, so it is the closest like-for-like replacement. Google's chrome-devtools-mcp is the other, maintained by the Chrome DevTools team and downloaded 1,408,230 times last week, though it drives Chrome through the DevTools protocol rather than through Puppeteer, so its tools are shaped differently. There is also an official Docker image for this server, mcp/puppeteer, with about 239,000 pulls but no update since May 2025: the documented Docker config sets an environment variable that makes the server start the browser with no window at all, which is the one thing the npx path does not do without extra configuration. [9][8][6]
No. In Routines you fill three fields in Settings and click Test Connection; the walkthrough above shows every click, including the one thing that surprises people, which is that the very first connection test can sit there a while, because Puppeteer is fetching its own copy of Chrome before the server can answer. Claude Desktop needs a small JSON file edited once. Only Claude Code is terminal-first by nature. [13][10]
Sources
Anything on this page we did not observe in the run is linked here, with the date we read it. The run itself is the receipt for the rest.
[1]
Latest version 2025.5.12, published 2025-05-12, carrying the deprecation notice "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info." License MIT, and it pins puppeteer ^23.4.0 and @modelcontextprotocol/sdk 1.0.1.
[2]
26,452 downloads for the week ending 2026-08-01, and 126,562 for the month.
[3]
Archived repository described as "Reference MCP servers that are no longer maintained", 293 stars, last pushed 2025-05-28, per the GitHub API. It holds src/puppeteer.
[4]
The active repository, 89,142 stars and pushed the day we checked. Its src directory no longer holds a puppeteer folder, and its README links Puppeteer out to the archived repository.
[5]
Carries a caution that the server can reach local files and local or internal IP addresses because it runs a browser on your machine, and documents PUPPETEER_LAUNCH_OPTIONS and ALLOW_DANGEROUS.
[6]
Instantiates StdioServerTransport, launches Chrome with headless false unless the DOCKER_CONTAINER environment variable is set, screens launch arguments against a hardcoded dangerous list, and serves the console log and each screenshot as MCP resources.
[7]
MIT, Copyright (c) 2024 Anthropic, PBC. The published package declares MIT as well.
[8]
239,063 pulls and last updated 2025-05-27, per the Docker Hub API, described there as "Browser automation and web scraping using Puppeteer".
[9]
1,408,230 downloads for the week ending 2026-08-01. The package is published by the Chrome DevTools team.
[10]
The official Claude Desktop quickstart and the claude_desktop_config.json shape.
[11]
[12]
[13]
How Routines runs one-click OAuth connectors and any MCP server.
This page describes Puppeteer as it behaved in one dated run on one Mac. Versions move: if something here no longer matches what you see, the capture date at the top says how old the reading is.
Behind this directory
Routines, the app behind this directory, runs MCP servers like this one without a terminal: see how connectors work. Your notes stay markdown files on your Mac, there is no cloud bill, and it works offline. Download Routines