Playwright MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PLAYWRIGHT_MCP_CAPS | No | Comma-separated list of additional capabilities to enable: vision, pdf, devtools. | |
| PLAYWRIGHT_MCP_HOST | No | Host to bind server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces. | |
| PLAYWRIGHT_MCP_PORT | No | Port to listen on for SSE transport. | |
| PLAYWRIGHT_MCP_CONFIG | No | Path to the configuration file. | |
| PLAYWRIGHT_MCP_DEVICE | No | Device to emulate, for example iPhone 15. | |
| PLAYWRIGHT_MCP_MOBILE | No | Emulate a generic mobile device. Cannot be combined with --device. | |
| PLAYWRIGHT_MCP_WEBMCP | No | Set to false to not collect or expose tools that a page registers through the WebMCP API. | |
| PLAYWRIGHT_MCP_BROWSER | No | Browser or chrome channel to use: chrome, firefox, webkit, or msedge. | |
| PLAYWRIGHT_MCP_CODEGEN | No | Language to use for code generation: typescript, python, java, csharp, or none. Defaults to typescript. | |
| PLAYWRIGHT_MCP_SANDBOX | No | Enable the sandbox for all process types that are normally not sandboxed. | |
| PLAYWRIGHT_MCP_ENDPOINT | No | Bound browser endpoint to connect to. | |
| PLAYWRIGHT_MCP_HEADLESS | No | Run browser in headless mode; headed by default. | |
| PLAYWRIGHT_MCP_ISOLATED | No | Keep the browser profile in memory; do not save it to disk. | |
| PLAYWRIGHT_MCP_CA_BUNDLE | No | Linux: trust PEM CA certificates in a temporary Chromium NSS database. | |
| PLAYWRIGHT_MCP_EXTENSION | No | Connect to a running Edge/Chrome browser instance via the Playwright Extension. | |
| PLAYWRIGHT_MCP_INIT_PAGE | No | Path to TypeScript file to evaluate on Playwright page object. | |
| PLAYWRIGHT_MCP_FILE_PATHS | No | How file paths are rendered in tool results: relative or absolute. Defaults to relative. | |
| PLAYWRIGHT_MCP_NO_SANDBOX | No | Disable the sandbox for all process types that are normally sandboxed. | |
| PLAYWRIGHT_MCP_OUTPUT_DIR | No | Path to the directory for automatically named output files. | |
| PLAYWRIGHT_MCP_USER_AGENT | No | User agent string. | |
| PLAYWRIGHT_MCP_CDP_HEADERS | No | CDP headers to send with the connect request. | |
| PLAYWRIGHT_MCP_CDP_TIMEOUT | No | Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000ms. | |
| PLAYWRIGHT_MCP_INIT_SCRIPT | No | Path to JavaScript file to add as an initialization script. Can be specified multiple times. | |
| PLAYWRIGHT_MCP_CDP_ENDPOINT | No | CDP endpoint to connect to. | |
| PLAYWRIGHT_MCP_IDLE_TIMEOUT | No | Close the browser after this many milliseconds without a completed tool call. Defaults to one hour for headless browsers and never for headed ones. | |
| PLAYWRIGHT_MCP_PROXY_BYPASS | No | Comma-separated domains to bypass proxy. | |
| PLAYWRIGHT_MCP_PROXY_SERVER | No | Proxy server, for example http://myproxy:3128 or socks5://myproxy:8080. | |
| PLAYWRIGHT_MCP_SAVE_SESSION | No | Whether to save the Playwright MCP session into the output directory. | |
| PLAYWRIGHT_MCP_SECRETS_FILE | No | Path to a file containing secrets in dotenv format. | |
| PLAYWRIGHT_MCP_ALLOWED_HOSTS | No | Comma-separated list of hosts this server is allowed to serve from. Pass '*' to disable the host check. | |
| PLAYWRIGHT_MCP_CONSOLE_LEVEL | No | Level of console messages to return: error, warning, info, or debug. | |
| PLAYWRIGHT_MCP_SNAPSHOT_MODE | No | Snapshot mode: full or none. Defaults to full. | |
| PLAYWRIGHT_MCP_STORAGE_STATE | No | Path to the storage state file for isolated sessions. | |
| PLAYWRIGHT_MCP_USER_DATA_DIR | No | Path to the user data directory. If not specified, a temporary directory will be created. | |
| PLAYWRIGHT_MCP_VIEWPORT_SIZE | No | Browser viewport size in pixels, for example 1280x720. | |
| PLAYWRIGHT_MCP_SNAPSHOT_BOXES | No | Include each element's bounding box in snapshots. | |
| PLAYWRIGHT_MCP_TIMEOUT_ACTION | No | Action timeout in milliseconds. Defaults to 5000ms. | |
| PLAYWRIGHT_MCP_TIMEOUT_SETTLE | No | How long to wait after each action for triggered work to settle, in milliseconds. Defaults to 500ms. | |
| PLAYWRIGHT_MCP_ALLOWED_ORIGINS | No | Semicolon-separated list of trusted origins to allow the browser to request. Default is to allow all. | |
| PLAYWRIGHT_MCP_BLOCKED_ORIGINS | No | Semicolon-separated list of origins to block the browser from requesting. | |
| PLAYWRIGHT_MCP_EXECUTABLE_PATH | No | Path to the browser executable. | |
| PLAYWRIGHT_MCP_IMAGE_RESPONSES | No | Whether to send image responses to the client: allow, omit, or only. Defaults to allow. | |
| PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE | No | Threshold for evicting old output files, in bytes. | |
| PLAYWRIGHT_MCP_PROFILE_DIR_NAME | No | Name of the profile directory in the user data dir to connect to with --extension. | |
| PLAYWRIGHT_MCP_GRANT_PERMISSIONS | No | List of permissions to grant to the browser context, for example geolocation, clipboard-read. | |
| PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE | No | Attribute to use for test ids. Defaults to data-testid. | |
| PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION | No | Navigation timeout in milliseconds. Defaults to 60000ms. | |
| PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS | No | Ignore HTTPS errors. | |
| PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS | No | Block service workers. | |
| PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT | No | Reuse the same browser context between all connected HTTP clients. | |
| PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS | No | Allow access to files outside of the workspace roots and unrestricted file:// URLs. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_closeB | Close the page |
| browser_resizeB | Resize the browser window |
| browser_console_messagesC | Returns all console messages |
| browser_handle_dialogC | Handle a dialog |
| browser_emulate_mediaA | Emulate CSS media features for the page, for example switch between the light and dark color scheme. Omitted parameters are left unchanged; null clears an override. |
| browser_evaluateC | Evaluate JavaScript expression on page or element |
| browser_file_uploadB | Upload one or multiple files |
| browser_dropA | Drop files or MIME-typed data onto an element, as if dragged from outside the page. At least one of "paths" or "data" must be provided. |
| browser_findA | Search the accessibility snapshot of the current page for text or a regular expression. Returns matching snapshot nodes with a few lines of surrounding context (like search snippets), each shown under its path from the root of the tree, which is cheaper than capturing the whole snapshot when you only need to locate an element and its ref. |
| browser_fill_formB | Fill multiple form fields |
| browser_press_keyB | Press a key on the keyboard |
| browser_typeB | Type text into editable element |
| browser_navigateC | Navigate to a URL |
| browser_navigate_backA | Go back to the previous page in the history |
| browser_network_requestsA | Returns a numbered list of network requests since loading the page. Use browser_network_request with the number to get full details. |
| browser_network_requestA | Returns full details (headers and body) of a single network request, or a single part if |
| browser_run_code_unsafeA | Run a Playwright code snippet. Unsafe: executes arbitrary JavaScript in the Playwright server process and is RCE-equivalent. |
| browser_take_screenshotA | Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions. |
| browser_snapshotA | Capture accessibility snapshot of the current page, this is better than screenshot |
| browser_clickB | Perform click on a web page |
| browser_dragA | Perform drag and drop between two elements |
| browser_hoverA | Hover over element on page |
| browser_select_optionB | Select an option in a dropdown |
| browser_tabsA | List, create, close, or select a browser tab. |
| browser_wait_forB | Wait for text to appear or disappear or a specified time to pass |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 25 tools
Most tools have clearly distinct browser-automation purposes, but a few boundaries blur: browser_close vs. browser_tabs can both close tabs, and browser_evaluate vs. browser_run_code_unsafe both execute code in different contexts. The descriptions usually clarify these differences, though an agent may still hesitate in edge cases.
All tool names use a consistent browser_ prefix followed by snake_case verbs or noun phrases. The pattern is predictable throughout the set.
25 tools is at the heavy end for a browser automation server; while most operations are genuinely useful, the surface feels granular and borderline overloaded. A more compact set could combine several low-level controls without losing capability.
The surface covers navigation, interaction, forms, screenshots, snapshots, tabs, dialogs, uploads, network/console inspection, and code execution. Minor gaps exist, such as explicit forward navigation/reload and cookie/storage management, but agents can often work around them with evaluate or run_code_unsafe.