Free tools Windows power users keep installed
One-click scans. No signup required.
Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
The quickest way to give an MCP-compatible assistant browser automation is to configure Microsoft’s existing Playwright MCP server, rather than build a browser driver and MCP protocol layer from scratch. You need Node.js 20 or newer and an MCP client. For a custom server, keep the tool set narrow, return useful page state after each action, and treat browser access as a powerful permission—not as a harmless chat feature.
Configure a working browser automation MCP server
Playwright MCP is a maintained reference implementation: it connects an MCP client to browser automation powered by Playwright. In this setup, the client launches the server process when needed. The example below follows the documented quick-start configuration; the exact file or settings screen where you enter it depends on your MCP client.
Requirements
- Node.js 20 or newer.
- An MCP-compatible client that supports launching a local server process.
- Internet access for the initial package and browser setup. The Playwright quick start says the browser downloads on first use.
Check the Playwright MCP getting-started documentation and your client’s MCP setup instructions for current requirements and the appropriate configuration location. The package identifier below uses @latest, so the version selected can change over time.
Add the server to your client
In the MCP server configuration supported by your client, add this JSON entry:
#1 Best Overall
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}
Save the configuration and use the client’s controls to start or reconnect to the server. The client launches npx, which runs the package. A client may present available MCP tools differently, so use its own interface for selecting the server and invoking tools.
How the browser interaction loop works
MCP carries tool requests and results between the assistant client and the server. Playwright MCP’s documented interaction pattern uses accessibility structure to identify page elements, instead of making screenshots and guessing at pixel coordinates for ordinary targeting.
- Navigate: Ask the assistant to open a page, for example, “Navigate to https://demo.playwright.dev/todomvc and add a few todo items.” This is an example prompt from the official documentation.
- Inspect: The server opens or selects a browser page and returns a structured accessibility snapshot.
- Choose a target: The model reads element labels and references in that snapshot to determine which control to use.
- Act: The client invokes an action, such as clicking a referenced element or entering text into a field.
- Verify: The server returns an updated snapshot so the assistant can check what changed before continuing.
This loop matters because browser automation is stateful. A click is not proof that the intended result occurred; the returned page state gives the assistant a chance to confirm it or choose a recovery action. The official introduction describes the accessibility-snapshot approach, but does not prescribe an exact schema for a separately implemented server. See Playwright MCP introduction.
Configure browser, session, and capabilities
Playwright MCP provides choices for the browser, profile, mode, transport, and optional tool groups. The right combination depends on the workflow: a repeat task that needs a signed-in account has different state and risk requirements from a one-off public-page check. Consult the configuration options and capabilities documentation for current option names and syntax.
| Choice | When it may fit | Trade-off |
|---|---|---|
| Chrome, Firefox, WebKit, or Edge | Select the browser relevant to the site or workflow. | The documented reference server supports these browsers; Playwright’s published documentation does not establish comparative performance. |
| Headed or headless | Headed mode makes browser activity visible; headless mode suits unattended operation. | Visibility can help with observation and diagnosis, while unattended work may need no visible window. |
| Persistent or isolated profile | Persistent profiles can retain login state and cookies between runs; isolated sessions start fresh. | Persistence is convenient but retains sensitive state. Isolation reduces cross-run carryover. |
| Core tools or optional capabilities | Start with only the interactions the task needs; enable other groups only for a justified use case. | Documented optional groups include vision, PDF, DevTools, network, storage, and testing. They are examples, not requirements for every server. |
For ordinary tasks, accessibility snapshots can give the assistant semantic labels and references for targeting controls. A screenshot or vision workflow may be useful when visual appearance itself matters, but it is a different interaction path; the documentation does not establish that one approach is universally faster or better.
Rank #2
- HTML CSS Design and Build Web Sites
- Comes with secure packaging
- It can be a gift option
When to implement a custom MCP server
Use the published Playwright server when its browser control and capabilities suit the job. Build your own server only when you need a narrower interface, custom policy enforcement, application-specific workflows, or a different boundary between the model and the browser. The official Playwright material documents how to configure and operate its reference implementation; it is not a complete from-scratch source-code tutorial for a custom MCP server.
Design a small, explicit tool surface
For a custom implementation, begin with only the actions needed by a known workflow. A compact browser-control surface might include navigation, a page snapshot, clicking a target, and entering text. Add screenshot capture or tab management only if the use case needs them. Give each tool explicit inputs and visible effects so the assistant can understand what it is permitted to do and what result to expect.
- Prefer semantic targets, such as an accessible role and name, over fragile coordinates when the task is ordinary form or control interaction.
- Return enough structured page state after actions for the assistant to verify outcomes.
- Define what happens when a target reference has become stale after navigation or a page change; the assistant may need a fresh snapshot before trying again.
- Keep tool permissions proportional to the job. A page-reading workflow does not automatically need arbitrary script execution, network inspection, or persistent credentials.
The sources establish the accessibility-snapshot pattern but do not prescribe a custom server’s exact argument schema, error format, or implementation language. Choose those deliberately and document them rather than assuming the reference server’s internal behavior is a universal MCP requirement.
Choose who owns browser sessions
Decide whether the server creates a browser context per task, reuses one for a user, or exposes a longer-lived profile. Persistent sessions preserve cookies and login state, which can help repeat workflows but also create a durable store of sensitive access. An isolated session is a better starting point when tasks should not inherit prior users’ state. If a server handles multiple users, design isolation and authorization around that boundary rather than relying on the model to remember to keep sessions separate.
Local process or separate HTTP service?
For a personal or developer workstation, a client-launched local process is the simplest documented path: the MCP client starts the server using the configuration above. The Playwright documentation also shows a separate-service example using --port 8931 and an MCP connection at http://localhost:8931/mcp.
Rank #3
npx @playwright/mcp@latest --port 8931
This illustrates how to start the documented server on a port; it is not a production deployment recipe. A network-accessible service needs separate decisions for authentication, authorization, user and session separation, network reachability, and operational controls. Do not expose a browser-control endpoint to an untrusted network merely because it has a port number or an origin list.
PC 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 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchProtect the browser and its saved state
Browser control can reach logged-in pages, read data, and trigger actions. The 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 that warning as a permission boundary: do not enable the capability for clients you do not trust.
- Restrict which clients can launch or connect to the server, and limit network access at the deployment layer.
- Use isolated sessions between users. Do not let one user inherit another user’s cookies or local storage.
- Treat saved browser state as credential-bearing material. Protect it from disclosure and avoid retaining it longer than the workflow requires.
- Do not treat origin lists or file-access guardrails as a security boundary. The configuration documentation says these are convenience defenses, and redirects can work around them.
- If secrets are redacted in tool output, still enforce access controls: the documentation says the secrets mechanism is not itself a security boundary.
These points apply especially to a separately hosted server, where browser actions and stored session data may cross user or machine boundaries. An allowlist can help shape ordinary use, but it does not replace trusted clients, deployment-level restrictions, or isolation.
Troubleshoot common setup and interaction problems
The client does not show the Playwright server or its tools
Confirm the JSON is valid and is in the configuration location used by that client. Check that the client supports local MCP server processes and that it has reloaded or restarted after the change. If the client reports a launch error, verify that Node.js 20 or newer is installed and that the process can run npx.
The first browser operation does not start
The quick start says the browser downloads on first use. Allow the initial setup to complete and check for network restrictions or process errors if it cannot. The supplied documentation does not establish a universal download time, so do not treat a fixed wait duration as a reliable diagnostic.
Recommended Free Tools
Rank #4
- Brand: Wiley
- Set of 2 Volumes
- A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers
An element reference no longer works
The page may have navigated or changed since the reference came from the prior snapshot. Request a fresh snapshot, locate the current accessible name or role, and retry against the updated state rather than repeatedly using an old reference.
A task has the wrong login or carries state from another run
Check whether the server is using a persistent profile. Persistent profiles retain cookies and login state; switch to an isolated session when a clean state is required. Conversely, a workflow that depends on a prior sign-in may not work in a fresh isolated context unless it performs authentication as part of the task.
A remote client cannot connect
For the documented separate-service example, verify that the process is listening on the selected port and that the client is pointed at http://localhost:8931/mcp when it runs on the same machine. A client on another machine cannot assume that its own localhost refers to the server host. Any remote exposure also requires the security design described above; the port example alone does not provide authentication or production hardening.
Or skip the browser setup
If your task is to produce a page screenshot or PDF rather than interact with a live browser session, ScreenshotNeo is a one-request alternative. It is a screenshot API and MCP server, not a substitute for general browser automation: it captures a requested page instead of giving an assistant open-ended control over a browsing session. Its MCP tools are take_screenshot, get_page_info, and capture_pdf.
For a one-shot image capture, use cURL as follows; replace the example URL with the page you need and use your API key. The parameter names other screenshot APIs use also work, which can make switching easier. See the ScreenshotNeo API documentation for request options.
Best Value
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 GET 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}`);
- Cookie and consent banners are accepted before capture; more than 60 known consent platforms, newsletter popups, and chat widgets can be removed, and each step can be turned off.
- Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing; response headers say which page verdict applied and whether the request was billed.
- An MCP server lets AI agents use the screenshot, page-info, and PDF tools from Claude, Cursor, or another MCP client.
- The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Every feature is on every plan.
Sign up for 1,000 free screenshots a month, with no card required.
Which path should you take?
For an assistant that must navigate, inspect, click, and enter text across a browser session, start with the documented Playwright MCP configuration and enable only the capabilities your workflow needs. Write a custom MCP server when you need a deliberately narrower or application-specific interface, and define session ownership and security boundaries as part of that design. For a screenshot-only job, use a capture service rather than building interactive browser control you do not need.
Frequently Asked Questions
Does configuring Playwright MCP mean I have written a custom browser server?
No. The quick-start configuration runs the published Playwright MCP package. A custom server is a separate implementation with its own tool schema, session policy, and security design.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Can an MCP browser server safely automate every site?
No blanket compatibility or safety guarantee is established by the cited documentation. The result depends on the site, workflow, enabled capabilities, and permissions; browser access should be limited to trusted clients.
Is a screenshot capture API interchangeable with interactive browser automation?
No. A screenshot request captures a page, while browser automation involves a stateful sequence of navigation and page actions. Choose based on whether the task needs interaction or only an image or PDF.
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.

