MCP Hub
Back to servers

Puppeteer

A robust browser automation server that provides AI agents with full control over web pages, including multi-tab management, JavaScript execution, and media capture.

Stars
1
Tools
27
Updated
Dec 3, 2025

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

Installation

npm install
npm run build

Usage

Stdio Mode (Default)

For use with Claude Desktop or Claude Code:

npm start
# or
node dist/index.js

HTTP Mode

For remote or containerized deployments:

npm start -- --http
# or
node dist/index.js --http --port=3000

Claude Desktop Configuration

Add to your Claude Desktop config:

{
  "mcpServers": {
    "puppeteer": {
      "command": "node",
      "args": ["/path/to/puppeteer-mcp/dist/index.js"]
    }
  }
}

Available Tools

Tab Management

ToolDescription
list_tabsList all open browser tabs
new_tabCreate a new tab (optionally with URL)
close_tabClose a tab
switch_tabSwitch to a different tab

Navigation

ToolDescription
navigateNavigate to a URL
reloadReload the current page
go_backNavigate back in history
go_forwardNavigate forward in history

Interaction

ToolDescription
clickClick an element
fillFill a text input
selectSelect dropdown option(s)
hoverHover over an element
focusFocus an element

Input

ToolDescription
keyboardPress keyboard keys
mousePerform mouse actions
scrollScroll the page or element

Content

ToolDescription
evaluateExecute JavaScript
get_contentGet page/element HTML or text
query_selectorGet element information

Waiting

ToolDescription
wait_for_selectorWait for element to appear
wait_for_navigationWait for navigation
waitWait for specified time

Media

ToolDescription
screenshotCapture screenshot
pdfGenerate PDF

Cookies

ToolDescription
get_cookiesGet cookies
set_cookiesSet cookies
delete_cookiesDelete 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

VariableDescriptionDefault
PORTHTTP server port3000
HEADLESSRun browser headlesstrue
TIMEOUTDefault operation timeout (ms)30000

Development

# Install dependencies
npm install

# Run in development mode
npm run dev

# Type check
npm run typecheck

# Run tests
npm test

# Build
npm run build

Architecture

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, scroll

License

MIT

puppeteer-mcp

Reviews

No reviews yet

Sign in to write a review