Skip to content
MCP Shelf

ExecuteAutomation Playwright MCP

View on GitHub

A community Playwright server that also writes test code and emulates phones and tablets.

  • Started in our test
  • ★ 5.7K GitHub stars
  • 7K downloads a week
  • Last commit 13 Dec 2025

At a glance

This is the Playwright server from ExecuteAutomation, a test-automation training site, and it predates Microsoft's own Playwright MCP. The model drives a real Chromium, Firefox or WebKit browser by CSS selector: open pages, click, fill forms, run JavaScript, save PDFs and take screenshots. It can also record what it did as Playwright test code and make plain HTTP requests for API checks.

Its party trick is device emulation: one call switches the page to any of 143 Playwright device profiles, such as an iPhone 13 or an iPad in landscape. The last release was in December 2025, so for day-to-day browsing Microsoft's server is the safer default; this one suits people who want test code and device checks out of the session.

Made by
ExecuteAutomation (Karthik KK)
Licence
MIT
Latest version
1.0.12 (12 Dec 2025)
GitHub stars
5.7K
Downloads
7K a week
Last commit
13 Dec 2025
Tools
33
Runs on
Your computer

Our check: We ran this exact config on 27 Oct 2026: it started and answered with 33 tools. The shared database listed "@michaellatman/mcp-get", an installer, as the package. The server itself is @executeautomation/playwright-mcp-server, version 1.0.12.

What's in the pod: its tools

We found 33 tools when we started it on 27 Oct 2026. 1 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.

Changes things32 tools · Can create, edit, send or delete.

ToolWhat it is for
clear_codegen_sessionThrows a recording away without writing a test.
end_codegen_sessionStops recording and writes a Playwright test file.
playwright_assert_responseFinishes that wait and checks the response that came back.
playwright_clickClicks an element found by CSS selector.
playwright_click_and_switch_tabClicks a link that opens a new tab and carries on in that tab.
playwright_closeCloses the browser and frees its resources.
playwright_console_logsReads the browser console, filtered by type or text.
playwright_custom_user_agentSets the browser's user agent string.
playwright_deleteSends an HTTP DELETE request.
playwright_dragDrags one element onto another.
playwright_evaluateRuns JavaScript in the page and returns the result.
playwright_expect_responseStarts waiting for a network response that matches a URL pattern.
playwright_fillTypes a value into an input.
playwright_getSends an HTTP GET request outside the page.
playwright_get_visible_htmlReturns the page HTML, with scripts removed unless you ask for them.
playwright_get_visible_textReturns the readable text of the page.
playwright_go_backGoes back one page in history.
playwright_go_forwardGoes forward one page in history.
playwright_hoverMoves the mouse over an element, for menus and tooltips.
playwright_iframe_clickClicks an element inside an iframe.
playwright_iframe_fillTypes into a field inside an iframe.
playwright_navigateOpens a URL, starting the browser if needed. You can pick Chromium, Firefox or WebKit, the window size and headless mode.
playwright_patchSends an HTTP PATCH request.
playwright_postSends an HTTP POST request.
playwright_press_keyPresses a keyboard key, optionally on a focused element.
playwright_putSends an HTTP PUT request.
playwright_resizeChanges the viewport by size or by one of 143 device presets, with orientation.
playwright_save_as_pdfSaves the page as a PDF file.
playwright_screenshotCaptures the page or one element, full page if you like, and can save it as a PNG.
playwright_selectPicks an option in a select box.
playwright_upload_fileAttaches a local file to a file input.
start_codegen_sessionStarts recording the browser actions that follow, for turning into a test.

Only reads1 tool · Looks things up and changes nothing.

ToolWhat it is for
get_codegen_sessionShows what a recording session has captured so far.

Grouped and described by us. The README on GitHub lists the inputs each tool takes.

How clearly it describes its tools to your assistant

Tools with a description
33 of 33
Say if they change things
0 of 33
Context it takes, at least
~1,300 tokens

No tool says whether it only reads or can change things, so your client treats them all alike: keep approvals on.

From the tool list it sent us. The token figure counts names, descriptions and input names; the full schemas your client loads add more.

Set it up

Pick your app for the exact snippet and where it goes.

Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)

Claude Desktop
{
  "mcpServers": {
    "executeautomation-playwright": {
      "command": "npx",
      "args": [
        "-y",
        "@executeautomation/playwright-mcp-server"
      ]
    }
  }
}

For a client that connects by URL, start it with npx @executeautomation/playwright-mcp-server --port 8931 and point the client at http://localhost:8931/mcp.

New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.

Settings

Names are exactly as the project spells them. Required ones are marked.

SettingWhat it does
--portCommand line flagRuns it as an HTTP server on that port instead of over stdio, for clients that connect by URL. The endpoint is /mcp.--port 8931
headlessConfigAn option on playwright_navigate. Ask for headless mode when there is no screen, or leave it off to watch the browser work.
browserTypeConfigAn option on playwright_navigate: chromium, firefox or webkit.

What it can touch

It can read

  • Any web page it opens, including text, HTML and console output
  • Responses from HTTP requests it sends

It can change

  • Forms and pages it clicks through, signed in as whoever the browser session is
  • Files it saves: screenshots, PDFs and generated tests
  • Any API you point its HTTP tools at

Safer setup: It starts a fresh browser profile, so it is not signed in to your accounts unless you sign in during the session. Keep the HTTP tools away from production APIs.

Before you start

  • Node.js 18 or newer
  • Disk space for the Playwright browser it downloads on first use

If it does not work

The first call takes a long time
On first use it downloads the browser it needs. Run npx playwright install chromium beforehand to get that out of the way.
A headed browser fails on a server or in a container
There is no display. Ask for headless mode, or run the server in HTTP mode on a machine with a screen.
HTTP mode does not connect
Clients need "type": "http" alongside the URL http://localhost:8931/mcp. Claude Desktop only supports the stdio config.
No logs appear in the terminal
In stdio mode it writes logs to ~/playwright-mcp-server.log so they do not break the protocol.

Peas in a pod: similar servers

How ExecuteAutomation Playwright MCP lines up against other browser and web data servers on the shelf.

ServerToolsRuns onLicenceStars
ExecuteAutomation Playwright MCP33Your computerMIT5.7K
Wigolo10Your computerAGPL-3.0-only5.5K
Perplexity MCP4Your computer or hostedMIT2.6K
Tavily MCP5Your computer or hostedMIT2.5K
Playwright MCP25Your computerApache-2.038.7K

Questions

Is this the official Playwright MCP?

No. Microsoft publishes its own server, @playwright/mcp, which works from the accessibility tree. This one is a community project from ExecuteAutomation that uses CSS selectors and adds test recording and API tools.

Which one should I use?

Microsoft's for general browsing and current Playwright releases. This one if you want generated test files, device emulation presets or HTTP request tools in the same server.

Is it still maintained?

The latest release, 1.0.12, came out in December 2025, and the repository has been quiet since. It still installs and starts.

Is it free?

Yes, under the MIT licence.

Full docs on GitHubexecuteautomation/mcp-playwright

Something wrong on this page? Tell us.

More in Browser and web data