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)
- npm package
- @executeautomation/playwright-mcp-server
- 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.
| Tool | What it is for |
|---|---|
clear_codegen_session | Throws a recording away without writing a test. |
end_codegen_session | Stops recording and writes a Playwright test file. |
playwright_assert_response | Finishes that wait and checks the response that came back. |
playwright_click | Clicks an element found by CSS selector. |
playwright_click_and_switch_tab | Clicks a link that opens a new tab and carries on in that tab. |
playwright_close | Closes the browser and frees its resources. |
playwright_console_logs | Reads the browser console, filtered by type or text. |
playwright_custom_user_agent | Sets the browser's user agent string. |
playwright_delete | Sends an HTTP DELETE request. |
playwright_drag | Drags one element onto another. |
playwright_evaluate | Runs JavaScript in the page and returns the result. |
playwright_expect_response | Starts waiting for a network response that matches a URL pattern. |
playwright_fill | Types a value into an input. |
playwright_get | Sends an HTTP GET request outside the page. |
playwright_get_visible_html | Returns the page HTML, with scripts removed unless you ask for them. |
playwright_get_visible_text | Returns the readable text of the page. |
playwright_go_back | Goes back one page in history. |
playwright_go_forward | Goes forward one page in history. |
playwright_hover | Moves the mouse over an element, for menus and tooltips. |
playwright_iframe_click | Clicks an element inside an iframe. |
playwright_iframe_fill | Types into a field inside an iframe. |
playwright_navigate | Opens a URL, starting the browser if needed. You can pick Chromium, Firefox or WebKit, the window size and headless mode. |
playwright_patch | Sends an HTTP PATCH request. |
playwright_post | Sends an HTTP POST request. |
playwright_press_key | Presses a keyboard key, optionally on a focused element. |
playwright_put | Sends an HTTP PUT request. |
playwright_resize | Changes the viewport by size or by one of 143 device presets, with orientation. |
playwright_save_as_pdf | Saves the page as a PDF file. |
playwright_screenshot | Captures the page or one element, full page if you like, and can save it as a PNG. |
playwright_select | Picks an option in a select box. |
playwright_upload_file | Attaches a local file to a file input. |
start_codegen_session | Starts recording the browser actions that follow, for turning into a test. |
Only reads1 tool · Looks things up and changes nothing.
| Tool | What it is for |
|---|---|
get_codegen_session | Shows 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)
{
"mcpServers": {
"executeautomation-playwright": {
"command": "npx",
"args": [
"-y",
"@executeautomation/playwright-mcp-server"
]
}
}
}Where it goes: Your terminal, in the project folder
claude mcp add-json executeautomation-playwright '{"command":"npx","args":["-y","@executeautomation/playwright-mcp-server"]}'Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"executeautomation-playwright": {
"command": "npx",
"args": [
"-y",
"@executeautomation/playwright-mcp-server"
]
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"executeautomation-playwright": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@executeautomation/playwright-mcp-server"
]
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"executeautomation-playwright": {
"command": "npx",
"args": [
"-y",
"@executeautomation/playwright-mcp-server"
]
}
}
}Where it goes: Not supported
ChatGPT only connects to remote servers by URL. This one runs on your computer, so use Claude, Cursor or VS Code.
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.
| Setting | What it does |
|---|---|
--portCommand line flag | Runs it as an HTTP server on that port instead of over stdio, for clients that connect by URL. The endpoint is /mcp.--port 8931 |
headlessConfig | An option on playwright_navigate. Ask for headless mode when there is no screen, or leave it off to watch the browser work. |
browserTypeConfig | An 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.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| ExecuteAutomation Playwright MCP | 33 | Your computer | MIT | 5.7K |
| Wigolo | 10 | Your computer | AGPL-3.0-only | 5.5K |
| Perplexity MCP | 4 | Your computer or hosted | MIT | 2.6K |
| Tavily MCP | 5 | Your computer or hosted | MIT | 2.5K |
| Playwright MCP | 25 | Your computer | Apache-2.0 | 38.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.
Something wrong on this page? Tell us.
