Puppeteer MCP Server

Anthropic's reference browser automation server — functional but archived. Playwright MCP is the maintained alternative.

Skip Archived by Anthropic — no future updates or bug fixes. Playwright MCP is the actively maintained alternative. Only consider if you have existing Puppeteer automation you can't migrate.
Language: TypeScript Transport: stdio License: MIT Stars: 218 Updated: Oct 2025 Setup: Moderate

Client Compatibility

Claude Desktop
Cursor
Claude Code
VS Code
Windsurf
Cline

What It Does

Browser automation through Puppeteer — navigate pages, click elements, fill forms, select options, hover, evaluate JavaScript, and take screenshots. Claude controls a Chromium browser instance to interact with web pages programmatically.

This is Anthropic’s reference implementation for browser automation via MCP. It has been moved to the servers-archived repository, meaning it still works but receives no updates.

What It Does Well

  • Familiar Puppeteer API mapped to clean MCP tools. Seven tools cover the core browser automation workflow: navigate, click, fill, select, hover, evaluate, and screenshot. If you know Puppeteer, the MCP tool names map directly to what you’d expect.
  • Customizable launch options via environment variable. Pass PUPPETEER_LAUNCH_OPTIONS as a JSON string to configure headless mode, viewport size, custom args, and other Puppeteer launch parameters. Docker support is included for containerized environments.
  • Still works and still installs from npm. Despite being archived, the package is still published and functional. If you have existing automation workflows built on this server, they’ll continue to work.

What It Doesn’t Do Well

  • Archived by Anthropic — no future updates or bug fixes. This server has been moved to the servers-archived repository. If Chromium updates break something, or if a new MCP spec feature would improve the server, nobody’s maintaining it. Playwright MCP is the actively maintained alternative from the same team.
  • Downloads Chromium on first run, which can surprise users. The first npx invocation triggers a Chromium download (100+ MB). On slow connections or in CI environments, this can cause timeout issues. Subsequent runs use the cached browser.

Setup Notes

First run downloads Chromium — expect a delay. After that, the server launches a browser instance that Claude controls. Headless mode is default. Set PUPPETEER_LAUNCH_OPTIONS to {"headless": false} if you want to watch Claude interact with pages.

Docker is supported for isolated environments. The ALLOW_DANGEROUS flag enables custom Chrome executable paths if you need to use an existing Chrome installation instead of downloaded Chromium.

For new projects, we recommend Playwright MCP instead. It’s actively maintained, supports more browsers, and has a larger feature set.

Config

{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-puppeteer"]
    }
  }
}

Headless off (watch Claude browse):

{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-puppeteer"],
      "env": {
        "PUPPETEER_LAUNCH_OPTIONS": "{\"headless\": false}"
      }
    }
  }
}

Tested With

  • Claude Desktop on Windows 11
Config — paste into your client
{
  "mcpServers": {
    "puppeteer-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-puppeteer"
      ]
    }
  }
}

Environment Variables

  • PUPPETEER_LAUNCH_OPTIONS — JSON string with Puppeteer launch configuration (optional)
  • ALLOW_DANGEROUS — Enable custom Chrome executable paths (optional)

Prerequisites

  • Node.js 18+

View on GitHub · npx -y @modelcontextprotocol/server-puppeteer

Reviewed by J-Dub · February 22, 2026

Related Servers