Skip to main content
Glama
browser-use-native-windows

browser-use-native-windows

by mlnima

browser-use-native-windows

Windows-only MCP server for controlling a real Chromium browser with native screenshots, Windows accessibility, and Windows mouse/keyboard input.

It does not use CDP, Chrome DevTools, Playwright, Puppeteer, browser extensions, DOM selectors, DOM snapshots, or page JavaScript evaluation.

Every observation re-detects the browser window, monitor, physical resolution, monitor scaling, and window position. Window and monitor geometry is verified again before native mouse input; resize or scaling changes invalidate the observation so the client must observe the new screenshot before acting.

Requirements

  • Windows

  • Node.js 20+

  • Chromium-based browser: Edge, Chrome, Brave, Chromium, Vivaldi, Opera, Yandex

Related MCP server: hermes-computer-use

Install

From source:

npm install
npm run build

Optional global install from this package root:

npm install -g .

Configuration

The MCP reads system environment variables first. If a .env file exists next to this README, it is loaded as a fallback. The MCP starts normally when .env is missing.

Create .env from .env.example when you want fixed HTTP or browser settings:

BROWSER_USE_NATIVE_WINDOWS_SSE_HOST= "0.0.0.0"
BROWSER_USE_NATIVE_WINDOWS_SSE_PORT= "7331"
BROWSER_USE_NATIVE_WINDOWS_SSE_AUTH= "change.me"
BROWSER_USE_NATIVE_WINDOWS_BROWSER_EXECUTABLE_PATH= "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
BROWSER_USE_NATIVE_WINDOWS_BROWSER_USER_DATA_DIR= "C:\Users\YOUR_USER\AppData\Local\Microsoft\Edge\User Data"
BROWSER_USE_NATIVE_WINDOWS_PAGE_LOAD_TIMEOUT_MS= "10000"

Change BROWSER_USE_NATIVE_WINDOWS_SSE_AUTH before exposing HTTP outside your machine.

Run

Stdio transport:

npm run start:stdio

Streamable HTTP at /mcp:

npm run start:mcp

Legacy HTTP+SSE at /sse with POST messages at /messages:

npm run start:sse

Both network transports:

npm run start:all

Global install:

browser-use-native-windows
browser-use-native-windows --transport mcp
browser-use-native-windows --transport sse
browser-use-native-windows --transport all

The default network host is 0.0.0.0, so /mcp and /sse accept connections through localhost and this computer's LAN address. Bearer authentication is required on every network endpoint.

MCP Client

Stdio:

{
  "mcpServers": {
    "browser-use-native-windows": {
      "transport": "stdio",
      "command": "node",
      "args": ["<package-root>\\dist\\index.js"],
      "cwd": "<package-root>"
    }
  }
}

Codex Streamable HTTP:

[mcp_servers.browser_use_native_windows]
url = "http://<host>:7331/mcp"
http_headers = { "Authorization" = "Bearer change.me" }

SSE compatibility:

{
  "mcpServers": {
    "browser-use-native-windows": {
      "transport": "sse",
      "url": "http://<host>:7331/sse",
      "headers": {
        "Authorization": "Bearer change.me"
      }
    }
  }
}

Tools

  • browser_observe: launch or adopt the browser and return a native observation.

  • browser_act: run one mouse or keyboard action against a fresh observation token.

  • browser_status: return transport, driver, browser, window, focus, monitor, DPI, and observation state.

  • browser_stop: release held input state and optionally close the tracked browser.

Force Stop

Default global hotkey:

Control+F12

The watchdog releases held keys and mouse buttons, then stops the MCP process.

Available Tools

4 tools
browser_actAct In BrowserB

Run one native mouse or keyboard action against a matching fresh browser_observe token.

Inputs: observationToken (required), action (required).

browser_observeObserve BrowserC

Launch or adopt a Windows browser, optionally handle a target URL through native UI, and return a browser-window or browser-owned file-dialog observation.

Inputs: targetUrl, inlineImage.

browser_statusBrowser StatusB

Return MCP transport, native input driver, browser process, HWND, monitor, DPI, focus, and observation state.

Inputs: no named parameters.

browser_stopStop Browser ControlA

Release held native input state and optionally close the tracked browser only when the user task asks for it.

Inputs: closeBrowser.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool has a clearly distinct role: browser_observe for launching/adopting and getting observation, browser_act for performing actions, browser_status for checking state, and browser_stop for cleanup. No overlap in purpose.

    Naming Consistency5/5

    All tool names follow a consistent 'browser_' prefix followed by a single verb (observe, act, status, stop), all lowercase, with no mixing of conventions.

    Tool Count5/5

    Four tools is exactly right for this domain: observe, act, status, and stop cover the essential lifecycle without unnecessary extras. Not too few, not too many.

    Completeness5/5

    The tool set covers the full lifecycle of native browser interaction: initialization (browser_observe), action (browser_act), monitoring (browser_status), and termination (browser_stop). No obvious gaps.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A standalone MCP server for Windows desktop control, enabling screenshots, mouse and keyboard input, app launch, window/display management, and clipboard access via natural language.
      3
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A local, dependency-free MCP server that gives AI agents controlled access to the active Windows desktop, enabling automated interaction with applications through screenshots, clicks, typing, and window management.
      151 npm
      1
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      This MCP server enables an AI agent to control a Windows PC through human-like interactions such as screen capture, OCR, mouse, keyboard, and navigation, without using shortcut APIs.
      -