Skip to main content
Glama
Puppeteer MCP Server
by andytango

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

Tool

Description

list_tabs

List all open browser tabs

new_tab

Create a new tab (optionally with URL)

close_tab

Close a tab

switch_tab

Switch to a different tab

Navigation

Tool

Description

navigate

Navigate to a URL

reload

Reload the current page

go_back

Navigate back in history

go_forward

Navigate forward in history

Interaction

Tool

Description

click

Click an element

fill

Fill a text input

select

Select dropdown option(s)

hover

Hover over an element

focus

Focus an element

Input

Tool

Description

keyboard

Press keyboard keys

mouse

Perform mouse actions

scroll

Scroll the page or element

Content

Tool

Description

evaluate

Execute JavaScript

get_content

Get page/element HTML or text

query_selector

Get element information

Waiting

Tool

Description

wait_for_selector

Wait for element to appear

wait_for_navigation

Wait for navigation

wait

Wait for specified time

Media

Tool

Description

screenshot

Capture screenshot

pdf

Generate PDF

Cookies

Tool

Description

get_cookies

Get cookies

set_cookies

Set cookies

delete_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

PORT

HTTP server port

3000

HEADLESS

Run browser headless

true

TIMEOUT

Default 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

Available Tools

27 tools
clickC

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_navigationC

Wait for the page to navigate to a new URL

Inputs: waitUntil, timeout, tabId.

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

    B3.4/5.0

    Scored across 27 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count3/5

    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.

    Completeness5/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables 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.
      11
      5 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables 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 npm
      MIT