axuse: MCP server for browser and desktop control
axuse
A zero-dependency MCP server: the agent drives Chrome through the accessibility tree and CDP and gets snapshot diffs instead of screenshots
- 804 ★ on the repository
- Last commit
Broad access
Why this level
- The agent clicks, types and uploads files on your behalf, and in bridge mode it works in a browser with your sign-ins
- The tool runs arbitrary code on pages through `ax_evaluate` and controls desktop windows, including system-level input
- Features such as hiding automation signals and plugging in CAPTCHA solvers are dual-use: automation against a site's rules gets accounts blocked and may break the law
Install
- Works in
Manual install
git clone https://github.com/ctoldigital/axuse.git && cd axuse && node src/cli.js doctorNode.js 22 or newer is required. The doctor command finds a browser, launches it and takes a test snapshot. For a server with no browser and no admin rights there is `node src/cli.js install-browser`.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent clicks, types and uploads files on your behalf, and in bridge mode it works in a browser with your sign-ins
- The tool runs arbitrary code on pages through `ax_evaluate` and controls desktop windows, including system-level input
- Features such as hiding automation signals and plugging in CAPTCHA solvers are dual-use: automation against a site's rules gets accounts blocked and may break the law
This is third-party code. Review the repository files before installing.
What it does
axuse lets an agent work in a browser through the page accessibility tree and the CDP protocol with no screenshot loop. `ax_open` returns a full page snapshot with stable references like `[ref=e7]`, and each later action (`ax_click`, `ax_fill`, `ax_type`) answers with a diff only: what was removed, added or changed. Input goes through real CDP events, and errors arrive as typed codes such as `REF_NOT_FOUND` and `STALE_STATE` with a hint on whether to retry. There are more than twenty browser tools: opening a list of addresses at once (`ax_open_many`), filling a whole form in one call (`ax_fill`), finding a line on a large page, scrolling until a text appears, file upload, dialog and tab handling. A separate `ax_desktop_*` group covers desktop windows: screenshots, clicks, typing, windows. The author verified it on Windows, on Linux it turns on by itself in X11 and XWayland sessions, and on macOS it needs the `AXUSE_ENABLE_MACOS_CUA=1` variable and system permissions. It can also drive your everyday Chrome or Edge: an extension with a native-messaging bridge attaches to an already open profile where you are signed in. The `SKILL.md` file in the repository tells the model the order of work with the tools.
Who it is for. For developers and testers whose Claude Code, Codex or OpenCode agents walk through sites and interfaces, where a screenshot loop spends too many tokens and misses buttons.
Good fit when
- An agent has to run a multi-step browser scenario: a form, a checkout or a signup with validation errors
- You need to open a list of links in a batch and get titles with accessibility-tree excerpts, which `ax_open_many` and the `open-urls` command do
- You need to work in an already open Chrome or Edge with your sign-in
- You are testing a local app with nested iframes, virtualized grids and date pickers
- You need cost control: caps on snapshot size, node count and screenshot size are set in code
Not a fit when
- The main job is visual layout comparison or work on a canvas: screenshots in axuse are auxiliary and capped by a size budget
- You want to solve CAPTCHAs right after install: the core ships no solvers, they come as separate paid packages
- You plan to get around bot protection: sites that recognize automation can still block axuse, and service terms often forbid automated actions
- The machine has no Node.js 22 or newer and cannot get it: the server has no dependencies, but the runtime version is firm
Example request
Open http://localhost:3000, fill the signup form with test data in a single ax_fill call, click Create account and show which validation errors appearedMCP
- Transport
- stdio
- Authentication
- not required
Environment variables
AXUSE_BROWSER- Path to the browser binary when the server cannot find it
AXUSE_PROXYsecret- Proxy for every launched browser, credentials are supported
AXUSE_ENABLE_MACOS_CUA- A value of 1 enables the desktop tools on macOS
Limitations
The license is PolyForm Noncommercial 1.0.0: free for noncommercial purposes only, with CTOL Digital Solutions as the rights holder. You need Node.js 22 or newer and a Chromium-family browser that the server finds itself or takes from `AXUSE_BROWSER`.
The extension backend has no Target domain, so frames from other origins are only listed there, and the CDP mode enters them. The author notes that branded Chrome from version 137 silently ignores automated extension loading, so it has to be done on Edge, Chromium or Chrome for Testing, while a manually unpacked extension works everywhere. Sites that recognize automation can block the server: it does not implement Codex traffic labeling.
macOS desktop control is opt-in because it produces system-level input events. CAPTCHA solvers and features like a session vault ship as separate paid plugins with a shared interface in `src/plugins`.
How to disable. Remove the server from the agent: `claude mcp remove axuse` in Claude Code or `codex mcp remove axuse` in Codex. If you connected the bridge to your own browser, remove the native host following the repository documentation and disable the unpacked extension on the extensions page.
FAQ
How do I connect axuse to Claude Code?
Clone the repository and check the environment with `node src/cli.js doctor`. Then run `claude mcp add --scope user axuse -- node /absolute/path/axuse/src/cli.js mcp`. For Codex use `codex mcp add axuse -- node /absolute/path/axuse/src/cli.js mcp`.
How is axuse different from screenshot-based browser control?
Instead of pictures it reads the accessibility tree: after each action the agent receives only the lines that changed. The author reports measurements on 16 tasks with the same agent and model: median time and token spend came out lower than the Codex Chrome extension and browser-use.
Can it drive my everyday Chrome?
Yes. Run `axuse bridge install`, load the unpacked extension from `bridge/extension` in Chrome or Edge and call `ax_open`: while the extension is connected, the server picks it on its own. Tabs where you are signed in stay yours, and `ax_close` closes only axuse's tabs.
Does it need a browser on a screenless server?
Yes, but it can be installed without admin rights with `node src/cli.js install-browser`, which places a pinned Chrome for Testing in `~/.cache/axuse`. On a screenless server it starts a private Xvfb by default and runs the browser with a window and does not use headless mode.
Is axuse suitable for commercial projects?
Only under a separate license. The public PolyForm Noncommercial 1.0.0 license allows noncommercial use, and a business has to agree terms with CTOL Digital Solutions.
Discussion
No questions or reviews yet.
Related
MCP serversAn MCP bridge to control your browser from a coding agent: a Chrome extension and a set of tab and page automation tools
A CLI and skill for driving Chrome from an agent: page snapshots, clicks, console, network and audits in compact output
An agent drives your real logged-in Chrome: a CLI, MCP and an extension with a separate tab group per session
An MCP server and Chrome extension give any agent 22 tools for your own logged-in browser, verifying the effect of every action.
An MCP server and Chrome extension that let the agent drive your already open browser with your logged-in sessions, all locally
A CLI and MCP server that lets an agent drive your real Chrome with its logged-in sessions: 103 commands across 36 platforms plus browser automation
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| axuse: MCP server for browser and desktop control (this card) | no | not required | 804 | |
| Chrome DevTools MCP | yes | not required | 55,126 | the official Chrome DevTools team MCP, aimed at debugging, network and performance traces |
| Playwright CLI | yes | 15,133 | the official Playwright CLI that drives a browser with short commands and no MCP schemas |
README in short
The document compares a screenshot loop with axuse across observation, targeting, input, errors, change detection and cost control. Then come the architecture with a shared core and two backends, the tool list and notes on the scope of support. The tests and license terms close it out.