Browser Use
Lets AI do web tasks for you, such as filling forms, searching and extracting data, in the maker’s cloud browsers or on your computer.
Description from the maker (original English)
Browser automation using Playwright with optional stealth mode to bypass anti-bot protection.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
STEALTH_MODE, STEALTH_USER_AGENT, STEALTH_MASK_LINUX, STEALTH_LOCALE, HEADLESS, TIMEOUT, NAVIGATION_TIMEOUT, SCREENSHOT_STORAGE_PATH, VIDEO_STORAGE_PATH, PROXY_URL, PROXY_USERNAME, PROXY_PASSWORD, PROXY_BYPASS, BROWSER_PERMISSIONS, IGNORE_HTTPS_ERRORSValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"playwright-stealth": {
"command": "npx",
"args": [
"-y",
"playwright-stealth-mcp-server"
],
"env": {
"STEALTH_MODE": "your-value",
"STEALTH_USER_AGENT": "your-value",
"STEALTH_MASK_LINUX": "your-value",
"STEALTH_LOCALE": "your-value",
"HEADLESS": "your-value",
"TIMEOUT": "your-value",
"NAVIGATION_TIMEOUT": "your-value",
"SCREENSHOT_STORAGE_PATH": "your-value",
"VIDEO_STORAGE_PATH": "your-value",
"PROXY_URL": "your-value",
"PROXY_USERNAME": "your-value",
"PROXY_PASSWORD": "your-value",
"PROXY_BYPASS": "your-value",
"BROWSER_PERMISSIONS": "your-value",
"IGNORE_HTTPS_ERRORS": "your-value"
}
}
}
}Run this in your terminal
claude mcp add playwright-stealth --env STEALTH_MODE=your-value --env STEALTH_USER_AGENT=your-value --env STEALTH_MASK_LINUX=your-value --env STEALTH_LOCALE=your-value --env HEADLESS=your-value --env TIMEOUT=your-value --env NAVIGATION_TIMEOUT=your-value --env SCREENSHOT_STORAGE_PATH=your-value --env VIDEO_STORAGE_PATH=your-value --env PROXY_URL=your-value --env PROXY_USERNAME=your-value --env PROXY_PASSWORD=your-value --env PROXY_BYPASS=your-value --env BROWSER_PERMISSIONS=your-value --env IGNORE_HTTPS_ERRORS=your-value -- npx -y playwright-stealth-mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"playwright-stealth": {
"command": "npx",
"args": [
"-y",
"playwright-stealth-mcp-server"
],
"env": {
"STEALTH_MODE": "your-value",
"STEALTH_USER_AGENT": "your-value",
"STEALTH_MASK_LINUX": "your-value",
"STEALTH_LOCALE": "your-value",
"HEADLESS": "your-value",
"TIMEOUT": "your-value",
"NAVIGATION_TIMEOUT": "your-value",
"SCREENSHOT_STORAGE_PATH": "your-value",
"VIDEO_STORAGE_PATH": "your-value",
"PROXY_URL": "your-value",
"PROXY_USERNAME": "your-value",
"PROXY_PASSWORD": "your-value",
"PROXY_BYPASS": "your-value",
"BROWSER_PERMISSIONS": "your-value",
"IGNORE_HTTPS_ERRORS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"playwright-stealth": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"playwright-stealth-mcp-server"
],
"env": {
"STEALTH_MODE": "your-value",
"STEALTH_USER_AGENT": "your-value",
"STEALTH_MASK_LINUX": "your-value",
"STEALTH_LOCALE": "your-value",
"HEADLESS": "your-value",
"TIMEOUT": "your-value",
"NAVIGATION_TIMEOUT": "your-value",
"SCREENSHOT_STORAGE_PATH": "your-value",
"VIDEO_STORAGE_PATH": "your-value",
"PROXY_URL": "your-value",
"PROXY_USERNAME": "your-value",
"PROXY_PASSWORD": "your-value",
"PROXY_BYPASS": "your-value",
"BROWSER_PERMISSIONS": "your-value",
"IGNORE_HTTPS_ERRORS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
STEALTH_MODE envSTEALTH_USER_AGENT envSTEALTH_MASK_LINUX envSTEALTH_LOCALE envHEADLESS envTIMEOUT envNAVIGATION_TIMEOUT envSCREENSHOT_STORAGE_PATH envVIDEO_STORAGE_PATH envPROXY_URL envPROXY_BYPASS envBROWSER_PERMISSIONS envIGNORE_HTTPS_ERRORS envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified against the domain pulsemcp.com (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: PROXY_USERNAME, PROXY_PASSWORD
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.2.3) reached the registry 5 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Browser Use, Chrome DevTools MCP, MCP Server Browser
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Lets AI do web tasks for you, such as filling forms, searching and extracting data, in the maker’s cloud browsers or on your computer.
Lets AI use Chrome’s developer tools to inspect pages, find what makes them slow and spot errors. Made by the Chrome DevTools team.
MCP server for browser use access
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A Model Context Protocol (MCP) server for browser automation using Playwright with optional stealth mode to bypass anti-bot protection.
browser_execute tool that exposes the full Playwright API instead of many specialized toolsplaywright-extra and puppeteer-extra-plugin-stealthpage objectnpx playwright-stealth-mcp-server
Or install globally:
npm install -g playwright-stealth-mcp-server
Add to your Claude Desktop config file:
Non-Stealth Mode (Standard Playwright):
{
"mcpServers": { "playwright": { "command": "npx", "args": ["-y", "playwright-stealth-mcp-server"], "env": { "STEALTH_MODE": "false" } } } }
Stealth Mode (Anti-bot bypass):
{
"mcpServers": { "playwright-stealth": { "command": "npx", "args": ["-y", "playwright-stealth-mcp-server"], "env": { "STEALTH_MODE": "true" } } } }
With Proxy (e.g., BrightData Residential Proxy):
{
"mcpServers": { "playwright-proxy": { "command": "npx", "args": ["-y", "playwright-stealth-mcp-server"], "env": { "STEALTH_MODE": "true", "PROXY_URL": "http://brd.superproxy.io:22225", "PROXY_USERNAME": "brd-customer-XXXXX-zone-residential", "PROXY_PASSWORD": "your-password" } } } }
| Variable | Description | Default |
|---|---|---|
STEALTH_MODE | Enable stealth mode with anti-detection measures | false |
STEALTH_USER_AGENT | Custom User-Agent string (stealth mode only) | Browser default |
STEALTH_MASK_LINUX | Mask Linux in User-Agent as Windows; set to false to avoid fingerprint mismatch | true |
STEALTH_LOCALE | Custom locale for Accept-Language header (stealth mode only) | en-US,en |
HEADLESS | Run browser in headless mode | true |
TIMEOUT | Default timeout for Playwright actions (click, fill, etc.) in milliseconds | 30000 |
NAVIGATION_TIMEOUT | Default timeout for page navigation (goto, reload, etc.) in milliseconds | 60000 |
SCREENSHOT_STORAGE_PATH | Directory for storing screenshots | /tmp/playwright-screenshots |
VIDEO_STORAGE_PATH | Directory for storing video recordings | /tmp/playwright-videos |
PROXY_URL | Proxy server URL (e.g., http://proxy.example.com:8080) | - |
PROXY_USERNAME | Proxy authentication username | - |
PROXY_PASSWORD | Proxy authentication password | - |
PROXY_BYPASS | Comma-separated list of hosts to bypass proxy | - |
BROWSER_PERMISSIONS | Comma-separated list of browser permissions to grant (see below) | All permissions |
IGNORE_HTTPS_ERRORS | Ignore HTTPS certificate errors (set to false for stricter security) | true |
browser_executeExecute Playwright code with access to the page object.
Parameters:
code (required): JavaScript code to execute. The page object is available in scope.timeout (optional): Execution timeout in milliseconds.Example:
await page.goto('https://example.com');
const title = await page.title(); return title;
browser_screenshotTake a screenshot of the current page, a specific element, or a page region. Screenshots are saved to filesystem storage and can be accessed later via MCP resources.
Parameters:
fullPage (optional): Capture full scrollable page. Default: falseselector (optional): CSS selector of a specific element to screenshot (e.g., #main-content, .hero-banner, table.results)clip (optional): Region of the page to screenshot as {x, y, width, height} in pixelsresultHandling (optional): How to handle the result:saveAndReturn (default): Saves to storage AND returns inline base64 imagesaveOnly: Saves to storage and returns only the resource URI (more efficient for large screenshots)Note: fullPage, selector, and clip are mutually exclusive. Only one can be specified per call.
Returns:
saveAndReturn: Inline base64 PNG image plus a resource_link with the file URIsaveOnly: Only a resource_link with the file:// URI to the saved screenshotbrowser_get_stateGet the current browser state including URL, title, and configuration.
browser_closeClose the browser session. A new browser will be launched on the next browser_execute call.
browser_start_recordingStart recording the browser session as a WebM video.
This tool recycles the browser context with video recording enabled. Session state (cookies, localStorage, sessionStorage) is automatically preserved across the context recycling.
If called while already recording, the current recording is automatically stopped and saved before starting a new one.
browser_stop_recordingStop recording and save the video.
Returns a resource_link with the file:// URI to the saved video (WebM format). Session state is preserved — the browser navigates back to the previous URL automatically.
Returns an error if no recording is active.
The server exposes saved screenshots and video recordings as MCP resources. Clients can use:
resources/list: List all saved screenshots and videos with their URIs and metadataresources/read: Read a screenshot or video by its file:// URIThis allows clients to access previously captured screenshots and recordings without needing to take new ones.
// Navigate to a page
await page.goto('https://news.ycombinator.com');
// Extract headlines const headlines = await page.$$eval('.titleline > a', (links) => links.slice(0, 5).map((a) => a.textContent) );
return headlines;
await page.goto('https://example.com/login');
// Fill credentials await page.fill('input[name="email"]', 'user@example.com'); await page.fill('input[name="password"]', 'password123');
// Submit form await page.click('button[type="submit"]');
// Wait for navigation await page.waitForNavigation();
return await page.title();
await page.goto('https://spa-example.com');
// Wait for element to appear await page.waitForSelector('.loaded-content');
// Click to load more await page.click('.load-more-button');
// Wait for new content await page.waitForSelector('.new-items');
const items = await page.$$eval('.item', (els) => els.map((el) => el.textContent)); return items;
Important: The browser_execute tool executes arbitrary JavaScript code. This design provides full Playwright API access but has security implications:
page objectThis is intentional for maximum flexibility - it allows LLMs to leverage their existing Playwright knowledge. For production use, ensure proper access controls are in place.
Enable stealth mode (STEALTH_MODE=true) when:
Stealth mode includes:
When running in Docker/Linux environments, bot detection systems may identify a fingerprint mismatch between the User-Agent header and other browser signals like navigator.platform. Use these environment variables to configure consistent fingerprints:
Example: macOS Fingerprint (for Docker/Linux)
{
"mcpServers": { "playwright-stealth": { "command": "npx", "args": ["-y", "playwright-stealth-mcp-server"], "env": { "STEALTH_MODE": "true", "STEALTH_USER_AGENT": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "STEALTH_MASK_LINUX": "false" } } } }
Why this matters:
navigator.platform still reports the actual OS (e.g., "Linux x86_64")STEALTH_MASK_LINUX=false disables this masking, allowing the real platform to showSTEALTH_USER_AGENT, you can present a consistent fingerprintConfigure proxy settings when:
The server supports HTTP/HTTPS proxies with optional authentication, making it compatible with:
Note: When proxy is configured, the server performs a health check on startup to verify the proxy connection works. If the health check fails, the server will exit with an error.
By default, the server ignores HTTPS certificate errors (IGNORE_HTTPS_ERRORS=true). This is convenient for common automation scenarios:
To enable strict certificate validation, set IGNORE_HTTPS_ERRORS=false:
{
"mcpServers": { "playwright": { "command": "npx", "args": ["-y", "playwright-stealth-mcp-server"], "env": { "IGNORE_HTTPS_ERRORS": "false" } } } }
Security Note: For production environments where certificate validation is important, se
Only the beginning is shown; read the rest in the repo