MCP Hub
Back to servers

Playwright MCP

Enables browser automation and web scraping by exposing Playwright tools through an HTTP-based MCP server. Users can navigate pages, interact with web elements, capture screenshots, and extract structured content using a persistent Chromium instance.

Updated
Feb 20, 2026

Playwright MCP

FastMCP server with Playwright for browser automation and web scraping. Exposes tools over HTTP for use with MCP clients (e.g. GPT-based agents).

Features

  • HTTP transport – Server runs as an HTTP service; clients connect via URL.
  • Long-lived browser – One Chromium instance started at server startup (Option A).
  • Structured logging – Structlog with configurable level and JSON output.
  • Modular layout – Config, logging, browser, tools, and server are separate; state is injected via lifespan context.

Tools

ToolDescription
browser_navigateNavigate to a URL
browser_snapshotGet HTML/text snapshot of the current page
browser_tabsList open tabs (pages)
browser_clickClick an element by CSS selector
browser_typeType text into an element
browser_fill_formFill multiple form fields (selector → value map)
browser_scrapeExtract content (text, HTML, or links) from current page or URL
browser_screenshotTake a PNG screenshot (base64) of page or element

Requirements

  • Python 3.10+
  • Playwright browsers (install after pip install)

Setup

# From project root
pip install -e .
python -m playwright install chromium

Optional: copy .env.example to .env and adjust MCP_HOST, MCP_PORT, HEADLESS, LOG_LEVEL, LOG_JSON.

Run

# After pip install -e .
playwright-mcp

# Or
python -m playwright_mcp.main

Server listens at http://127.0.0.1:8000 by default. MCP endpoint is typically at http://127.0.0.1:8000/mcp (see FastMCP HTTP deployment docs).

Project layout

src/playwright_mcp/
├── main.py           # Entrypoint
├── config/           # Env-based settings
├── logging_/          # Structlog setup and get_logger
├── browser/          # Lifecycle and BrowserState
├── tools/            # Navigation, interaction, scraping, screenshot
└── server/           # FastMCP app and dependency registration

Configuration

Env varDefaultDescription
MCP_HOST127.0.0.1HTTP bind host
MCP_PORT8000HTTP bind port
HEADLESStrueRun browser headless
LOG_LEVELINFOLog level (DEBUG, INFO, WARNING, ERROR)
LOG_JSONfalseOutput logs as JSON

Reviews

No reviews yet

Sign in to write a review