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 minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11To set up an MCP server for browser testing, install Node.js 20 or newer, connect Microsoft’s Playwright MCP server to a compatible client, and start it with npx @playwright/mcp@latest. The server gives an AI assistant structured accessibility snapshots and browser tools for navigation, clicks, form entry, screenshots, network mocking, and related testing tasks. The quickest validation is to ask the assistant to open the Playwright TodoMVC demo and add several items.
What you need before installing
Node.js 20 or newer
Playwright MCP requires Node.js 20+. Check your version with:
node --version
If the result is below 20, install a current Node.js release before configuring the server. The browser itself is downloaded automatically the first time Playwright MCP runs, so the initial launch needs network access and permission to write to the normal Playwright browser cache.
An MCP-compatible client
You also need a client that can launch or connect to MCP servers. The documented options include VS Code, Cursor, Windsurf, Claude Code, Claude Desktop, and other compatible MCP clients. Each client stores server definitions in a different settings screen or configuration file, but the server command is the same.
#1 Best Overall
A trusted execution environment
Playwright MCP is not a read-only information connector. Microsoft’s Playwright documentation warns: “This tool runs arbitrary JavaScript in the Playwright server process and is RCE-equivalent — only enable it for trusted MCP clients.” Treat every client allowed to connect as having code-execution authority on the machine running the server.
Configure Playwright MCP in a desktop client
Use the standard server definition
Add this entry to the MCP configuration used by your client:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}
The @latest tag makes npx obtain the current package when it starts. If your organization requires pinned dependencies, replace that tag with the version you have approved and manage updates deliberately.
Use each client’s setup command
- VS Code: run
code --add-mcp, then enter the equivalent server definition when prompted. - Cursor: open the MCP section of Cursor settings and add the
playwrightserver withnpxand@playwright/mcp@latestas its argument. - Claude Code: run
claude mcp add playwright npx @playwright/mcp@latest. - Other clients: add the same command and argument array wherever that client manages MCP servers.
Restart or reload the client after saving the definition. A successful connection normally exposes Playwright tools and returns an accessibility snapshot after the assistant navigates to a page.
Run a smoke test before doing real testing
- Open a new conversation with the MCP-enabled assistant.
- Ask: “Navigate to https://demo.playwright.dev/todomvc and add a few todo items.”
- Confirm that the assistant reports a page snapshot, identifies the textbox, enters text, and submits the items.
- Ask it to inspect the resulting page or take a screenshot to verify that the browser session is still active.
The server’s structured accessibility snapshots let the model identify controls by roles, labels, and visible text instead of relying only on brittle pixel coordinates. This is useful for repeatable form, navigation, and assertion workflows.
Choose headed, headless, and browser settings
Headed versus headless
Playwright MCP runs headed by default, which is convenient while developing a test because you can watch the browser. For CI workers, containers, or a machine without a display, add --headless:
npx @playwright/mcp@latest --headless
Put that flag in the client’s args array when the client launches the server automatically.
Select a browser engine
Choose Chromium-based Chrome, Firefox, WebKit, or Microsoft Edge with --browser=<name>:
Recommended Free Tools
Rank #2
npx @playwright/mcp@latest --browser=firefox
npx @playwright/mcp@latest --browser=webkit
npx @playwright/mcp@latest --browser=chrome
npx @playwright/mcp@latest --browser=msedge
Use the engine that matches the compatibility question you are testing. Browser-specific behavior should be tested in each relevant engine rather than inferred from one run.
Control viewport and device behavior
For responsive checks, add --viewport-size or a device preset with --device. Proxy flags and a JSON configuration file provide additional control when a single command line becomes difficult to maintain. Keep the viewport, device, browser, and headless choices in the same configuration used by CI so local and automated runs exercise the same conditions.
Reuse authentication and existing browser sessions
Persistent profile
The normal persistent profile retains cookies and login state between runs. This is useful when a test account has already completed an interactive sign-in. Protect the profile directory because it can contain active session cookies.
Fresh isolated context
Use --isolated when every run must start clean:
npx @playwright/mcp@latest --isolated
Isolation prevents a previous run’s cookies, local storage, or other profile data from changing the result.
Load saved storage state
To preload a deliberately exported authentication state, pass a storage-state file:
npx @playwright/mcp@latest --storage-state=state.json
Store that file as a secret or protected artifact. Do not commit it to a repository or send it to an untrusted client.
Attach to an existing browser
When the workflow depends on an already open Chrome or Edge window, installed extensions, SSO, or a completed 2FA step, use extension attachment with --extension. You can also connect through a Chrome DevTools Protocol endpoint:
npx @playwright/mcp@latest --cdp-endpoint=chrome
npx @playwright/mcp@latest --cdp-endpoint=http://localhost:9222
--cdp-endpoint=chrome targets a running Chrome or Edge channel. The HTTP form targets a Chromium CDP endpoint that has been started separately. If another process exposes a Playwright server, use its WebSocket endpoint:
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 minuteRank #3
npx @playwright/mcp@latest --endpoint=ws://localhost:3000/
Attachment modes share the security boundary of the browser you connect to. A client that can drive your personal browser may be able to reach every account and tab available to that browser.
Run Playwright MCP as a standalone HTTP server
Client-launched standard input/output (stdio) is simplest on a local workstation. Use HTTP when a container, IDE worker, or separately managed browser process needs to host the server:
npx @playwright/mcp@latest --port 8931
Configure the MCP client to connect to:
http://localhost:8931/mcp
The server also supports --host, allowed-host controls, and a heartbeat timeout for HTTP sessions. The documented heartbeat default is five seconds; tune the timeout for your deployment rather than treating it as a benchmark or browser-performance number.
Do not expose an unauthenticated HTTP endpoint to a network you do not control. Restrict the bind address, allowed hosts, firewall access, and the clients that can reach it. If remote access is necessary, put authentication and transport protection in front of the server.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Enable only the capabilities your tests need
Core browser automation is always available. Optional capability groups expand the tool surface:
networkfor request inspection or mockingstoragefor browser storage workflowstestingfor test-oriented operationsvisionfor visual interactionspdffor PDF-related tasksdevtoolsfor developer-tool workflows
Enable groups with a comma-separated flag:
npx @playwright/mcp@latest --caps=network,storage,testing
The same setting can be supplied through the equivalent environment variable or a JSON configuration file. Start with core tools and add groups as a test requires them. A smaller capability surface reduces context overhead and makes it easier to audit what an assistant can do.
Choose a deployment model deliberately
| Decision | Option | Best fit | Important trade-off |
|---|---|---|---|
| Process model | Client-launched stdio | Local desktop development | The client owns the server lifecycle. |
| Process model | Standalone HTTP | Containers, IDE workers, or a separate browser host | You must secure the listening endpoint and manage sessions. |
| Browser lifecycle | Persistent profile | Repeated tests that need login state | Cookies and local data persist between runs. |
| Browser lifecycle | --isolated |
Clean, reproducible contexts | Each run must authenticate or preload state. |
| Browser lifecycle | CDP or extension attachment | Existing tabs, SSO, 2FA, and installed extensions | The assistant gains access to the attached browser’s session. |
| Execution mode | Headed | Interactive debugging | Requires a usable display. |
| Execution mode | Headless | CI and containers | You lose the visual window when diagnosing a failure. |
| Capability surface | Core only | Navigation, controls, and ordinary browser actions | Advanced network, PDF, or devtools tasks are unavailable. |
| Capability surface | Optional groups | Specialized testing workflows | More tools increase context and permission scope. |
Build reliable browser-testing prompts
Tell the assistant the starting URL, the expected state, and the observable result. For example:
- “Open the staging checkout, add one item, and report the text of the order confirmation.”
- “Use the network capability to mock the inventory request, then verify the out-of-stock message.”
- “Run this flow in a fresh isolated context and list every validation error shown after submitting an empty form.”
Ask for an accessibility snapshot or a screenshot at checkpoints. Snapshots make element identification inspectable; screenshots help you confirm visual state. Keep destructive actions, payment flows, and production data behind explicit human approval.
Rank #4
Troubleshoot common setup failures
The client cannot start the server
Check node --version, confirm that npx is on the client’s PATH, and run npx @playwright/mcp@latest in a terminal to see whether the package can download. Correct the JSON syntax and restart the client after changing its MCP settings.
The first launch hangs while opening a browser
The browser downloads on first use. Allow outbound access and enough disk space for the Playwright browser cache. A restricted CI worker should pre-warm that cache through its normal dependency-install process.
No browser window appears
Headed mode needs a display. Add --headless on a server without one, or run the process in an environment that provides a supported display.
Login state is missing
Check whether the run is using --isolated, the wrong profile, or an expired --storage-state file. For SSO or 2FA that cannot be replayed from a file, use --extension or attach through CDP to the already authenticated browser.
CDP or WebSocket attachment fails
Verify that the endpoint is reachable from the server process, that the port is correct, and that the browser was started with remote debugging enabled when required. Use the exact scheme and path: an HTTP CDP URL is different from a Playwright WebSocket endpoint.
A tool you need is unavailable
Add the relevant capability group to --caps, then reconnect the client so it receives the expanded tool list. Keep the list limited to what the test actually uses.
HTTP sessions disappear unexpectedly
Inspect the heartbeat setting and any reverse proxy idle timeout. The documented five-second heartbeat is an operational default, not a guarantee about request duration or browser speed.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Performance, reliability, and operating cost
There is no published benchmark in the setup documentation for startup time, throughput, or test latency. In practice, browser startup, page loading, authentication, and the amount of enabled tooling all affect a run. Persistent profiles and a warm browser can avoid repeated sign-in work; isolated contexts improve reproducibility at the cost of setup on each run.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Best Value
For CI, pin the Node.js and Playwright package versions you have validated, cache browser downloads where your runner permits it, and capture the assistant’s snapshots and screenshots as artifacts. For a remote HTTP deployment, monitor process restarts, session heartbeats, browser crashes, and endpoint access logs. MCP itself has no separate usage charge in this setup; your costs come from the machine, browser infrastructure, and the AI client or model you choose.
Or skip the browser setup
If your goal is a dependable website image or PDF rather than an interactive browser test, ScreenshotNeo provides a single-request screenshot API and an MCP server for AI agents. It accepts consent banners as a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed; the response identifies the result with X-Page-Verdict and X-Billed headers.
See the ScreenshotNeo API documentation for the complete option list. A minimal call is:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
The same request in Python:
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)
And in Node.js:
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’s MCP tools are take_screenshot, get_page_info, and capture_pdf, so Claude, Cursor, or another MCP client can request captures without your maintaining a Playwright process. It also supports full-page and element captures, device and viewport settings, dark mode, retina scale, PDF paper and page controls, custom CSS and JavaScript, clicks, waits, blocked requests, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, TTL caching, signed links, asynchronous webhooks, bulk capture of up to 100 URLs per call, a usage API, and an OpenAPI specification.
Free tools Windows power users keep installed
One-click scans. No signup required.
| Plan | Included shots | Price |
|---|---|---|
| Free | 1,000 per month | No card required |
| Starter | 3,000 | $5 |
| Growth | 15,000 | $15 |
| Pro | 60,000 | $39 |
| Scale | 250,000 | $99 |
| Business | 1,000,000 | $249 |
Every feature is available on every plan, and yearly billing gives two months free. Start with 1,000 free screenshots a month with no card; paid plans start at $5 for 3,000 shots.
Frequently Asked Questions
Does the first Playwright MCP launch require a separate browser installer?
No. The browser is downloaded automatically on first use, so the machine or CI worker must allow that initial network and cache operation.
What does the HTTP heartbeat timeout indicate?
It is a liveness setting for HTTP sessions, not a page-load or performance promise. The documented default is five seconds and can be adjusted for the deployment.
When is extension attachment preferable to a storage-state file?
Use extension attachment when the flow depends on an already authenticated tab, SSO, 2FA, or an installed browser extension that cannot be represented by exported storage state.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →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.




