Puppeteer MCP Server
Automated web browsing, screenshotting, and form interaction for AI agents.
Data last scanned last week · Reviewed last month
Overview
Puppeteer MCP Server offers browser automation capabilities, enabling AI assistants to navigate websites, interact with page elements, and execute custom JavaScript. It supports both fresh browser instances and connections to existing Chrome windows for persistent session usage. Built in TypeScript, the server provides tools for form submission, element selection, hovering, and capturing screenshots. It is designed to integrate into standard MCP configurations, allowing developers to manage Chrome tabs directly through AI prompts.
Our verdict
This server receives a high-risk security score of 28/100, primarily due to it being a community-maintained project that has not been editorially reviewed. Given that the last commit occurred 504 days ago, users should exercise extreme caution as the project lacks recent maintenance and security updates. It is not recommended for environments where browser automation requires modern security patching.
- Supports connection to existing Chrome browser instances
- Small footprint with only four direct dependencies
- Provides full documentation for MCP configuration
- Includes features for taking screenshots and executing JavaScript
- High risk score due to lack of recent commits
- Community-maintained rather than official vendor code
- Authentication and read-only modes lack security review
Setup
{
"mcpServers": {
"puppeteer-mcp-server": {
"args": [
"-y",
"puppeteer-mcp-server"
],
"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_connect_active_tab | Connect to an existing Chrome instance with remote debugging enabled. | medium |
| puppeteer_navigate | Navigate to a URL. | medium |
| puppeteer_screenshot | Take a screenshot of the current page or a specific element. | low |
| puppeteer_click | Click an element on the page. | medium |
| puppeteer_fill | Fill out an input field. | medium |
| puppeteer_select | Use dropdown menus. | medium |
| puppeteer_hover | Hover over elements. | 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
›Can I use this server to interact with my existing Chrome browser session?
Yes, you can connect to an existing Chrome instance by launching it with the --remote-debugging-port=9222 flag and using the puppeteer_connect_active_tab tool.
›What is the default behavior when I start the server?
By default, the server will launch a new browser instance rather than attaching to an existing one.
›Does the server provide tools for form interaction?
Yes, the server includes tools like puppeteer_fill for input fields and puppeteer_select for dropdown menus.
›Are there specific environment settings needed when running from source?
When running from source, you must set the NODE_OPTIONS environment variable to --experimental-modules.
›Can I specify the dimensions for screenshots?
Yes, the puppeteer_screenshot tool accepts optional width and height parameters, which default to 800 and 600 pixels respectively.
Alternatives
Changelog
Badge
Maintain this server? Add the live badge to your README.