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, possible values: 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 (Pixel 10 for Chromium, iPhone 17 for WebKit). Mobile pages are usually lighter, which saves tokens. Cannot be combined with --device. | |
| PLAYWRIGHT_MCP_BROWSER | No | Browser or chrome channel to use, possible values: chrome, firefox, webkit, mse dge. | |
| PLAYWRIGHT_MCP_CODEGEN | No | Specify the language to use for code generation, possible values: "typescript", "python", "java", "csharp", "none". Default is "typescript". | |
| 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_SAND BOX | No | Enable the sandbox for all process types that are normally not sandboxed. | |
| PLAYWRIGHT_MCP_EXTENSION | No | Connect to a running browser instance (Edge/Chrome only). Requires the "Playwright Extension" to be installed. | |
| PLAYWRIGHT_MCP_INIT_PAGE | No | Path to TypeScript file to evaluate on Playwright page object | |
| 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 output files. | |
| PLAYWRIGHT_MCP_CDP_HEADERS | No | CDP headers to send with the connect request, multiple can be specified. | |
| PLAYWRIGHT_MCP_CDP_TIMEOUT | No | Timeout in milliseconds for connecting to CDP endpoint, defaults to 30000ms | |
| PLAYWRIGHT_MCP_USER_AGEN T | No | Specify user agent string | |
| PLAYWRIGHT_MCP_CDP_ENDPOINT | No | CDP endpoint to connect to. | |
| PLAYWRIGHT_MCP_INIT_SCRIP T | No | Path to JavaScript file to add as an initialization script. The script will be evaluated in every page before any of the page's scripts. Can be specified multiple times. | |
| PLAYWRIGHT_MCP_PROXY_BYPASS | No | Comma-separated domains to bypass proxy, for example ".com,chromium.org,.domain.com" | |
| PLAYWRIGHT_MCP_PROXY_SERVER | No | Specify 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 the dotenv format | |
| PLAYWRIGHT_MCP_SORAGE_STATE | No | Path to the storage state file for isolated sessions. | |
| PLAYWRIGHT_MCP_ALLOWED_HOSTS | No | Comma-separated list of hosts this server is allowed to serve from. Defaults to the host the server is bound to. Pass '*' to disable the host check. | |
| PLAYWRIGHT_MCP_CONSOLE_LEVEL | No | Level of console messages to return: "error", "warning", "info", "debug". Each level includes the messages of more severe levels. | |
| PLAYWRIGHT_MCP_SNAPSHOT_MODE | No | When taking snapshots for responses, specifies the mode to use. Can be "full" or "none". Default is "full". | |
| PLAYWRIGHT_MCP_VIEWPORT_SIZE | No | Specify browser viewport size in pixels, for example "1280x720" | |
| PLAYWRIGHT_MCP_SNAPSHOT_BOXES | No | Include each element's bounding box as [box=x,y,width,height] in snapshots. Coordinates are viewport-relative, in CSS pixels. | |
| PLAYWRIGHT_MCP_TIMEOUT_ACTION | No | Specify 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_USER_DA TA_DIR | No | Path to the user data directory. If not specified, a temporary directory will be created. | |
| PLAYWRIGHT_MCP_ALLOWED_ORIGINS | No | Semicolon-separated list of TRUSTED origins to allow the browser to request. Default is to allow all. Important: does not serve as a security boundary and does not affect redirects. | |
| PLAYWRIGHT_MCP_BLOCKED_ORIGINS | No | Semicolon-separated list of origins to block the browser from requesting. Blocklist is evaluated before allowlist. If used without the allowlist, requests not matching the blocklist are still allowed. Important: does not serve as a security boundary and does not affect redirects. | |
| PLAYWRIGHT_MCP_EXECUTABLE_PATH | No | Path to the browser executable. | |
| PLAYWRIGHT_MCP_IMAGE_RESPONSES | No | Whether to send image responses to the client. Can be "allow" or "omit", Defaults to "allow". | |
| PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE | No | Threshold for evicting old output files, in bytes. | |
| PLAYWRIGHT_MCP_GRANT_PERMISSIONS | No | List of permissions to grant to the browser context, for example "geolocation", "clipboard-read", "clipboard-write". | |
| PLAYWRIGHT_MCP_TES T_ID_ATR IBUTE | No | Specify the attribute to use for test ids, defaults to "data-testid" | |
| PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION | No | Specify 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_CONTEX T | No | Reuse the same browser context between all connected HTTP clients. | |
| PLAYWRIGHT_MCP_ALLOW_UNRESIRICTED_FILE_ACCESS | No | Allow access to files outside of the workspace roots. Also allows unrestricted access to file:// URLs. By default access to file system is restricted to workspace root directories (or cwd if no roots are configured) only, and navigation to file:// URLs is blocked. |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_closeB | Close the page |
| browser_resizeB | Resize the browser window |
| browser_console_messagesB | Returns all console messages |
| browser_handle_dialogC | Handle a dialog |
| browser_evaluateB | 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_snapshotB | 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_forA | 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 24 tools
Most tools have clearly distinct purposes, and descriptions help differentiate similar ones like browser_snapshot vs browser_find and browser_evaluate vs browser_run_code_unsafe. The main minor overlaps are browser_close vs browser_tabs and browser_type vs browser_fill_form, which could cause occasional misselection.
All tools share a consistent browser_ prefix and snake_case style, with most names following a verb-oriented pattern like browser_click, browser_hover, and browser_navigate. A few noun-style names like browser_network_requests, browser_snapshot, and browser_file_upload deviate slightly, but the overall pattern remains predictable.
24 tools is on the heavier side for an MCP server, but the scope of browser automation justifies the breadth. Each tool addresses a real interaction need, though a few could potentially be consolidated without much loss.
The tool set covers the core browser automation lifecycle well: navigation, clicking, typing, form filling, snapshots, network inspection, dialogs, tabs, uploads, and JavaScript evaluation. Minor gaps like browser_forward and a more general wait-for-element tool are workable around with existing tools.