Puppeteer MCP Server

Enables LLMs to interact with web pages by providing browser automation capabilities, including screenshot capture and JavaScript execution.

Local serverstdioPython 17

What is the Puppeteer MCP server?

Enables LLMs to interact with web pages by providing browser automation capabilities, including screenshot capture and JavaScript execution. The puppeteer mcp server wraps that behind the Model Context Protocol, so an assistant can use it through 5 defined tools rather than through you.

What it actually does

A Model Context Protocol server that provides browser automation capabilities using Playwright (Python's equivalent to Puppeteer). This server enables LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment.

This Python implementation provides a stable alternative to the TypeScript version, offering the same capabilities with improved error handling and logging. It uses Playwright, which is the Python equivalent to Puppeteer, providing robust browser automation capabilities.

  • Full browser automation
  • Page navigation
  • Screenshot capture (full page or elements)
  • Form interaction (clicking and filling)
  • JavaScript execution
  • Console log monitoring

Its toolset

Everything the assistant can do here goes through one of these:

  • puppeteer_navigate — Navigate to any URL in the browser. json { "name": "puppeteer_navigate", "arguments": { "url": "https://example.com", "timeout": 60000 // optional
  • puppeteer_screenshot — Capture screenshots of the entire page or specific elements. json { "name": "puppeteer_screenshot", "arguments": { "name": "my_screenshot"
  • puppeteer_click — Click elements on the page. json { "name": "puppeteer_click", "arguments": { "selector": ".button-class", "timeout": 30000 // optional, defaults to
  • puppeteer_fill — Fill out input fields. json { "name": "puppeteer_fill", "arguments": { "selector": "#input-id", "value": "text to fill", "timeout": 30000 //
  • puppeteer_evaluate — Execute JavaScript in the browser console. json { "name": "puppeteer_evaluate", "arguments": { "script": "document.title", "timeout": 30000 //

Configuration

  • Python 3.8+ * pip (Python package installer)

Adding it to your client

Setup follows the usual MCP pattern — install or clone the server, register it in your client's configuration file, restart the client.

When to reach for it

Plenty of browser automation servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. Puppeteer's toolset — puppeteer_navigate, puppeteer_screenshot, puppeteer_click and 2 more — is a fair guide to whether it matches your workflow. It is maintained by twolven; worth a glance at recent repository activity before you build anything load-bearing on it.

SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.

Caveats

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • MCP clients confirm each tool call by default. Leave that on until you have watched what the puppeteer mcp server does with a few real requests.

Available tools

ToolWhat it does
puppeteer_navigateNavigate to any URL in the browser. json { "name": "puppeteer_navigate", "arguments": { "url": "https://example.com", "timeout": 60000 // optional, defaults to 60000ms } }
puppeteer_screenshotCapture screenshots of the entire page or specific elements. json { "name": "puppeteer_screenshot", "arguments": { "name": "my_screenshot", "selector": "#specific-element", // optional "width": 1280, // optional, default
puppeteer_clickClick elements on the page. json { "name": "puppeteer_click", "arguments": { "selector": ".button-class", "timeout": 30000 // optional, defaults to 30000ms } }
puppeteer_fillFill out input fields. json { "name": "puppeteer_fill", "arguments": { "selector": "#input-id", "value": "text to fill", "timeout": 30000 // optional, defaults to 30000ms } }
puppeteer_evaluateExecute JavaScript in the browser console. json { "name": "puppeteer_evaluate", "arguments": { "script": "document.title", "timeout": 30000 // optional, defaults to 30000ms } }

Configuration

  • Python 3.8+ * pip (Python package installer)

Example prompts to try

  • Use Puppeteer to puppeteer navigate.
  • Use Puppeteer to puppeteer screenshot.
  • Use Puppeteer to puppeteer click.

Frequently asked questions

It offers full browser automation, page navigation, screenshot capture, form interaction, JavaScript execution, configurable timeouts, detailed error handling, and comprehensive logging.