Skip to main content
Glama

haden-browser

haden-browser is a fast, AI-first web browser exposed as a local Model Context Protocol server. It gives an AI the smallest useful page representation for its current goal instead of sending screenshots and raw page source on every turn.

Benchmark: 33% less AI browser context

Primary result: Haden used 7,822 reference tokens for the core browsing session—32.7% fewer than Playwright MCP and 32.5% fewer than Chrome DevTools MCP full mode. Among the tested browser MCPs that returned semantic action refs and image-alt coverage, Haden had the lowest token footprint.

Browser MCP benchmark overview showing token usage, latency, and origin transfer

Five-run median

Haden

Playwright MCP

Chrome Slim†

Chrome Full

Core context tokens

7,822

11,627

4,638

11,596

Tool-schema tokens

727

3,999

221

4,974

Article workflow tokens

2,732

4,640

2,497

4,388

First useful article

1,044 ms

2,714 ms

3,005 ms

3,133 ms

Article origin transfer

16.7 KB / 1 request

95.0 KB / 10

95.0 KB / 10

95.0 KB / 10

Semantic action refs

15

172

0

143

Image-alt coverage

8/8

8/8

0/8

8/8

† Chrome Slim is the absolute token minimum, but it is a low-level JavaScript control baseline: the model must author page scripts, and the tested path returned no semantic action refs or image alt text. It is therefore shown transparently but is not treated as a semantic-browser equivalent.

Core context includes one complete tool-schema load plus the serialized MCP tool calls and results for article reading, form submission, and computed-style inspection. Counts use the o200k_base tokenizer. Image pixels, user/system prompts, and model reasoning or prose are excluded, so actual billed usage depends on the MCP host and model.

See the full benchmark report, raw per-run data, and reproduction instructions.

Related MCP server: browsegrab

Why it is different

  • Goal-based views — use compact semantic text for research, sanitized DOM for structure, or bounded computed styles for visual work.

  • Images stay lazy — an image is represented as its alt text or [image img1]. Pixel data is returned only when the AI explicitly calls haden_image.

  • Low round-trip control — every interaction returns a fresh snapshot, so most click/type flows need one tool call per step.

  • Stable action references — visible controls become e1, e2, and so on, which are cheaper and more reliable than asking a model to invent CSS selectors.

  • Fast by default — image, media, and font requests are blocked during ordinary browsing. CSS remains available for the visual view.

  • Safer local execution — non-HTTP schemes, credential-bearing URLs, and private-network targets are blocked unless the user explicitly opts in.

flowchart LR
    AI[AI / MCP host] -->|stdio tools| MCP[haden-browser]
    MCP --> PW[Playwright Chromium]
    PW --> PAGE[Web page]
    PAGE -->|semantic text / DOM / computed CSS| MCP
    MCP -.->|only haden_image imgN| PIXELS[Image bytes]
    PIXELS -.-> AI

Views

View

Best for

Returned data

text

Search, reading, form flows

Headings, visible text, links and controls with e refs, image placeholders

dom

HTML structure and attributes

Sanitized HTML; scripts and embedded content removed; <img> replaced by <haden-image>

visual

Layout and CSS reasoning

Visible meaningful elements with boxes and a bounded set of computed CSS properties

text is the default and should be preferred unless the task truly needs structure or presentation details.

MCP tools

Tool

Purpose

haden_open

Open an HTTP(S) URL and return its first snapshot

haden_read

Read the current page, optionally within a CSS selector

haden_interact

Click, fill, select, press, scroll, navigate history, reload, or wait; then return the updated snapshot

haden_image

Return actual image pixels for one img ref from the latest snapshot

haden_status

Report the active page without starting Chromium

Example text output:

# Example Domain
URL: https://example.com/
View: text
Interactive elements: 1
Images: 1 (use haden_image with an img ref only when visual inspection is needed)

# Example Domain
This domain is for use in illustrative examples.
[e1] link "More information" -> https://iana.org/domains/example
[image img1: "Example diagram"]

References are scoped to the latest snapshot. Read again after substantial page changes before reusing an old e or img ref.

Requirements

  • Node.js 20 or newer

  • Chromium installed through Playwright

Install from this repository

git clone https://github.com/Haden-Min/haden-browser.git
cd haden-browser
npm ci
npm run setup-browser
npm run build

Then configure an MCP host to launch the built stdio server. Use an absolute path in real configuration:

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

During development, a host can launch npx tsx /absolute/path/to/haden-browser/src/index.ts instead.

After the package is published to npm, the intended configuration is:

{
  "mcpServers": {
    "haden-browser": {
      "command": "npx",
      "args": ["-y", "haden-browser"]
    }
  }
}

Run npx playwright install chromium once on that machine before the first browser call.

Configuration

Environment variable

Default

Meaning

HADEN_HEADLESS

true

Run Chromium without a visible window

HADEN_BLOCK_HEAVY_ASSETS

true

Block images, media, and fonts during normal browsing

HADEN_ALLOW_PRIVATE_HOSTS

false

Allow localhost and private-network destinations

HADEN_NAVIGATION_TIMEOUT_MS

20000

Navigation and image-fetch timeout

HADEN_ACTION_TIMEOUT_MS

8000

Click, fill, and locator timeout

HADEN_MAX_CHARS

30000

Default snapshot character limit

HADEN_MAX_IMAGE_BYTES

5242880

Maximum bytes returned by haden_image

Boolean variables accept true/false, 1/0, yes/no, and on/off.

Local development pages

Private hosts are blocked by default to reduce SSRF risk. To browse an application on localhost, opt in for that MCP process only:

{
  "mcpServers": {
    "haden-browser-local": {
      "command": "node",
      "args": ["/absolute/path/to/haden-browser/dist/index.js"],
      "env": { "HADEN_ALLOW_PRIVATE_HOSTS": "true" }
    }
  }
}

Development

npm install
npm run setup-browser
npm run check
npm run build

The test suite covers network policy, text shaping, real Chromium extraction, ref-based interactions, lazy image retrieval, and an in-memory MCP client/server connection.

Current limitations

  • One active browser context is maintained per stdio MCP connection.

  • Image refs currently cover visible HTML <img> elements, not CSS background images, canvases, video frames, or iframe contents.

  • The visual view reports computed properties; it does not dump every stylesheet rule.

  • Downloads, file uploads, browser extensions, persistent profiles, and CAPTCHA solving are outside the MVP.

  • Private-host filtering reduces SSRF exposure but is not a substitute for OS/container-level network isolation in hostile multi-tenant environments.

See CONTRIBUTING.md for development guidance and SECURITY.md for vulnerability reporting.

License

MIT

Install Server
A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A token-efficient browser automation server that enables LLMs to navigate websites, click elements, and extract content using accessibility trees and markdown conversion. It provides eight tools for lightweight browser interaction optimized for performance with local LLM endpoints.
    MIT

View all related MCP servers

Related MCP Connectors

  • Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.

  • E2LLM gives your AI eyes and hands in a real browser: structured perception (SiFR) plus action.

  • Web search, page extraction and structured commerce, social and business data for AI agents

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Haden-Min/haden-browser'

If you have feedback or need assistance with the MCP directory API, please join our Discord server