OfficialVerified

Puppeteer MCP Server

Automate browser interactions and capture web page content via Puppeteer.

Data last scanned yesterday · Reviewed 2 months ago

01 dangerous tool7 tools293JavaScriptMIT

Overview

This MCP server provides a set of tools to control a browser instance through Puppeteer. It allows LLMs to navigate to URLs, interact with web page elements such as forms and buttons, execute arbitrary JavaScript, and capture visual screenshots. Additionally, it offers access to browser console logs and captured screenshot resources. The server supports customizable browser launch configurations, including options to restrict potentially dangerous settings. It is designed to run locally, enabling the browser to interact with local files and internal network addresses.

Our verdict

This server carries a high security risk with a score of 0/100. It is officially archived, meaning it receives no further updates or vulnerability fixes, and lacks any built-in authentication, allowing anyone with access to the configuration to execute commands. Because it runs a local browser instance, it poses significant risks regarding local file exposure and internal network access; it should not be used in environments handling sensitive data or untrusted content.

  • Comprehensive suite of browser interaction tools
  • Zero direct dependencies reduces supply chain surface
  • Supports custom Puppeteer launch configurations
  • Repository is archived and no longer maintained
  • No authentication method available
  • High security risk due to local file and internal network access

Setup

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

Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), then restart Claude Desktop. Some servers require API keys or tokens as environment variables — check the project's README and add an "env" object if needed.

  • No read-only mode — running this grants full read/write access.
  • No built-in authentication — anyone with access to this config can invoke every tool it exposes.

Tools

ToolDescriptionRisk
puppeteer_navigateNavigate to any URL in the browsermedium
puppeteer_screenshotCapture screenshots of the entire page or specific elementslow
puppeteer_clickClick elements on the pagemedium
puppeteer_hoverHover elements on the pagemedium
puppeteer_fillFill out input fieldsmedium
puppeteer_selectSelect an element with SELECT tagmedium
puppeteer_evaluateExecute JavaScript in the browser consolehigh

Compatibility

ClientLocalDockerRemoteRead-only
ChatGPT
Claude Desktop
Cursor
VS Code
Windsurf

Frequently asked questions

What is the difference between the NPX and Docker installation methods?

The NPX version opens a visible browser window on your machine, while the Docker implementation runs using headless chromium.

Are there security risks associated with this server?

Yes, because the server runs a browser on your machine, it can access local files and internal IP addresses. You should exercise caution to avoid exposing sensitive data.

How can I customize the Puppeteer browser launch options?

You can provide custom launchOptions in the puppeteer_navigate tool; note that changing these options will trigger a browser restart.

Can I use insecure Puppeteer launch arguments?

By default, the server prevents the use of dangerous arguments like --no-sandbox or --disable-web-security. You must explicitly set allowDangerous to true to enable them.

How do I retrieve browser console logs?

The server provides a resource at console://logs that contains the text output of all browser console messages.

Can I get screenshots as text instead of binary files?

Yes, by setting the encoded parameter to true in the puppeteer_screenshot tool, you can capture the screenshot as a base64-encoded data URI.

Alternatives

Badge

Puppeteer MCP Server security score, rated on RepoAI

Maintain this server? Add the live badge to your README.