Puppeteer MCP Server

Official

The original Chromium automation reference server — simple, screenshot-driven browser control.

Local serverstdioTypeScriptMIT 63.0k

What is the Puppeteer MCP server?

The Puppeteer MCP server was one of the first reference servers Anthropic shipped alongside the Model Context Protocol, and it's still the quickest way to understand what browser automation over MCP feels like. It wraps Google's Puppeteer library around a headless (or headful) Chromium and exposes a small, legible toolset: go to a page, click, type, run a snippet of JavaScript, take a screenshot.

Where Playwright's server reads the accessibility tree, Puppeteer's takes the screenshot-first approach — the model looks at captured images and the page's text to decide what to do next. That's simpler to reason about and totally fine for light automation, though it burns more tokens and is more sensitive to layout changes on complex pages.

Worth knowing before you commit: Anthropic has archived the reference servers repository, so this server no longer receives active development. It remains genuinely useful for learning MCP, quick scraping jobs and one-off automations — the npm package still works — but for production-grade browser work the actively maintained Playwright server is the better bet. Think of Puppeteer's server as the well-worn hand tool and Playwright's as the power tool that replaced it.

The puppeteer_evaluate tool deserves a special mention: being able to run arbitrary JavaScript in the page context is a powerful escape hatch when the built-in tools don't cover an interaction.

Where it still earns its keep

  • CSS selectors are the whole interface, which suits codebases you already know — you can hand the model exact selectors from your own components instead of hoping it identifies the right button on its own.
  • PUPPETEER_LAUNCH_OPTIONS takes the full Puppeteer launch object, so {"headless": false, "defaultViewport": {"width": 1280, "height": 800}} lets you watch a run and pin the viewport in one setting.
  • Screenshots can target a single element rather than the whole viewport, which keeps image payloads small when only one component matters.
  • It downloads its own Chromium on first run, so a clean machine with nothing but Node installed is enough — handy when demoing MCP to someone who has never seen it work.

What you can do with it

Learn MCP browser automation

The smallest possible surface area for understanding how an assistant drives a browser.

Quick scraping of rendered pages

Grab content from client-side-rendered pages that plain HTTP fetching can't see.

One-off web automations

Fill a form, download a report, poke at a page — without writing a script.

Available tools

ToolWhat it does
puppeteer_navigateNavigate the browser to a URL
puppeteer_screenshotCapture a screenshot of the page or a specific element
puppeteer_clickClick an element by CSS selector
puppeteer_fillType a value into an input field
puppeteer_selectChoose an option in a select element
puppeteer_evaluateRun arbitrary JavaScript in the page context and return the result

How to install the Puppeteer MCP server

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

Configuration

Node.js 18+. Downloads its own Chromium on first run.

VariableDescriptionRequired
PUPPETEER_LAUNCH_OPTIONSJSON launch options passed to Puppeteer (e.g. headless mode, window size)e.g. {"headless": false}Optional

Example prompts to try

  • Navigate to news.ycombinator.com and give me the top five story titles.
  • Open our landing page, screenshot the hero section, and describe what you see.
  • Run document.title on the current page and tell me what it returns.

Frequently asked questions

It lives in Anthropic's archived reference-servers repository, so it works but isn't actively developed. For long-term projects, the Microsoft-maintained Playwright MCP server is the recommended alternative.