Suggest a server AI tools directory →

Puppeteer MCP server

Last verified: 2026-09

Drive a headless Chrome: click, type, screenshot.

Official reference Browser & search No API key Claude Desktop, Cursor, Windsurf, Claude Code, VS Code

What it does

Drives a local headless Chrome: navigate, click, type, screenshot, evaluate JS. Heavier than Fetch. Official reference server; for new setups Playwright is usually the better browser host.

It sits in Browser & search: Three different jobs get mixed up here.

Good for

  • Open a JS-rendered docs site and screenshot the page.
  • Click through a public wizard the static HTML does not contain.
  • Fill a form on a site that has no API.
  • Compare what Fetch returns vs what Chrome actually paints.

Tools

  • puppeteer_navigate — Open a URL.
  • puppeteer_screenshot — Capture the page or a selector.
  • puppeteer_click / puppeteer_fill / puppeteer_select / puppeteer_hover — Interact.
  • puppeteer_evaluate — Run JavaScript in the page.

Config (Claude Desktop / Cursor / Windsurf)

Paste the JSON below. Same mcpServers shape. Replace placeholder paths and secrets. Windows paths look like C:\\Users\\you\\project, not /path/to. Host-side steps →

Claude Desktop

OSConfig file
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json (usually C:\Users\<you>\AppData\Roaming\Claude\)
Linux~/.config/Claude/claude_desktop_config.json

Cursor

ScopemacOS / LinuxWindows
This project.cursor/mcp.json in the repo root
This user~/.cursor/mcp.json %USERPROFILE%\.cursor\mcp.json

Windsurf

OSConfig file
macOS / Linux~/.codeium/windsurf/mcp_config.json
Windows%USERPROFILE%\.codeium\windsurf\mcp_config.json
{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-puppeteer"
      ]
    }
  }
}

Windsurf remote MCP: use serverUrl instead of url if the block below is HTTP.

One-liner: npx -y @modelcontextprotocol/server-puppeteer

Secrets it wants: none

Source repo →

How to get started

  1. Install with the JSON below. First run will download Chrome.
  2. Try a public URL and ask for a screenshot before you point it at a logged-in profile.
  3. Prefer Playwright if you are starting from scratch.

Access risk

A real browser can see whatever the page shows, including sessions if you reuse a user profile. evaluate() can do anything the page can do.

When to skip it

Skip it if Fetch is enough, or if you want Microsoft's maintained Playwright MCP instead.

Instead: Playwright, Fetch, Browserbase.

Vs alternatives

ServerOfficial?Needs a secret?Best for
PuppeteerYesNoDrive a headless Chrome: click, type, screenshot.
PlaywrightNoNoMicrosoft's browser automation MCP for Chromium, Firefox, and WebKit.
FetchYesYesFetch a URL and turn the page into readable text.
BrowserbaseNoYesCloud browsers you do not run locally.

More in Browser & search

All 11 in this category →

FAQ

Puppeteer or Playwright?

Playwright is the current browser default (Microsoft's MCP). Puppeteer is the older official example. Install one.

Does it use my daily Chrome profile?

Do not point it at that profile. A logged-in session can click delete or submit payment forms.

Can it log into my bank?

Technically, if you give it the profile. Do not.

Headless only?

The official server drives headless Chrome. First run downloads the browser.