Puppeteer MCP Server
Provides browser automation capabilities including navigation, element interaction, content extraction, screenshot capture, PDF generation, cookie management, and multi-tab support for web scraping and testing workflows.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Puppeteer MCP Server take a screenshot of the homepage and save it as example.png"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Puppeteer MCP Server
A Model Context Protocol (MCP) server that provides browser automation capabilities through Puppeteer. This server enables AI agents to interact with web pages, take screenshots, execute JavaScript, and perform various browser operations.
Features
Multi-tab Support: Manage multiple browser tabs with unique IDs
Comprehensive Tools: 27 tools for navigation, interaction, content extraction, and more
Dual Transport: Supports both stdio (for Claude Desktop/Code) and HTTP transports
Result Types: Consistent error handling with structured Result types
Related MCP server: Puppeteer Swarm MCP
Installation
npm install
npm run buildUsage
Stdio Mode (Default)
For use with Claude Desktop or Claude Code:
npm start
# or
node dist/index.jsHTTP Mode
For remote or containerized deployments:
npm start -- --http
# or
node dist/index.js --http --port=3000Claude Desktop Configuration
Add to your Claude Desktop config:
{
"mcpServers": {
"puppeteer": {
"command": "node",
"args": ["/path/to/puppeteer-mcp/dist/index.js"]
}
}
}Available Tools
Tab Management
Tool | Description |
| List all open browser tabs |
| Create a new tab (optionally with URL) |
| Close a tab |
| Switch to a different tab |
Navigation
Tool | Description |
| Navigate to a URL |
| Reload the current page |
| Navigate back in history |
| Navigate forward in history |
Interaction
Tool | Description |
| Click an element |
| Fill a text input |
| Select dropdown option(s) |
| Hover over an element |
| Focus an element |
Input
Tool | Description |
| Press keyboard keys |
| Perform mouse actions |
| Scroll the page or element |
Content
Tool | Description |
| Execute JavaScript |
| Get page/element HTML or text |
| Get element information |
Waiting
Tool | Description |
| Wait for element to appear |
| Wait for navigation |
| Wait for specified time |
Media
Tool | Description |
| Capture screenshot |
| Generate PDF |
Cookies
Tool | Description |
| Get cookies |
| Set cookies |
| Delete cookies |
Tool Parameters
All tools that operate on pages accept an optional tabId parameter. If not specified, the active tab is used.
Example: Navigate and Take Screenshot
// Navigate
{ "name": "navigate", "arguments": { "url": "https://example.com" } }
// Take screenshot
{ "name": "screenshot", "arguments": { "fullPage": true, "format": "png" } }Example: Multi-tab Workflow
// Create new tab
{ "name": "new_tab", "arguments": { "url": "https://site-a.com" } }
// Returns: { "id": "tab_abc123", "url": "https://site-a.com", ... }
// Create another tab
{ "name": "new_tab", "arguments": { "url": "https://site-b.com" } }
// Returns: { "id": "tab_def456", "url": "https://site-b.com", ... }
// List all tabs
{ "name": "list_tabs", "arguments": {} }
// Interact with specific tab
{ "name": "click", "arguments": { "selector": "button", "tabId": "tab_abc123" } }Environment Variables
Variable | Description | Default |
| HTTP server port |
|
| Run browser headless |
|
| Default operation timeout (ms) |
|
Development
# Install dependencies
npm install
# Run in development mode
npm run dev
# Type check
npm run typecheck
# Run tests
npm test
# Build
npm run buildArchitecture
src/
├── index.ts # Entry point, transport setup
├── server.ts # MCP server configuration
├── browser.ts # Browser lifecycle management
├── tabs.ts # Multi-tab state management
├── types.ts # TypeScript interfaces
├── errors.ts # Result types and error handling
├── schemas.ts # Zod validation schemas
└── tools/
├── tab-tools.ts # Tab management tools
├── navigation.ts # Navigation tools
├── interaction.ts # Click, fill, select, etc.
├── content.ts # Evaluate, get content
├── waiting.ts # Wait tools
├── media.ts # Screenshot, PDF
├── cookies.ts # Cookie management
└── input.ts # Keyboard, mouse, scrollLicense
MIT
puppeteer-mcp
Available Tools
27 toolsclickC
Click an element on the page
Inputs: selector (required), button, clickCount, delay, +2 more.
close_tabA
Close a browser tab. If no tabId provided, closes the active tab.
Inputs: tabId.
delete_cookiesC
Delete cookies by name
Inputs: names (required), tabId.
evaluateB
Execute JavaScript code in the browser context and return the result
Inputs: script (required), tabId.
fillC
Fill a text input or textarea with a value
Inputs: selector (required), value (required), clearFirst, timeout, +1 more.
focusC
Focus an element on the page
Inputs: selector (required), timeout, tabId.
get_contentC
Get the HTML or text content of the page or a specific element
Inputs: selector, type, tabId.
get_cookiesC
Get cookies for the current page or specified URLs
Inputs: urls, tabId.
go_backB
Navigate back in browser history
Inputs: waitUntil, timeout, tabId.
go_forwardB
Navigate forward in browser history
Inputs: waitUntil, timeout, tabId.
hoverC
Hover over an element on the page
Inputs: selector (required), timeout, tabId.
keyboardC
Press a key or key combination
Inputs: key (required), modifiers, tabId.
list_tabsA
List all open browser tabs with their IDs, URLs, and titles
Inputs: no named parameters.
mouseC
Perform mouse actions at specific coordinates
Inputs: x (required), y (required), button, action, +1 more.
new_tabA
Open a new browser tab, optionally navigating to a URL. The new tab becomes active.
Inputs: url.
pdfC
Generate a PDF of the current page
Inputs: format, landscape, printBackground, margin, +1 more.
query_selectorC
Get information about an element matching a CSS selector
Inputs: selector (required), tabId.
reloadC
Reload the current page
Inputs: waitUntil, timeout, tabId.
screenshotB
Capture a screenshot of the page or a specific element
Inputs: fullPage, selector, format, quality, +4 more.
scrollC
Scroll the page or a specific element
Inputs: direction, amount, selector, smooth, +1 more.
selectC
Select option(s) from a dropdown/select element
Inputs: selector (required), values (required), timeout, tabId.
set_cookiesC
Set cookies in the browser
Inputs: cookies (required), tabId.
switch_tabB
Switch to a different tab, making it the active tab for subsequent operations.
Inputs: tabId (required).
waitA
Wait for a specified number of milliseconds
Inputs: ms (required).
wait_for_selectorC
Wait for an element matching the selector to appear in the page
Inputs: selector (required), visible, hidden, timeout, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 27 tools
Most tools have distinct purposes, such as navigation (navigate, go_back), interaction (click, fill, hover), and waiting (wait, wait_for_selector). However, some overlap exists between mouse actions: 'mouse' (perform actions at coordinates) and 'click' (click an element) could be confused for similar tasks, though descriptions clarify their differences.
All tool names follow a consistent snake_case pattern with clear verb_noun or verb_preposition_noun structures, such as 'click', 'close_tab', 'get_content', and 'wait_for_selector'. There are no deviations in naming conventions, making the set predictable and readable.
With 27 tools, the count is borderline high for a Puppeteer server, as it includes many specific actions like 'hover' and 'keyboard' that might be consolidated. While comprehensive, it risks feeling heavy compared to typical well-scoped sets of 3-15 tools, but it's reasonable for browser automation.
The tool set provides complete coverage for browser automation, including navigation, interaction, content retrieval, tab management, cookies, and waiting mechanisms. There are no obvious gaps; agents can perform full CRUD-like operations (e.g., get/set cookies, open/close tabs) and handle common workflows without dead ends.
Maintenance
Related MCP Connectors
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Hosted browser for agents: open pages, search the web, extract data, read PDFs and take screenshots.
Playwright browser automation — navigate, click, fill forms, extract, screenshot — 17 agent tools.
Cloud browser, web extraction, screenshots, and remote CDP tools for AI agents.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables LLMs to perform web browsing tasks, take screenshots, and execute JavaScript using Puppeteer for browser automation.428,466 npm1MIT
- AlicenseAqualityDmaintenanceEnables browser automation with concurrent tab pool management using Puppeteer. Supports navigation, content extraction, screenshots, element interaction, and JavaScript execution across multiple browser tabs with auto-recovery and idle timeout features.115 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to perform browser automation including web navigation, element interaction, and screenshot capture using Puppeteer. It provides capabilities for executing JavaScript in the browser and monitoring console logs for debugging and data extraction.28,466 npmMIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to control a browser for web automation tasks like navigation, typing, clicking, and taking screenshots.Apache 2.0