
unbrowser by Unchained
io.github.protostatis由 GitHub 帳號 protostatis 發布v0.0.21更新於 Oct 24, 2026
Chrome-free MCP web access for agents with low-token page maps and browser escalation hints.
概覽
免 Chrome 的有狀態網頁執行環境,讓助理導覽頁面、查詢元素、填寫表單,並以低 token 頁面地圖擷取結構化內容。
- 可以做什麼
- 導覽頁面並回傳含標題、標題層級、地標與互動元素的結構化 BlockMap
- 依選擇器查詢元素,並透過穩定元素參照執行點擊、輸入或送出
- 在工作階段內保留 Cookie、連結、重新導向與 URL 編碼表單送出
- 視需要於受限 QuickJS 中執行頁面腳本,補足靜態 HTML 之不足
- 透過路由、卡片、表格與正文擷取等輔助功能取得結構化資料
- 讀取頁面與挑戰訊號及路由提示,建議下一步或升級至真實瀏覽器
- 適用情境
- 適合純 HTTP 抓取能力不足、而完整 Chrome 又過於笨重的情境:靜態或伺服器端渲染頁面、連結與表單流程,以及需要工作階段狀態的助理式擷取。它也會提示何時確實需要真實瀏覽器。
- 執行需求
- 以本機 stdio 程序執行原生二進位檔,可透過 uvx 安裝 pyunbrowser(PyPI)、Cargo、Docker 或發行檔取得。Python 安裝需 3.10 以上。未宣告驗證、環境變數或標頭。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 unbrowser by Unchained,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
unbrowser
The cheap browser pass for agents. One native binary. No Chrome.
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
navigateis a fast static/SSR pass. Setexec_scripts: trueonly 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.
Use unbrowser only on sites, accounts, and data you are permitted to access.
Challenge detection and cookie import do not grant permission to bypass access
controls or site terms. Treat session cookies as credentials: keep them local,
scope them to the authorized task, and never send them to the public demo.
Pick the right tier
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.
Quick start
Docker — Linux amd64/arm64, ~13 MiB pull
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
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
Minimal surface: add "--mcp-profile", "minimal" to expose only navigate/query/extract/help and let the agent discover the rest via help(topic). The Python wrapper ships a 3-tool smart server (search/open/help) as the unbrowser-smart console script.
Docker MCP configuration
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
navigatereturns 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, thenclick,type, orsubmitit 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, andchallenge.providertell an agent whether to run scripts, inspect embedded data, stop, or escalate to an authorized browser session. - Routing aids on every result:
micro_hint(the single next concrete step),next_tools(ranked candidates),avoid(tools with nothing to act on), and a stableescalationtaxonomy (challenge,thin_shell,partial_result, …) with retryable/severity/evidence — recommendations never contradictavoid. - Structured helpers: route discovery, card extraction, table normalization,
text_main, and selector debugging cover common extraction workflows.
Script mode and escalation
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 permitted task needs real pixels, Canvas/WebGL, Workers, browser extensions, V8 compatibility, an authenticated profile, or human confirmation. When the user has already established an authorized session in Chrome, cookies_set can import the required session cookie locally until it expires; it is not a license to circumvent a site's controls.
Documentation
License
Apache-2.0 — see LICENSE.
來源:README.md,提交 b2f0d74
工具
0版本歷史
1- v0.0.21最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分