Skip to content
Conduit

mcp server

parallel-playwright-mcp

A playwright MCP server that supports parallel sessions, implemented in Go

tgrunnagle/parallel-playwright-mcpcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 23, 2026

parallel-playwright-mcp

A Model Context Protocol (MCP) server for browser automation via Playwright, implemented in Go. Designed for AI agents that need to drive multiple browser sessions in parallel — each session has its own isolated context with separate cookies, storage, and navigation history.

Key capabilities:

  • Parallel sessions — one MCP connection can manage many independent browser sessions across Chromium, Firefox, and WebKit
  • Full browser control — navigate, click, type, screenshot, extract text, evaluate JavaScript, and more
  • Streamable HTTP transport — communicates over HTTP using the MCP Streamable HTTP protocol, no stdio piping required
  • Configurable — YAML config with environment variable overrides for host, port, timeouts, browser flags, and logging
  • Docker-ready — single-stage Dockerfile bundles the server binary and all Playwright browser dependencies

Prerequisites

Quick Start

# Install dependencies and Playwright browsers
task setup

# Run the server (builds automatically)
task run

The server starts on http://127.0.0.1:3000 by default.

Docker

# Build image and run container
task docker:run

# Run with a minimal tool set
task docker:run:min-tools

# Run with custom config
task docker:run MCP_CONFIG_PATH=./custom.yaml

Manual Setup

go mod download
go run github.com/mxschmitt/playwright-go/cmd/playwright install --with-deps
go build -o bin/playwright-mcp-server ./cmd/server
./bin/playwright-mcp-server

MCP Tools

Session Management

ToolDescription
session_createCreate a new isolated browser session
session_listList all active browser sessions for this connection
session_closeClose a browser session and release its resources

Navigation

ToolDescription
navigateNavigate to a URL
go_backGo back in browser history
go_forwardGo forward in browser history
reloadReload the current page

Interaction

ToolDescription
clickClick an element on the page
typeType text into an element with keystroke events
fillFill an input field with text (fast, no keystroke events)
select_optionSelect an option from a dropdown
hoverHover over an element
press_keyPress a keyboard key or key combination

Inspection & Extraction

ToolDescription
screenshotCapture a PNG screenshot of the page or a specific element
extract_textExtract visible text from the page in hierarchical structure
get_htmlGet HTML source of the page or an element
evaluateExecute a JavaScript expression in the page context
query_selectorQuery element info by CSS selector
get_accessibility_treeGet an accessibility snapshot of the page
get_linksGet all hyperlinks from the page with IDs and labels
get_console_logsRetrieve browser console log messages
get_network_logsRetrieve captured network request/response logs
navigate_and_extract_textNavigate to a URL and extract visible text as markdown (creates a temporary session)

Tools can be restricted at startup with the enabled_tools config option or MCP_ENABLED_TOOLS environment variable.

Task Targets

TargetDescription
task setupInstall Go deps and Playwright browsers
task runBuild and run the server
task buildBuild the server binary to bin/
task testRun unit tests
task test:e2eRun E2E tests (requires Playwright browsers)
task lintRun go vet and go fmt
task checkRun lint + test + build
task docker:buildBuild the Docker image
task docker:runBuild and run in Docker
task cleanRemove build artifacts

Run task --list for the complete list.

Configuration

The server loads configuration from config.yaml (or the path in MCP_CONFIG_PATH) with environment variable overrides:

VariableOverrideDefault
MCP_HOSTServer bind address127.0.0.1
MCP_PORTServer port3000
MCP_BROWSER_HEADLESSHeadless modetrue
MCP_LOG_LEVELLog level (debug/info/warn/error)info
MCP_TIMEOUT_DEFAULTDefault timeout (ms)30000
MCP_TIMEOUT_NAVIGATIONNavigation timeout (ms)30000
MCP_TIMEOUT_ELEMENTElement wait timeout (ms)5000
MCP_ENABLED_TOOLSComma-separated list of enabled toolsall tools

See config.yaml for the full configuration reference.

↑↓ navigate openesc close