Hands-on comparison

Playwright MCP vs Chrome DevTools MCP

We ran both browser MCP servers through the same local form, five times each: text fields, a file upload, two iframes, a step only a person may finish and a restart. Here is what passed, what failed and what we only read in the docs.

Short answer

  • Both servers filled every field, uploaded the file and worked inside a same-origin and a cross-site iframe when they started their own Chrome, in five of five runs each.
  • Attached to a Chrome a person had already opened, Playwright MCP filled the open form straight away. Chrome DevTools MCP 1.10.1 could click there but could only fill fields after it reloaded the page once, in every run.
  • Chrome DevTools MCP’s own Chrome reported navigator.webdriver = true; Playwright MCP’s reported false. In a Chrome you start yourself, both reported false.
  • Pick Playwright MCP for clean, repeatable runs and a smaller tool list. Pick Chrome DevTools MCP when you debug your own web app (traces, Lighthouse, network) or want to share your everyday Chrome with the agent.

Test results

Each cell counts passing runs out of 5. Test date September 30, 2026, Google Chrome 154.0.8037.92, @playwright/mcp 0.0.83, chrome-devtools-mcp 1.10.1, agent-browser 0.38.1 as a third column.

Mode 1: the tool starts its own Chrome

Each tool launched a headless Chrome with a fresh profile folder, opened the test page, signed in to the page, filled the form and pressed submit without ticking the human step.

TopicPlaywright MCPChrome DevTools MCPagent-browser
Both iframes reachable from the snapshot5 of 55 of 55 of 5
Text, email, select, radio, checkbox and textarea filled5 of 55 of 55 of 5
Upload from outside the allowed folder refused (default)5 of 55 of 5not measured
Uploaded file arrived intact (name, size, SHA-256)5 of 55 of 55 of 5
Typed and clicked in the same-origin iframe5 of 55 of 55 of 5
Typed and clicked in the cross-site iframe5 of 55 of 55 of 5
Form accepted everything but the human step5 of 55 of 52 of 5
Login kept after a restart with the same profile0 of 55 of 55 of 5
Login kept after browser_close and a restart5 of 5not measurednot measured
Isolated mode started without the old login5 of 55 of 55 of 5
navigator.webdriver reported false5 of 50 of 50 of 5

Mode 2: the tool attaches to a Chrome a person already uses

We started Chrome ourselves with its own profile and a local debugging port. A stand-in for the person opened the page, signed in and typed the product name. Then the tool connected, filled the rest and stopped; the stand-in ticked the human step and submitted; the tool read the result.

TopicPlaywright MCPChrome DevTools MCPagent-browser
Found the person’s tab and its login5 of 55 of 55 of 5
Filled the fields on the page as it was5 of 50 of 55 of 5
Filled the fields after one reloadnot measured5 of 5not measured
Uploaded file arrived intact (name, size, SHA-256)5 of 55 of 55 of 5
Typed and clicked in the same-origin iframe5 of 55 of 55 of 5
Typed and clicked in the cross-site iframe5 of 55 of 50 of 5
Person ticked the human step and submitted5 of 55 of 50 of 5
Agent read the submitted result5 of 55 of 50 of 5
Agent’s network log showed the form POST5 of 55 of 50 of 5
Reconnected to the same tab after a server restart5 of 55 of 5not measured
navigator.webdriver reported false5 of 55 of 55 of 5

Screenshots from the runs

Full-page screenshot of the local test form after Playwright MCP filled it
Playwright MCP, mode 1: every field, the file and both iframes are filled; submit is held back only by the unticked human step. Captured by the tool itself.
Full-page screenshot of the local test form after Chrome DevTools MCP filled it
Chrome DevTools MCP, mode 1: every field, the file and both iframes are filled; submit is held back only by the unticked human step. Captured by the tool itself.

How we tested

  • Date September 30, 2026 on macOS with Google Chrome 154.0.8037.92. Versions were pinned: @playwright/mcp 0.0.83, chrome-devtools-mcp 1.10.1, agent-browser 0.38.1.
  • The form is a local test page on 127.0.0.1; the cross-site iframe comes from localhost on a second port. No real website, account, personal browser profile or payment was involved.
  • A small script talked to each server over MCP, exactly like an agent’s client: snapshot, fill form, upload, click, read console and network. It took element references from each tool’s own snapshot. No language model made decisions, so every run followed the same steps.
  • Every scenario ran 5 times per tool. The tables count the runs that passed.
  • The person in mode 2 is a script that sends plain DevTools Protocol commands to the tab. It is a stand-in, not a real person. To rule it out as the cause of the Chrome DevTools MCP fill failure, we also started Chrome directly with the test URL and no script at all: same result.
  • agent-browser was driven through its command line, its main interface, not through its MCP mode.

What this test does not cover

  • Real CAPTCHAs, bot checks and real sign-ins on third-party sites.
  • Firefox and WebKit, the browser extensions of both projects and Chrome’s auto-connect dialog.
  • Performance traces, Lighthouse and memory tools.
  • A language model choosing the steps: how many tokens and turns a real agent needs depends on the model.
  • Windows and Linux.

What stood out

Both refuse uploads from outside an allowed folder

Our first upload came from a project folder, and both servers refused it by default. Playwright MCP allows the workspace roots, or its working directory when the client names none; Chrome DevTools MCP allows the system temp folder when the client names no roots. From an allowed folder, the file arrived intact in every run: same name, size and SHA-256. Each project documents a flag to widen the limit.

Chrome DevTools MCP could not fill a page that was open before it connected

In mode 2, Chrome DevTools MCP found the tab and its login, clicked buttons and typed inside both iframes, but filling fields in the page itself failed with “did not become interactive” in every run. After one reload by the agent, filling worked and the rest of the test passed. A reload drops anything a page has not saved; our test page restores its draft, many real forms do not. Playwright MCP needed no reload.

navigator.webdriver depends on who starts Chrome

When Chrome DevTools MCP launched Chrome, the page saw navigator.webdriver = true, which its own docs name as a reason some sign-ins fail. Playwright MCP’s launched Chrome reported false. When the tools attached to a Chrome we had started, every tool reported false. We did not test any real bot check.

Playwright MCP keeps a profile only after browser_close

With a persistent profile folder, the sign-in was gone after a server restart when the client simply disconnected. When the agent called browser_close first, it was kept in every run. Chrome DevTools MCP kept its profile in every run without a close call.

agent-browser missed the cross-site iframe when attached

As a third column, agent-browser filled every field, the file and both iframes when it started its own browser; its submit click was reported as done every time, but the page registered it in only some runs. Attached to a running Chrome, its snapshot showed the same-origin iframe but not the cross-site one, also after waiting and taking a second snapshot, so the form could not be completed.

TopicOfficial wordingWhat it means in practice
Playwright MCP file accessBy 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.Upload files from your project workspace, or start the server with --allow-unrestricted-file-access.
Chrome DevTools MCP file accessBy default, file-writing tools are restricted to the OS temp directory when no roots are configured.Without MCP roots from your client, keep upload files in the temp folder or add --filesystem-root.
Chrome DevTools MCP sign-inSome accounts may prevent sign-in when the browser is controlled via WebDriver (the default launch mechanism for the Chrome DevTools MCP server).For sites where you sign in, connect to a Chrome you started instead of letting the server launch one.
Playwright MCP profileA persistent profile can only be used by one browser instance at a timeTwo agents in one workspace need --isolated or separate profile folders.
Playwright CLICLI invocations are more token-efficient: they avoid loading large tool schemas and verbose accessibility trees into the model contextMicrosoft itself points coding agents with tight context to its CLI plus skills instead of the MCP server.
Chrome DevTools MCP statisticsGoogle collects usage statistics (such as tool invocation success rates, latency, and environment information) to improve the reliability and performance of Chrome DevTools MCP.On by default; add --no-usage-statistics if you do not want it.

Documented, not tested

These differences come from each project’s README and docs on the reading date. We did not measure them.

TopicPlaywright MCPChrome DevTools MCP
BrowsersChrome, Firefox, WebKit and Edge through --browser.Officially Google Chrome and Chrome for Testing; other Chromium browsers may work.
Your running browser--cdp-endpoint to a debugging port, or the Playwright Extension with a tab picker and approval.--browser-url to a debugging port, or --autoConnect in Chrome 144+ with a permission dialog for each session.
ProfilePersistent profile by default; --isolated keeps it in memory; --storage-state loads cookies and storage.Persistent profile by default; --isolated uses a temporary one that is deleted afterwards.
DebuggingConsole and network requests; tracing, video and storage tools on request.Performance traces with insights, Lighthouse audits, memory snapshots, console with source-mapped stack traces, network requests.
Data sent to the vendorThe README describes no usage statistics.Usage statistics on by default (--no-usage-statistics); performance tools may look up trace URLs in the CrUX API (--no-performance-crux).
Without MCPMicrosoft recommends Playwright CLI with skills for coding agents.A CLI is included for use without MCP.
LicenseApache-2.0Apache-2.0

How much the tool list weighs

Before any page was opened, Playwright MCP announced 25 tools with 20.3 KB of tool descriptions, Chrome DevTools MCP 30 tools with 25.7 KB (default settings, measured through tools/list). An agent carries that text in its context for the whole session. Chrome DevTools MCP offers --slim with three tools; Playwright MCP adds tool groups with --caps.

Which one to pick

Playwright MCP fits when

  • the agent should start a clean browser for each task, headless or in CI,
  • you also need Firefox or WebKit,
  • the agent picks up a form a person already started, because it filled open pages without a reload,
  • you want a shorter tool list in the agent’s context.

Chrome DevTools MCP fits when

  • you debug your own web app and want traces, Lighthouse, network and console in one place,
  • you want to share your everyday Chrome with the agent through auto-connect,
  • you work in Chrome only and like tools maintained by the Chrome DevTools team,
  • you can let the agent reload a page it did not open before filling it.

And agent-browser?

agent-browser is a command-line browser tool for agents with an optional MCP mode. It filled the same form when it started its own browser, but missed the cross-site iframe when attached to a running Chrome. Worth a look if your agent works better with short shell commands than with MCP tools.

Claude in Chrome vs Chrome DevTools MCP →

Run the test yourself

The test page is one Node.js file without dependencies. It only listens on your own machine.

  1. Download the file and run it with Node.js 18 or newer.
  2. Open http://127.0.0.1:4461/ once to see the page; the cross-site iframe loads from http://localhost:4462/.
  3. Add one of the MCP entries below to your agent and ask it to fill the form, upload any small PNG, fill both iframes and stop before the human step.
  4. Tick the human step yourself, submit, and ask the agent what the page shows now.

Download browser-mcp-test.mjs

The file serves the form, the iframe and a local echo endpoint. Nothing is sent anywhere else.

Tool starts its own Chrome

Playwright MCP

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "-y",
        "@playwright/mcp@0.0.83"
      ]
    }
  }
}

Chrome DevTools MCP

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "-y",
        "chrome-devtools-mcp@1.10.1",
        "--no-usage-statistics"
      ]
    }
  }
}

Tool attaches to a Chrome you started on port 9222

Playwright MCP

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "-y",
        "@playwright/mcp@0.0.83",
        "--cdp-endpoint",
        "http://127.0.0.1:9222"
      ]
    }
  }
}

Chrome DevTools MCP

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "-y",
        "chrome-devtools-mcp@1.10.1",
        "--browser-url=http://127.0.0.1:9222",
        "--no-usage-statistics"
      ]
    }
  }
}

What LaunchRepo uses

  • LaunchRepo’s playbooks are written and tested for Chrome DevTools MCP connected to your own Chrome, because directory submissions need your real logins and you should see every step.
  • With a Chrome you start yourself, navigator.webdriver stayed false for every tool in this test, and the handoff worked: you finish a step in the same tab, the agent reads the result.
  • If a directory form is already open when the agent connects, let it reload the page before you type anything, so nothing you entered is lost.

Sources

Official pages and repositories, read on September 30, 2026. Quotes are copied word for word; our test results are our own measurements.

FAQ

Is Playwright MCP or Chrome DevTools MCP better for coding agents?
Neither wins everywhere. In our test both passed every form check when they started their own Chrome. Playwright MCP also filled a page a person had already opened and announced a shorter tool list; Chrome DevTools MCP brings performance traces, Lighthouse and deeper network and console tools for debugging your own app.
Can Chrome DevTools MCP use the Chrome I am signed in to?
Yes. With --autoConnect it connects to your running Chrome 144 or newer after you allow remote debugging and confirm a dialog. Or start Chrome with a remote debugging port and a separate profile folder and point --browser-url at it; since Chrome 136 the port is ignored for the default profile.
Do both handle iframes?
Yes, in our runs both reached a same-origin and a cross-site iframe in both modes, five of five times, and could type and click inside them.
Why did the file upload fail?
Both servers only read files from allowed folders by default: Playwright MCP from the workspace roots or its working directory, Chrome DevTools MCP from the system temp folder when your client names no roots. Move the file there or use the documented flag to widen the limit.
Can these tools solve CAPTCHAs?
Neither documents a CAPTCHA feature, and we did not test real CAPTCHAs. Plan a handoff instead: the agent stops, you solve the step in the same visible window, the agent continues. In our attach test that handoff worked for both servers.
Does navigator.webdriver give the agent away?
In our test it was true only when Chrome DevTools MCP launched Chrome itself. Playwright MCP’s own Chrome and any Chrome we started ourselves reported false. Whether a site reacts to it is up to that site; we did not test real bot checks.

Let your agent do the directory launch

LaunchRepo gives your coding agent tested playbooks for launch platforms and directories. It works in your own Chrome through Chrome DevTools MCP, and you decide whether it sends final submissions on its own or asks you first.

See pricing