Puppeteer MCP Server
Automate browser interactions and capture web page content via Puppeteer.
Data last scanned yesterday · Reviewed 2 months ago
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
{
"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
| Tool | Description | Risk |
|---|---|---|
| puppeteer_navigate | Navigate to any URL in the browser | medium |
| puppeteer_screenshot | Capture screenshots of the entire page or specific elements | low |
| puppeteer_click | Click elements on the page | medium |
| puppeteer_hover | Hover elements on the page | medium |
| puppeteer_fill | Fill out input fields | medium |
| puppeteer_select | Select an element with SELECT tag | medium |
| puppeteer_evaluate | Execute JavaScript in the browser console | high |
Compatibility
| Client | Local | Docker | Remote | Read-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
Maintain this server? Add the live badge to your README.