# puppeteer-mcp-claude [Health: Active]

**Category:** 📂 Browser Automation  
**Repository:** https://github.com/jaenster/puppeteer-mcp-claude  
**GitHub Stars:** 48  
**npm Downloads (last month):** 1431  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/puppeteer-mcp-claude

## Description
Browser automation MCP server for Claude, powered by Puppeteer.

## Tools
Capabilities this server exposes over MCP:

- **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** — Cookie jar management.
- **puppeteer_set_request_interception** — Block resources by type or inject request headers.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "puppeteer-mcp-claude": {
    "command": "npx",
    "args": ["-y","puppeteer-mcp-claude"]
  }
}
```

## Documentation

## What puppeteer-mcp-claude does

puppeteer-mcp-claude exposes Chromium browser automation as MCP tools for Claude Code and other MCP-aware clients. It supports common page workflows such as opening URLs, clicking controls, entering text, waiting for elements, extracting page content, and taking PNG screenshots. JavaScript can also run in the page context, which supports custom data extraction and browser-side actions.

The server maintains browser and page state for multi-step interactions. Page identifiers default to `default`, making a single-tab workflow possible without passing a page ID on every call. Additional tabs can be opened when a workflow needs separate pages.

## How it works

The server runs over MCP stdio and uses Puppeteer to control Chromium. The browser is started automatically when a tool other than `puppeteer_launch` is called. `puppeteer_launch` remains available when you need launch options such as stealth mode, a proxy, a custom viewport, or a connection to an existing Chrome process.

A separate `chrome` command can start Chrome with remote debugging enabled. After signing in through that browser, an MCP client can use `browserWSEndpoint` with `puppeteer_launch` to reuse the existing session. This allows authenticated browser state to remain available across the automation flow.

Tool results are exposed both as TOON text in `content[0].text` and as typed JSON in `structuredContent`. Clients can use either representation, depending on how they process MCP responses. Screenshots are returned as inline MCP image blocks and can optionally be written to disk.

## Setup and configuration

Node.js 18 or newer is required. Puppeteer downloads Chromium during the initial installation, using approximately 170 MB of storage. The macOS and Linux installer uses `install.sh`; Windows users can run the PowerShell installer. These scripts install the npm package globally and register the server with Claude Code. Registration defaults to user scope and can be changed to project scope with `SCOPE=project`.

For a manual setup, install the package globally with npm and register the command with Claude Code:

```bash
npm install -g puppeteer-mcp-claude
claude mcp add puppeteer-mcp-claude -- npx -y puppeteer-mcp-claude serve
```

The command-line interface also provides `install`, `uninstall`, `status`, `serve`, `chrome`, and `help` commands. Restart Claude Code after registration.

## Tools and capabilities

- `puppeteer_navigate` loads a URL.
- `puppeteer_new_page` opens a tab, while `puppeteer_close_page` closes one.
- `puppeteer_click` targets an element with a CSS selector.
- `puppeteer_type` enters text into a selected input.
- `puppeteer_get_text` reads an element's `textContent`.
- `puppeteer_wait_for_selector` waits for an element to appear.
- `puppeteer_evaluate` runs a JavaScript expression in page context.
- `puppeteer_screenshot` captures a PNG, with optional full-page output and disk storage.
- Cookie tools set, retrieve, and delete browser cookies.
- `puppeteer_set_request_interception` can block selected resource types or add request headers.
- `puppeteer_close_browser` shuts down the browser.

## Limitations and notes

The server requires an MCP-aware client and a local Chromium download or an accessible Chrome connection. Request interception can block images, media, fonts, and stylesheets for scraping workflows, but the selected resource types are controlled by the tool call. Browser actions target CSS selectors, so workflows depend on the page's DOM structure.

_Full upstream README: https://allmcps.com/mcp/puppeteer-mcp-claude/readme_

