Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallSome links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
Set Playwright MCP’s browser on the MCP server, not in a browser tab or in your client’s chat prompt. Add --browser=<value> to the server’s args array. For example, this starts Firefox:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest", "--browser=firefox"]
}
}
}
The supported command-line values documented by Playwright are chrome, firefox, webkit and msedge. Google Chrome is the default when you do not specify a browser.
Choose the browser in the Playwright MCP server arguments
Playwright MCP reads browser selection when its server process starts. Put the browser flag in the Playwright server’s argument list in whatever MCP configuration format your client uses. The surrounding JSON differs between clients, but the important part is the same:
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minute"args": ["@playwright/mcp@latest", "--browser=firefox"]
Chrome
"args": ["@playwright/mcp@latest", "--browser=chrome"]
Firefox
"args": ["@playwright/mcp@latest", "--browser=firefox"]
WebKit
"args": ["@playwright/mcp@latest", "--browser=webkit"]
Microsoft Edge
"args": ["@playwright/mcp@latest", "--browser=msedge"]
Restart the MCP server, then create a new browser session. Existing sessions keep the browser that was selected when they were launched. If your client has a reload or restart-MCP command, use it after saving the configuration.
#1 Best Overall
Use the environment variable when the setting belongs to the process
The Playwright MCP README also documents PLAYWRIGHT_MCP_BROWSER. Set it in the environment that starts the MCP server:
PLAYWRIGHT_MCP_BROWSER=firefox npx @playwright/mcp@latest
On Windows PowerShell, set the variable for the current shell before launching the server:
$env:PLAYWRIGHT_MCP_BROWSER = "firefox"
npx @playwright/mcp@latest
This approach is useful when one launcher, container, or IDE worker should choose the browser without editing a checked-in MCP configuration. Confirm that the variable is actually inherited by the process that starts MCP; setting it in a different terminal does not affect an already-running server.
Use a JSON config file for reusable advanced settings
Playwright MCP can load an advanced configuration file with --config. Set the browser under the browser object:
{
"browser": {
"browserName": "firefox"
}
}
In this file, the schema uses chromium, firefox, or webkit for browserName. That naming is different from the command-line values: the CLI documents chrome, firefox, webkit, and msedge. Do not copy browserName: "chrome" into the JSON schema; use the schema’s documented value.
Rank #2
Launch the server with the path to your file:
npx @playwright/mcp@latest --config path/to/config.json
Which setting wins?
Playwright applies settings in this order:
- Configuration file
- Environment variables
- Command-line arguments
The later source overrides the earlier one. Therefore, an explicit --browser=firefox in args wins over both PLAYWRIGHT_MCP_BROWSER and the JSON file. This is a common reason a change appears to have no effect: an older command-line flag is still present.
Browser selection is separate from display mode
Choosing Firefox, WebKit, or Edge does not decide whether a window is visible. Playwright MCP runs headed by default. Add --headless when the server must run without a visible browser:
"args": ["@playwright/mcp@latest", "--browser=firefox", "--headless"]
Keep the two decisions independent:
- Browser: the engine or channel used for the session.
- Headed or headless: whether that session displays a browser window.
If headed mode is required on a machine without a display, the official guidance is to run MCP separately with HTTP transport and have the MCP client connect to that server. This avoids trying to open a graphical window inside an IDE worker or display-less host.
Choose profile and session behavior independently
Browser choice also does not determine whether cookies and logins persist. Persistent profile mode is the default. Use these options for different session requirements:
| Goal | Option | Effect |
|---|---|---|
| Keep normal profile state | No extra flag | Persistent mode preserves logins and cookies. |
| Start clean for each run | --isolated |
Creates a fresh isolated session. |
| Load known cookies and local storage | --storage-state |
Loads supplied storage state into an isolated session. |
| Choose a profile directory | --user-data-dir |
Selects the directory used for profile data. |
For example, a clean Firefox session can be launched with:
Rank #3
"args": [
"@playwright/mcp@latest",
"--browser=firefox",
"--isolated"
]
Use isolation for reproducible tests or when credentials from your everyday profile must not be exposed. Use persistent mode when the workflow intentionally depends on an existing login.
Free tools Windows power users keep installed
One-click scans. No signup required.
When you should connect to an existing browser instead
If your goal is to control a browser that is already open, selecting a launch browser is not the right abstraction. Playwright MCP documents connection methods for existing sessions, including browser channels, CDP endpoints, Playwright server endpoints, and a browser extension.
The extension is useful when the current session contains the state you need: it can reuse logged-in sessions, cookies, installed extensions, and open tabs. The --profile-dir-name option selects which browser profile the extension uses. Connection mode is usually preferable to copying credentials into a newly launched profile.
Client configuration checklist
- Find the MCP server entry named for Playwright in your client’s configuration.
- Keep
@playwright/mcp@latestas the package argument and add one--browser=...item to that sameargsarray. - Remove conflicting browser flags from the array.
- Check whether
PLAYWRIGHT_MCP_BROWSERis set by the launcher. - If using a config file, verify the
browser.browserNamespelling and allowed value. - Save the file and restart or reload the MCP server.
- Start a new session and confirm the browser window or connection target.
The official getting-started instructions tell users to consult their MCP client for the exact location and enclosing syntax of server configuration. Do not paste the complete example above into a client that expects a different top-level format; preserve your client’s wrapper and change only the Playwright server’s arguments.
Troubleshooting browser selection
The server still opens Chrome
Chrome is the default, so this normally means the flag was not read. Check that the argument is exactly --browser=firefox, is inside the Playwright server’s args array, and is not placed in a neighboring server entry. Then restart the server rather than merely opening a new chat.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →An environment-variable change is ignored
Look for a command-line browser flag. Command-line arguments have higher precedence and override the environment. Also verify that the variable is defined in the same process environment used by the MCP launcher.
The config file is rejected
Validate JSON syntax and use the schema field browser.browserName. In the file, use chromium, firefox, or webkit; do not substitute the CLI-only channel name msedge.
No browser window appears
Check for --headless. A selected browser can still run headlessly. If headless mode is absent but the host has no graphical display, run MCP as a separate HTTP service as recommended by the official guidance.
The new browser has no login
Browser selection does not transfer profile state. Persistent mode, --user-data-dir, --storage-state, or an existing-browser connection must be configured separately. For a deliberately clean run, the missing login is expected.
The browser executable cannot start
Confirm that the selected Playwright browser is installed and available to the server process. Check the MCP server’s startup error for the missing executable or permission problem, install the required browser through your normal Playwright setup, and restart MCP.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Performance and reliability considerations
Use the simplest launch configuration that matches the task. A direct command-line flag is easiest to audit and makes precedence obvious. An environment variable is convenient for deployment-specific defaults. A config file is better when browser, profile, isolation, and related settings must travel together.
For repeatable automation, avoid accidental state: pin the same profile strategy, browser choice, and headless setting across runs. For workflows that require a person’s existing extensions or login, connect to the already-running browser instead of attempting to recreate that state in a fresh process.
Or skip the browser setup
If your actual goal is a clean screenshot rather than interactive browser control, ScreenshotNeo provides a single HTTP request. Its API accepts the URL and returns PNG, JPEG, WebP, or PDF output; documentation and all request options are at https://screenshotneo.com/docs/.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
ScreenshotNeo accepts cookie and consent banners as a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed as clean shots, and the response identifies the page verdict and billing status in X-Page-Verdict and X-Billed headers. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients.
The Free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 shots; every feature is available on every plan. Create a free ScreenshotNeo account to get started.
Frequently Asked Questions
Can I change the browser after an MCP session starts?
No. Browser selection is applied when the server launches. Change the configuration, restart or reload the server, and create a new session.
Why does the config file say chromium while the CLI example says chrome?
They are different interfaces. The JSON schema uses browserName values such as chromium; the command-line interface documents chrome as a supported value.
Which option preserves an already-open tab?
Use a documented existing-browser connection, such as the extension, CDP, or a Playwright endpoint, rather than launching a new persistent profile.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

