Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some 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:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
"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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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:

  1. Configuration file
  2. Environment variables
  3. 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:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
"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:

"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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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

  1. Find the MCP server entry named for Playwright in your client’s configuration.
  2. Keep @playwright/mcp@latest as the package argument and add one --browser=... item to that same args array.
  3. Remove conflicting browser flags from the array.
  4. Check whether PLAYWRIGHT_MCP_BROWSER is set by the launcher.
  5. If using a config file, verify the browser.browserName spelling and allowed value.
  6. Save the file and restart or reload the MCP server.
  7. 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.Support on Ko-Fi

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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.