Browser Use
Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.
作者による説明(英語の原文)
Token-efficient browser agent for local LLMs. Playwright + accessibility tree + MarkGrab.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"browsegrab": {
"command": "uvx",
"args": [
"browsegrab"
]
}
}
}ターミナルでこれを実行します
claude mcp add browsegrab -- uvx browsegrabプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"browsegrab": {
"command": "uvx",
"args": [
"browsegrab"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"browsegrab": {
"type": "stdio",
"command": "uvx",
"args": [
"browsegrab"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
公開者(ArkNill)がリポジトリの所有者(QuartzUnit)ではありません。別の人が登録した可能性があります
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち0項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.1)がレジストリに届いたのは8 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:Browser Use, Chrome DevTools MCP, MCP Server Browser
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.
MCP server for Chrome DevTools
MCP server for browser use access
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
한국어 문서 · 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.
e1, e2, ...) without vision modelsplaywright + httpx in corepip 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
from browsegrab import BrowseSession
async with BrowseSession() as session:
await session.navigate("https://example.com") snap = await session.snapshot() print(snap.tree_text)
result = await session.click("e1") print(result.url) # https://www.iana.org/help/example-domains
await session.navigate("https://en.wikipedia.org") snap = await session.snapshot() await session.type("e4", "Python programming", submit=True)
content = await session.extract_content()
# Accessibility tree snapshot
browsegrab snapshot https://example.com
browsegrab snapshot https://example.com -f json
browsegrab extract https://en.wikipedia.org/wiki/Python
browsegrab browse https://example.com "Find the about page"
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
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"]
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
| Page | Interactive elements | Tokens | browser-use equivalent |
|---|---|---|---|
| example.com | 1 | ~60 | ~500+ |
| Wikipedia article | 452 | ~1,254 | ~10,000+ |
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)
All settings via environment variables (BROWSEGRAB_* prefix):
# Browser
BROWSEGRAB_BROWSER_HEADLESS=true BROWSEGRAB_BROWSER_TIMEOUT_MS=30000
BROWSEGRAB_LLM_PROVIDER=vllm # vllm | ollama | openai BROWSEGRAB_LLM_BASE_URL=http://localhost:8000/v1 BROWSEGRAB_LLM_MODEL=Qwen/Qwen3.5-32B-AWQ
BROWSEGRAB_AGENT_MAX_STEPS=10 BROWSEGRAB_AGENT_ENABLE_CACHE=true
| Library | Role |
|---|---|
| markgrab | Passive extraction (URL → markdown) |
| snapgrab | Passive capture (URL → screenshot) |
| docpick | Document OCR → structured JSON |
| browsegrab | Active automation (goal → browser actions → results) |
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
pytest tests/ -m "not e2e"
pytest tests/ -v
MIT
Part of the QuartzUnit ecosystem — composable Python libraries for data collection, extraction, search, and AI agent safety.