Skip to main content
Glama

unbrowser

The cheap browser pass for agents. One native binary. No Chrome.

unbrowser MCP server

Official MCP Registry identity: mcp-name: io.github.protostatis/unbrowser

unbrowser is a stateful, non-visual web runtime for agents. It sits between curl/WebFetch and a real browser: it retains cookies and DOM state, returns queryable element refs, handles links and HTML forms, detects challenge and SPA signals, and can run bounded QuickJS page scripts when static HTML is not enough.

Default navigate is a fast static/SSR pass. Set exec_scripts: true only when you need bounded QuickJS execution. Heavy SPAs, pixels, V8 fidelity, extensions, and interactive anti-bot challenges belong in a real Chrome tier.

Try the live public-web demo before installing. It accepts only the fixed public source sets shown on the page; do not send private data, cookies, or authenticated tasks through it. A shared Streamable HTTP MCP endpoint is available at https://unchainedsky.com/unbrowser-mcp for public smoke tests; production sessions should use a local install.

Pick the right tier

Need

curl / WebFetch

unbrowser

Real Chrome

Static / SSR HTML

raw response

structured BlockMap + DOM queries

full browser

Cookies, links, HTML forms

DIY

built in

built in

Client-side page scripts

bounded QuickJS, opt-in

V8

Pixels, Canvas, WebGL, Workers, extensions

Agent-oriented output

DIY parsing

element refs, page signals, structured extraction

DIY CDP / DOM parsing

Hard bot challenge

detect + cookie replay

browser / human / solver

Use unbrowser when HTTP alone is too dumb and a full browser is too expensive. When the page needs Chrome, the output tells the agent to escalate rather than pretending compatibility it does not have.

Related MCP server: Browserbase MCP Server

Quick start

Docker — Linux amd64/arm64, ~13 MiB pull

docker pull ghcr.io/protostatis/unbrowser:latest

# One-shot navigation
docker run --rm ghcr.io/protostatis/unbrowser:latest \
  navigate https://example.com --json

# Default mode: MCP over stdio
docker run --rm -i ghcr.io/protostatis/unbrowser:latest

The image is distroless and runs as non-root: no shell, package manager, or persistent state. Pin :vX.Y.Z or an image digest in production.

Python

pipx install pyunbrowser   # recommended on macOS / modern Linux
# or, inside a Python 3.10+ virtual environment:
pip install pyunbrowser
from unbrowser import Client

with Client() as ub:
    ub.navigate("https://news.ycombinator.com")
    for link in ub.query(".titleline > a")[:3]:
        print(link["text"], link["attrs"]["href"])

On macOS, /usr/bin/python3 is 3.9 and cannot install the wheel; use pipx or a Homebrew Python. The PyPI distribution is pyunbrowser, while the import and executable remain unbrowser.

MCP

{
  "mcpServers": {
    "unbrowser": {
      "command": "unbrowser",
      "args": ["--mcp"]
    }
  }
}
{
  "mcpServers": {
    "unbrowser": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "ghcr.io/protostatis/unbrowser:latest"
      ]
    }
  }
}

See installation and interface reference for Cargo, release archives, source builds, persistent shell sessions, raw JSON-RPC, and all MCP options.

What an agent gets

  • navigate returns a BlockMap: page title, landmarks, headings, interactives, density signals, and an ASCII outline. Its size is page-dependent; it is structured for planning rather than a fixed-token promise.

  • Stable element refs (e:142): query an element once, then click, type, or submit it without re-parsing HTML.

  • Stateful cookies and forms: cookie jar, GET and URL-encoded POST form submission, links, and redirects persist within a session.

  • Page and challenge signals: density.likely_js_filled, thin_shell, and challenge.provider tell an agent whether to run scripts, inspect embedded data, replay a clearance cookie, or escalate.

  • Structured helpers: route discovery, card extraction, table normalization, text_main, and selector debugging cover common extraction workflows.

Script mode and escalation

{"id":1,"method":"navigate","params":{"url":"https://example.com","exec_scripts":true}}

With exec_scripts: true, inline and external scripts run in QuickJS under a bounded watchdog. This can materialize light hydration and fetch-visible data; it is not V8 or a rendering engine. Heavy React/Vue/Ember apps may still leave an empty shell.

Escalate to unchainedsky-cli or Unchained when a task needs real pixels, Canvas/WebGL, Workers, browser extensions, V8 compatibility, or active challenge solving. For many bot walls, solve once in Chrome and replay the resulting clearance cookie with cookies_set until it expires.

Documentation

Need

Read

Install paths, session CLI, one-shot CLI, raw RPC, MCP, shims, full RPC table

Usage reference

Script compatibility, SPA signals, challenge handling, cookie solver, escalation

Compatibility and escalation

Distribution and supported directory listings

Distribution notes

Build the native binary

Build instructions

License

Apache-2.0 — see LICENSE.

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
10hResponse time
6dRelease cycle
14Releases (12mo)
Commit activity
Issues opened vs closed

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages through structured accessibility snapshots without requiring screenshots or visually-tuned models.
    Last updated
    22
    6,254,424
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables cloud browser automation through Browserbase and Stagehand, allowing LLMs to interact with web pages, take screenshots, extract data, and perform automated actions with support for proxies, stealth mode, and parallel sessions.
    Last updated
    14
    5,082
    Apache 2.0
  • A
    license
    -
    quality
    C
    maintenance
    Agent-native headless browser for AI agents. Converts web pages to a Semantic Object Model (SOM) instead of raw HTML — 17x average token reduction across real-world sites (up to 117x on complex pages). Native MCP server with fetch_page, extract_text, extract_links, and full browser automation. No API key required.
    Last updated
    77
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • Scrape, crawl, map & search the web. Open-source, self-hostable Rust crawler & search for AI agents.

  • AI-powered browser automation — navigate, click, fill forms, and extract data from any website.

  • Screenshot, diff, audit and sitemap-capture any web page — 5 MCP tools 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/protostatis/unbrowser'

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