Skip to main content
Glama
Yukendiran2002

Browser MCP Server

🌐 Browser MCP Server

The most comprehensive Browser MCP Server for AI agents — 70 tools with human-like behavior, stealth anti-detection, session reuse, multi-browser support, 50+ device presets, and token-optimized outputs.

Built on Playwright + Model Context Protocol.


✨ Key Features

Feature

Description

🤖 Human-Like Behavior

Bezier curve mouse movements, variable-speed typing, smooth scrolling — evades bot detection

🛡️ Stealth Anti-Detection

WebGL spoofing, canvas fingerprint noise, navigator.webdriver hidden, plugin/language spoofing

🔄 Session Reuse

Connect to existing Chrome via CDP or user-data-dir — keeps cookies, logins, tabs

🌍 Multi-Browser

Chromium, Firefox, WebKit — test across all engines

📱 50+ Device Presets

iPhone, iPad, Pixel, Galaxy, OnePlus, Desktop — full viewport/UA/touch emulation

🌐 Proxy Support

HTTP/HTTPS/SOCKS5 proxy with bypass rules

📊 Network Monitoring

Auto-capture all requests/responses, console logs, filter by type

📸 Visual Annotation

mark_page: numbered boxes on interactive elements — massive token savings

💾 Storage State

Save/load cookies + localStorage for cross-session persistence

🎯 Smart Actions

Natural language commands: "click Login", "type hello into search"

📉 Token Optimized

Compact outputs, configurable truncation — saves 60-80% tokens vs competitors

🎬 Video Recording

Record browser sessions for debugging and replay

📍 Geolocation

Override latitude/longitude for location-based testing

🔒 HTTPS Errors

Ignore certificate errors for internal/staging sites


Related MCP server: ScrapeLab MCP

🚀 Quick Start

Install

git clone https://github.com/user/browser-mcp-server.git
cd browser-mcp-server
npm install
npx playwright install
npm run build

Run

# Auto-detect: tries CDP on port 9222, falls back to launching a new browser
node dist/index.js

# Connect to existing Chrome (preserves your logged-in sessions)
chrome --remote-debugging-port=9222
node dist/index.js --cdp http://localhost:9222

# Reuse Chrome profile (keeps all cookies, logins, extensions)
node dist/index.js --user-data-dir "C:\Users\you\AppData\Local\Google\Chrome\User Data"

# Launch Firefox with iPhone emulation and proxy
node dist/index.js --browser firefox --device "iPhone 15" --proxy-server http://proxy:8080

VS Code MCP Configuration

Add to .vscode/mcp.json:

{
  "servers": {
    "browser": {
      "type": "stdio",
      "command": "node",
      "args": ["path/to/browser-mcp-server/dist/index.js"]
    }
  }
}

Claude Desktop Configuration

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "browser": {
      "command": "node",
      "args": ["path/to/browser-mcp-server/dist/index.js"],
      "env": {}
    }
  }
}

🛠️ All 70 Tools

Connection (1)

Tool

Description

browser_connect

Connect to browser (CDP/profile/temp launch). Multi-browser, device emulation, proxy.

Navigation (5)

Tool

Description

navigate

Navigate to URL with configurable wait conditions

go_back

Go back in browser history

go_forward

Go forward in browser history

reload

Reload current page

wait_for_navigation

Wait for page navigation to complete

Page/Tab Management (4)

Tool

Description

list_pages

List all open tabs

new_page

Open new tab (optionally with URL)

close_page

Close a tab by ID

focus_page

Bring a tab to front/focus

Interaction — Human-Like (14)

Tool

Description

click

Click element with Bezier curve mouse movement

type_text

Type with human-like keystroke timing

fill_form

Fill multiple form fields with natural pauses

select_option

Select dropdown option by value or label

check_checkbox

Check/uncheck checkbox or radio button

hover

Hover with natural mouse movement

press_key

Press key or combo (Enter, Ctrl+C, Tab, etc.)

scroll

Scroll with smooth human-like motion

scroll_to_element

Scroll element into view

wait_for_element

Wait for element to appear/disappear

wait_for_text

Wait for specific text on page

drag_and_drop

Drag element to target with natural motion

upload_file

Upload file(s) to input

handle_dialog

Accept or dismiss browser dialogs

Reading/Observation — Token-Optimized (14)

Tool

Description

get_page_content

Get visible text (default 4000 chars)

get_page_html

Get HTML (truncated to save tokens)

get_element_text

Get element text content

get_element_attribute

Get element attribute value

get_element_value

Get form element value

element_exists

Quick true/false existence check

element_count

Count elements matching selector

get_bounding_box

Get element position and size

take_screenshot

Screenshot page or element (PNG/base64)

get_accessibility_tree

Compact ARIA accessibility tree

get_form_elements

List form elements (compact format)

get_links

List page links (deduplicated)

get_table_data

Extract table data as structured JSON

evaluate_javascript

Run JavaScript in page context

Cookies & Storage (10)

Tool

Description

get_cookies

Get cookies (compact format)

set_cookies

Set cookies

clear_cookies

Clear all cookies

get_local_storage

Get localStorage

set_local_storage

Set localStorage key-value pairs

get_session_storage

Get sessionStorage

set_session_storage

Set sessionStorage key-value pairs

clear_storage

Clear localStorage, sessionStorage, or both

save_storage_state

Save cookies + localStorage to JSON file

load_storage_state

Load cookies + localStorage from JSON file

Network Monitoring & Control (8)

Tool

Description

wait_for_network_idle

Wait for all network requests to finish

wait_for_url

Wait for URL to match pattern

wait_for_response

Wait for network response matching URL

wait_for_request

Wait for network request matching URL

get_network_log

Get captured network requests/responses

get_console_logs

Get captured console messages

block_urls

Block URLs by pattern (ads, trackers, etc.)

set_extra_headers

Set custom HTTP headers

Device & Viewport (3)

Tool

Description

set_viewport

Set viewport size for responsive testing

emulate_device

Emulate device (50+ presets)

list_devices

List all available device presets

Geolocation & Permissions (3)

Tool

Description

set_geolocation

Override browser geolocation

grant_permissions

Grant browser permissions

clear_permissions

Clear all granted permissions

Frame/iFrame Support (3)

Tool

Description

list_frames

List all frames on the page

execute_in_frame

Run JavaScript in a specific frame

click_in_frame

Click element inside a frame

PDF (1)

Tool

Description

save_as_pdf

Save page as PDF (A4, Letter, etc.)

Visual Annotation — mark_page (5)

Tool

Description

mark_page

Annotate page with numbered boxes on interactive elements

unmark_page

Remove annotations

click_element

Click by index from mark_page

type_into_element

Type into element by index from mark_page

mark_page_and_screenshot

Mark + screenshot (best for visual agents)

Smart Tools (2)

Tool

Description

get_page_summary

Ultra-compact page summary (minimal tokens)

smart_action

Natural language browser action

Browser Management (2)

Tool

Description

get_browser_info

Get browser config details

close_browser

Close browser and cleanup


📱 Supported Device Presets (50+)

iPhones: SE, 12 Mini, 12, 12 Pro, 12 Pro Max, 13, 13 Pro, 14, 14 Pro, 14 Pro Max, 15, 15 Pro, 15 Pro Max, 16 Pro Max

iPads: Mini, Air, Pro 11, Pro 12.9, 10th Gen

Android: Pixel 5, 6, 7, 8 Pro, Galaxy S21, S23 Ultra, Z Fold 5, A54, OnePlus 12, Moto G, Xiaomi 14, Huawei P60

Desktop: Chrome 1920x1080, Chrome 1440, Firefox, Safari, Edge, Small Laptop, Ultrawide

Landscape: iPhone Landscape, iPad Landscape, Android Landscape


🔧 CLI Options

CONNECTION:
  --cdp <url>                 Connect via Chrome DevTools Protocol
  --user-data-dir <path>      Launch browser with user profile
  --executable-path <path>    Path to browser executable

BROWSER:
  --browser <engine>          chromium, firefox, or webkit (default: chromium)
  --headless                  Run in headless mode
  --timeout <ms>              Default action timeout (default: 30000)

VIEWPORT & DEVICE:
  --viewport <WxH>            Viewport size, e.g. 1920x1080
  --device <name>             Emulate device preset

NETWORK:
  --proxy-server <url>        Proxy URL
  --proxy-bypass <domains>    Domains to bypass proxy
  --ignore-https-errors       Ignore HTTPS certificate errors
  --block-service-workers     Block service workers

CONTEXT:
  --user-agent <string>       Custom user agent
  --locale <locale>           Browser locale (e.g. en-US)
  --timezone <tz>             Timezone (e.g. America/New_York)
  --color-scheme <scheme>     light, dark, or no-preference
  --geolocation <lat,lng>     Override geolocation
  --permissions <list>        Comma-separated permissions

SESSION:
  --storage-state <path>      Load session from JSON file

VIDEO:
  --record-video              Record browser session
  --video-dir <path>          Video output directory

Environment Variables

Variable

CLI Equivalent

BROWSER_CDP_URL

--cdp

BROWSER_USER_DATA_DIR

--user-data-dir

BROWSER_EXECUTABLE_PATH

--executable-path

BROWSER_ENGINE

--browser

BROWSER_PROXY

--proxy-server


🐳 Docker

docker build -t browser-mcp-server .
docker run -i browser-mcp-server
docker run -i browser-mcp-server --headless --browser chromium

🏗️ Architecture

src/
├── index.ts           # CLI entry point, MCP server setup
├── browser-manager.ts # Browser lifecycle, multi-engine, stealth, tracking
├── tools.ts           # All 70 MCP tools with human-like behavior
├── resources.ts       # 6 MCP resources (page, cookies, console, network, etc.)
├── human.ts           # Human behavior engine (Bezier curves, natural typing)
├── devices.ts         # 50+ device emulation presets
├── utils.ts           # Shared utilities (selectors, accessibility, text extraction)
└── mark_page.js       # Page annotation script (numbered interactive elements)

🔒 Anti-Detection Features

  • navigator.webdriver set to false

  • Chrome runtime spoofed

  • Permissions query overridden

  • Plugins and languages spoofed

  • WebGL vendor/renderer overridden (Intel Iris)

  • Canvas fingerprint noise injection

  • connection.rtt consistency

  • Automation command-line flags disabled

  • Human-like timing on all interactions


📊 Competitive Advantage

Feature

This Server

Playwright MCP (Microsoft)

mcp-playwright

Browserbase MCP

Human-like behavior

✅ Bezier curves

❌

❌

❌

Stealth anti-detection

✅ Full suite

❌

❌

❌

Session reuse (CDP)

✅

✅

❌

❌ (cloud)

Multi-browser

✅ 3 engines

✅

✅

❌

Device emulation

✅ 50+ presets

❌

✅ 143

❌

Token optimization

✅ Compact outputs

❌

❌

❌

Network monitoring

✅ Auto-capture

❌

❌

❌

mark_page annotation

✅

❌

❌

❌

Smart natural actions

✅

❌

❌

❌

Console log capture

✅ Auto

✅

❌

❌

Video recording

✅

❌

✅

✅

iframe support

✅

✅

❌

❌

Total tools

70

~20

~30

~15


📄 License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to perform undetectable browser automation that bypasses Cloudflare, antibots, and social media blocks. Provides 105 tools for element extraction, network debugging, and real-world web scraping with a 98.7% success rate on protected sites.
    2,148
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables undetectable web scraping and browser automation for AI agents with 84 tools including stealth navigation, element extraction, network interception, and auto cookie consent dismissal. Bypasses anti-bot systems like Cloudflare and DataDome while providing LLM-ready markdown output and full Chrome DevTools Protocol access.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to control a browser with 30 tools for navigation, interaction, extraction, and tab management, supporting human-like browser automation.
    36
    7 npm
    MIT