Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Browsegrab

by QuartzUnitversion 0.1.1i★ –iRuns on your computer
Registry nameio.github.ArkNill/browsegrab

Install

Overview

Description from the maker (original English)

Token-efficient browser agent for local LLMs. Playwright + accessibility tree + MarkGrab.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Web & browsers

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 0 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • The registry lists no key to fill in.

You need

  • PyPIPython’s uv installed (for the uvx command)

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": {
    "browsegrab": {
      "command": "uvx",
      "args": [
        "browsegrab"
      ]
    }
  }
}

Run this in your terminal

claude mcp add browsegrab -- uvx browsegrab

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "browsegrab": {
      "command": "uvx",
      "args": [
        "browsegrab"
      ]
    }
  }
}

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.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "browsegrab": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "browsegrab"
      ]
    }
  }
}

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.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

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

  • ! Caution

    Maker matches the repo

    The publisher (ArkNill) is not the repo owner (QuartzUnit); someone else may have listed it

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Web & browsersi

  • More stars than 0% of the other 881 servers in this category
  • Published to the registry more recently than 5% of the other 881 servers in this category
  • Basic checks equal to or better than 22% of the other 881 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Browsegrab safe?

It passed 0 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.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

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).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.1.1) reached the registry 8 months ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.

What can I use instead?

In the same category: Browser Use, Chrome DevTools MCP, MCP Server Browser

Alternatives

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

Browser Use

by 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.

Computer or cloud★ 120,087MITUpdated 17 days ago
Install

Chrome DevTools MCP

by ChromeDevTools

Lets AI use Chrome’s developer tools to inspect pages, find what makes them slow and spot errors. Made by the Chrome DevTools team.

Runs on your computer★ 54,821Apache-2.0Updated 16 days ago
Install

MCP Server Browser

by bytedance

MCP server for browser use access

Runs on your computer★ 39,550Apache-2.0Updated 14 months ago
Install

README from the maker

Open the README

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.

browsegrab

한국어 문서 · llms.txt

Token-efficient browser agent for local LLMs — Playwright + accessibility tree + MarkGrab, MCP native.

browsegrab is a lightweight browser automation library designed for local LLMs (8B-35B parameters). It combines Playwright's accessibility tree with MarkGrab's HTML-to-markdown conversion to achieve 5-8x fewer tokens per step compared to alternatives like browser-use.

Features

  • Token-efficient: ~500-1,500 tokens/step (vs 4,000-10,000 for browser-use)
  • Local LLM first: Optimized for vLLM, Ollama, and OpenAI-compatible endpoints
  • MCP native: Built-in MCP server with 8 browser automation tools
  • MarkGrab integration: HTML → clean markdown for content extraction
  • Accessibility tree + ref system: Stable element references (e1, e2, ...) without vision models
  • Success pattern caching: Zero LLM calls on repeated workflows
  • 5-stage JSON parser: Robust action parsing for local LLM outputs
  • Minimal dependencies: Only playwright + httpx in core

Installation

pip install browsegrab

playwright install chromium

With optional features:

pip install browsegrab[mcp]      # MCP server support

pip install browsegrab[content] # MarkGrab content extraction pip install browsegrab[cli] # CLI with rich output pip install browsegrab[all] # Everything

Quick Start

Python API
from browsegrab import BrowseSession

async with BrowseSession() as session:

Navigate and get accessibility tree snapshot

await session.navigate("https://example.com") snap = await session.snapshot() print(snap.tree_text)

- heading "Example Domain" [level=1]

- link "Learn more": [ref=e1]

Click using ref ID

result = await session.click("e1") print(result.url) # https://www.iana.org/help/example-domains

Type into search box

await session.navigate("https://en.wikipedia.org") snap = await session.snapshot() await session.type("e4", "Python programming", submit=True)

Extract compressed content (AX tree + markdown)

content = await session.extract_content()

CLI
# Accessibility tree snapshot

browsegrab snapshot https://example.com

JSON output

browsegrab snapshot https://example.com -f json

Extract content (AX tree + markdown)

browsegrab extract https://en.wikipedia.org/wiki/Python

Agentic browse (requires LLM endpoint)

browsegrab browse https://example.com "Find the about page"

MCP Server
browsegrab-mcp  # Start MCP server (stdio)

Claude Desktop / Cursor / VS Code config:

{

"mcpServers": { "browsegrab": { "command": "browsegrab-mcp" } } }

8 MCP tools: browser_navigate, browser_click, browser_type, browser_snapshot, browser_scroll, browser_extract_content, browser_go_back, browser_wait

How It Works

Agent Browse Loop
flowchart LR

A["🌐 URL + Goal"] --> B["Navigate"] B --> C["AX Tree Snapshot\n~200–500 tokens"] C --> D{"LLM\nDecision"} D -->|"click / type / scroll"| E["Execute Action"] E --> C D -->|"goal reached"| F["Extract Content\n(MarkGrab)"] F --> G["✅ Result"]

Token Efficiency

browsegrab separates structure (accessibility tree) from content (MarkGrab markdown), sending only what the LLM needs:

flowchart TD

A["Raw HTML"] --> B["Accessibility Tree"] A --> C["MarkGrab Markdown"] B --> D["Structure: ~200–500 tokens\nInteractive elements with ref IDs"] C --> E["Content: ~300–800 tokens\nClean markdown · on-demand"] D --> F["Combined: ~500–1,300 tokens/step\n⚡ 5–8× fewer than browser-use"] E --> F

Token efficiency (measured)
PageInteractive elementsTokensbrowser-use equivalent
example.com1~60~500+
Wikipedia article452~1,254~10,000+

Architecture

browsegrab/

├── config.py # Dataclass configs (env var loading) ├── result.py # Result types (ActionResult, BrowseResult, ...) ├── session.py # BrowseSession orchestrator ├── browser/ │ ├── manager.py # Playwright lifecycle (async context manager) │ ├── snapshot.py # Accessibility tree + ref system │ ├── selectors.py # 4-strategy selector resolver │ └── actions.py # navigate, click, type, scroll, go_back, wait ├── dom/ │ ├── ref_map.py # ref ID ↔ element bidirectional mapping │ └── compress.py # AX tree + MarkGrab → compressed context ├── llm/ │ ├── base.py # LLMProvider ABC │ ├── provider.py # vLLM, Ollama, OpenAI-compatible │ ├── prompt.py # System prompts (~400 tokens) │ └── parse.py # 5-stage JSON fallback parser ├── agent/ │ ├── history.py # Sliding window history compression │ ├── cache.py # Domain-based success pattern cache │ └── loop_guard.py # Duplicate action detection ├── main.py # CLI (click) └── mcp_server.py # FastMCP server (8 tools)

Configuration

All settings via environment variables (BROWSEGRAB_* prefix):

# Browser

BROWSEGRAB_BROWSER_HEADLESS=true BROWSEGRAB_BROWSER_TIMEOUT_MS=30000

LLM (for agentic browse)

BROWSEGRAB_LLM_PROVIDER=vllm # vllm | ollama | openai BROWSEGRAB_LLM_BASE_URL=http://localhost:8000/v1 BROWSEGRAB_LLM_MODEL=Qwen/Qwen3.5-32B-AWQ

Agent

BROWSEGRAB_AGENT_MAX_STEPS=10 BROWSEGRAB_AGENT_ENABLE_CACHE=true

Part of the QuartzUnit Ecosystem

LibraryRole
markgrabPassive extraction (URL → markdown)
snapgrabPassive capture (URL → screenshot)
docpickDocument OCR → structured JSON
browsegrabActive automation (goal → browser actions → results)

Development

git clone https://github.com/QuartzUnit/browsegrab.git

cd browsegrab python -m venv .venv && source .venv/bin/activate pip install -e ".[dev]" playwright install chromium

Unit tests (no browser needed)

pytest tests/ -m "not e2e"

Full suite including E2E

pytest tests/ -v

License

MIT


Part of the QuartzUnit ecosystem — composable Python libraries for data collection, extraction, search, and AI agent safety.

Ask PopNx