puppeteer-mcp

andytango/puppeteer-mcp

3.2

If you are the rightful owner of puppeteer-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The Puppeteer MCP Server is a Model Context Protocol server that leverages Puppeteer to provide browser automation capabilities, enabling AI agents to interact with web pages.

Tools
27
Resources
0
Prompts
0

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