unbrowser by Unchained — Claude Code MCP server: what it does
Stateful web runtime for agents without Chrome: keeps cookies, returns DOM element refs and page signals.
claude mcp add unbrowser -- uvx pyunbrowserWhat unbrowser by Unchained does
The server sits between curl and a full browser. It retains session state, processes forms and redirects, returns a structured page map with headings, landmarks and interactive elements. The agent gets stable node references like e:142 — click or fill a field without re-parsing HTML.
Default navigate is a fast static pass. Set exec_scripts: true to run light scripts in QuickJS under a watchdog. This is not V8 or a rendering engine: heavy SPAs, Canvas, WebGL and extensions need real Chrome. The server detects challenges and thin shells, returns thin_shell and challenge.provider signals — the agent knows when to escalate.
Installing via pip requires Python 3.10+. On macOS, the built-in /usr/bin/python3 is version 3.9 and won't work: use pipx or Homebrew Python instead.
What it helps with
- navigate static HTML pages while keeping cookies between requests
- extract data by selector and get a stable element reference
- submit a form and follow the redirect
- detect whether a page needs a real browser
- run light hydration in QuickJS without Chrome
Example prompts for the agent
- Navigate to
https://news.ycombinator.comand show the first five links from.titleline > a - Fill the
#emailfield atexample.com/contactand submit the form - Check if
site.comneeds a full browser or a static pass is enough
How to install unbrowser by Unchained
Platform CLI
claude mcp add unbrowser -- uvx pyunbrowseruvx runs the command named after the package; if the README names another one, use uvx --from pyunbrowser <command>
Platform CLI
codex mcp add unbrowser-by-unchained -- uvx pyunbrowseruvx runs the command named after the package; if the README names another one, use uvx --from pyunbrowser <command>
Config file
{
"mcpServers": {
"unbrowser-by-unchained": {
"command": "uvx",
"args": [
"pyunbrowser"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from pyunbrowser <command>
Config file
{
"servers": {
"unbrowser-by-unchained": {
"type": "stdio",
"command": "uvx",
"args": [
"pyunbrowser"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from pyunbrowser <command>
Platform CLI
gemini mcp add unbrowser-by-unchained uvx pyunbrowseruvx runs the command named after the package; if the README names another one, use uvx --from pyunbrowser <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about unbrowser by Unchained
How to install unbrowser by Unchained in Claude Code?
Run claude mcp add unbrowser -- uvx pyunbrowser in your terminal.
What does unbrowser by Unchained do?
It is a stateful web runtime for agents without launching Chrome: it keeps cookies and DOM state, returns a structured page map with element references, handles forms and redirects, detects challenges and SPA signals. Default mode is a fast static pass; exec_scripts: true runs scripts in QuickJS.
Which Python version does unbrowser require?
Python 3.10 or newer. On macOS, the built-in /usr/bin/python3 is 3.9 and will not work: use pipx or Homebrew Python.