How to Fix “No MCP Clients Are Currently Connected”
Fix the Playwright MCP Bridge disconnected message with profile, token, extension-mode, version, and process checks.
Direct answer: “No MCP clients are currently connected” means the Playwright MCP Bridge extension has not completed its handshake with the Playwright MCP server. Install the extension in the Chrome profile you use, start the server with --extension, copy the current PLAYWRIGHT_MCP_EXTENSION_TOKEN from that profile into your MCP client configuration, restart the client, then invoke a browser tool.
What the message means
This is a bridge connection failure, not proof that the MCP process is stopped. A documented case had a running server and matching token while the extension remained disconnected and browser calls timed out with Extension connection timeout (issue #1571).
Known-good setup
{"mcpServers":{"playwright":{"command":"npx","args":["-y","@playwright/mcp@latest","--extension"],"env":{"PLAYWRIGHT_MCP_EXTENSION_TOKEN":"PASTE_TOKEN_FROM_THIS_CHROME_PROFILE"}}}}
Save it and fully restart the MCP client. After a browser action, the extension icon should show an active client.
Step-by-step repair
- Use the right profile. Open Chrome where Playwright MCP Bridge is installed. Tokens are profile-specific.
- Verify the extension. Ensure it is enabled. Reinstalling or resetting it means you must copy a new token.
- Enable extension mode. Add
--extensionto the server arguments. - Refresh the token. Copy the current value into
PLAYWRIGHT_MCP_EXTENSION_TOKEN. - Restart cleanly. Quit the MCP client, stop duplicate Playwright MCP processes, reopen the intended profile, and launch again.
- Test one call. Run navigation or page-info and watch the extension status.
Diagnostic checklist
| Check | Expected | Fix |
|---|---|---|
| Extension | Installed in active profile | Install or enable it there |
| Profile | Token and launched profile match | Switch profile or recopy token |
| Arguments | --extension present |
Add it and restart |
| Environment | Correct variable name and current token | Replace stale value |
| Processes | One current server | Stop duplicates |
| Versions | Extension and package aligned | Update or pin together |
Common causes and fixes
Wrong profile
A preflight check can find an extension in one profile while launch opens another. Explicitly select the intended profile and recopy its token. This profile-selection failure is documented in Playwright issue #41916, but it is not the cause of every disconnect.
Missing flag or stale token
Without --extension, extension mode is not used. Reinstalling or resetting the extension can also invalidate the old token. Update both and restart the client.
Duplicate processes
An old server may hold the socket while the client talks to a new one. Quit the client, terminate leftover processes, and launch one server.
Version drift
If this began after an update, align or pin compatible extension and @playwright/mcp versions.
Browser policy or firewall
Corporate policy can block the extension or its service worker. Inspect the extension service-worker console and network view while starting the client.
Inspect a hang
- Watch the extension status page during a browser call.
- Open service-worker developer tools and look for connection errors.
- Check MCP logs for command, arguments, and variable name; redact the token.
- Confirm one intended process owns the socket.
- Try a fresh Chrome profile to isolate profile policy or launch selection.
When local extension mode is not a fit
Existing logged-in state favors extension mode. Repeatable public-page runs favor a clean browser context. If profile and token maintenance is costly, consider a hosted service after checking whether sending private data is acceptable.
Or skip the browser setup
ScreenshotNeo returns a screenshot or PDF with one request. It accepts consent banners and removes 60+ known consent platforms, newsletter popups, and chat widgets before capture; each step can be disabled. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and X-Page-Verdict and X-Billed identify the result.
See the ScreenshotNeo docs for options.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
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)
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}`);
Its MCP server provides take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The free plan includes 1,000 screenshots monthly with no card; paid plans start at $5 for 3,000. Create a free account.
Reliability, performance, and cost
- Restart client and server after config changes because values are read at process start.
- One process and one profile make failures reproducible.
- Use a clean profile unless logged-in state is required.
- ScreenshotNeo does not bill cache hits or failed loads; inspect verdict and billing headers.
- Bulk capture handles up to 100 URLs per call; async jobs with signed webhooks suit long runs.
FAQ
Is the MCP client broken?
Not necessarily; the extension bridge may simply be disconnected.
Can one token serve multiple profiles?
No. Use each profile’s current token.
Why after an update?
Version drift is a known failure bucket; align or pin versions.
Is extension mode required for all screenshots?
No. Use it when existing browser state matters; use an API for repeatable public captures.


