BrowserStack MCP Server
OFFICIAL SERVERRun, debug and manage web and mobile tests on BrowserStack's real-device cloud from an assistant
Microsoft's Playwright server for driving Chrome, Firefox, WebKit or Edge from an MCP client
Official · Microsoft TypeScript Local · stdio Browser automationTesting
129 popularity score ★ 39k ↓ 11M/wk
Opens the app, which asks before it adds the server.
claude mcp add playwright -- npx @playwright/mcp@latest{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}{
"servers": {
"playwright": {
"type": "stdio",
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]gemini mcp add --scope user playwright npx -- @playwright/mcp@latestOpens the app, which asks before it adds the server.
claude mcp add playwright -- docker run -i --rm --init --pull=always mcr.microsoft.com/playwright/mcp{
"mcpServers": {
"playwright": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"--pull=always",
"mcr.microsoft.com/playwright/mcp"
]
}
}
}{
"mcpServers": {
"playwright": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"--pull=always",
"mcr.microsoft.com/playwright/mcp"
]
}
}
}{
"servers": {
"playwright": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"--pull=always",
"mcr.microsoft.com/playwright/mcp"
]
}
}
}[mcp_servers.playwright]
command = "docker"
args = ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]gemini mcp add --scope user playwright docker -- run -i --rm --init --pull=always mcr.microsoft.com/playwright/mcpPLAYWRIGHT_MCP_BROWSER |
Optional: Browser or channel to use: chrome, firefox, webkit or msedge (same as --browser). |
|---|---|
PLAYWRIGHT_MCP_HEADLESS |
Optional: Run without a window (same as --headless). When unset it is headed, except on Linux with no DISPLAY, where it runs headless. |
PLAYWRIGHT_MCP_CAPS |
Optional: Comma-separated tool groups to add: network, storage, devtools, vision, pdf, testing, config (same as --caps). |
PLAYWRIGHT_MCP_ISOLATED |
Optional: Keep the browser profile in memory instead of on disk (same as --isolated). Cannot be combined with a user data directory. |
PLAYWRIGHT_MCP_USER_DATA_DIR |
Optional: Folder for the persistent browser profile (same as --user-data-dir). |
PLAYWRIGHT_MCP_ALLOWED_ORIGINS |
Optional: Semicolon-separated origins the browser may request. All are allowed when unset, and redirects are not covered. |
PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS |
Optional: Allow files outside the workspace roots and any file:// URL (same as --allow-unrestricted-file-access). |
PLAYWRIGHT_MCP_IGNORE_ROOTS |
Optional: Skip asking the client for workspace roots and use the working directory as the root (same as --ignore-roots). |
PLAYWRIGHT_MCP_REDACT_URL_PARAMS |
Optional: Comma-separated query or fragment parameter names, such as access_token, whose values are shown as <redacted> in tool output. |
PLAYWRIGHT_MCP_CONFIG |
Optional: Path to a JSON configuration file (same as --config). |
| Set together: http | |
PLAYWRIGHT_MCP_PORT |
Optional: Port for serving over HTTP instead of stdio (same as --port). |
PLAYWRIGHT_MCP_ALLOWED_HOSTS |
Optional: Comma-separated hosts the HTTP server answers for. Defaults to localhost, loopback addresses and the --host value; * turns the check off. |
In a container, a setting goes in with -e NAME=value after docker run.
Playwright MCP is Microsoft's browser automation server built on Playwright. The model works from accessibility snapshots of the page rather than pixels, so it can click, type, fill forms, answer dialogs, switch tabs and read console output or network traffic with no vision model involved. Screenshots are still there when you want to look at a page.
More tools come in through --caps. With network you get request mocking and an offline switch. Storage adds cookies, localStorage, sessionStorage and saved storage state, and devtools brings tracing, video, highlights and recording a person's clicks as Playwright code. Then there are coordinate mouse control (vision), PDF export (pdf), locator and assertion helpers for tests (testing), and a tool that prints the resolved settings (config). Counting every opt-in group it has 72 tools, and 25 of them are on without any --caps.
It runs on your machine under Node.js 18 or later. With no browser named it opens the installed Google Chrome channel, and it keeps a persistent profile so logins survive between sessions. Use --isolated for an in-memory profile, or --extension to attach to a Chrome or Edge you already have open. The README calls it headed by default, but the config code turns headless on when it runs on Linux with no DISPLAY set. Actions time out after 5 seconds and navigations after 60 unless you change the timeout settings. Passing --port starts it as an HTTP server, and there is a Docker image that runs headless Chromium only.
The maintainers point coding agents toward the separate Playwright CLI with skills, which costs fewer tokens. They keep this server for longer agent loops that hold on to browser state.
| Runtime | Node.js 18+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Also |
|
A good fit for an agent that has to work through real web pages step by step: testing a flow, filling forms, checking what a page shows, or capturing a trace or video of a run. It comes from the Playwright team, runs locally and needs no account. Since it can click and submit as you on any site the browser can open, the persistent profile matters. Use --isolated or a separate user data directory when the agent should not carry your logins. Coding agents that only need quick browser checks may spend fewer tokens with Playwright CLI and skills, which the README recommends for that case.
16 only read, 39 change things, 5 can delete or overwrite.
browser_click changesbrowser_close changesbrowser_console_messagesbrowser_drag changesbrowser_drop changesbrowser_emulate_media changesbrowser_evaluate changesbrowser_file_upload changesbrowser_fill_form changesbrowser_findbrowser_handle_dialog changesbrowser_hover changesbrowser_navigate changesbrowser_navigate_back changesbrowser_network_requestbrowser_network_requestsbrowser_press_key changesbrowser_resize changesbrowser_run_code_unsafe changesbrowser_select_option changesbrowser_snapshotbrowser_take_screenshotbrowser_type changesbrowser_wait_forbrowser_tabs changesbrowser_network_state_set changesbrowser_route changesbrowser_route_listbrowser_unroute changesbrowser_cookie_clear deletesbrowser_cookie_delete deletesbrowser_cookie_getbrowser_cookie_listbrowser_cookie_set changesbrowser_localstorage_listbrowser_localstorage_getbrowser_localstorage_set changesbrowser_localstorage_delete deletesbrowser_localstorage_clear deletesbrowser_set_storage_state deletesbrowser_storage_state changesbrowser_annotatebrowser_highlight changesbrowser_resume changesbrowser_start_recording changesbrowser_stop_recordingbrowser_start_tracing changesbrowser_stop_tracing changesbrowser_start_video changesbrowser_stop_video changesbrowser_video_chapter changesbrowser_mouse_click_xy changesbrowser_mouse_down changesbrowser_mouse_drag_xy changesbrowser_mouse_move_xy changesbrowser_mouse_up changesbrowser_mouse_wheel changesbrowser_pdf_save changesbrowser_generate_locatorbrowser_verify_element_visible