Skip to content

The same tools for a web page and a native app

Open source MCP server

browxai

browxai lets an AI agent drive a web page or a native app.

Agents get a compact page view and a short tool list; capabilities past the default four start off.

npm install -g browxai

Node 22+. Wire it into your MCP client.

A sample projects app at desktop width, run through browxai, annotated with element refs from the snapshot: e4 for the Projects link, e7 for the Account button, e10 for the search input and e13 for the first Open button.A sample projects app at desktop width, run through browxai, annotated with element refs from the snapshot: e4 for the Projects link, e7 for the Account button, e10 for the search input and e13 for the first Open button.The same sample projects app at 390 px wide in its mobile layout, run through browxai, annotated with refs from the snapshot: e10 for the search input and e13 for the first Open button.The same sample projects app at 390 px wide in its mobile layout, run through browxai, annotated with refs from the snapshot: e10 for the search input and e13 for the first Open button.
A sample app run through browxai: the refs the agent can act on.The same sample app at 390 px, in its mobile layout.
Version
v0.15.0
License
MIT
Status
Pre-1.0, semver. The default tool surface is stable; gated capabilities are experimental.
Links
GitHubnpmDocs
Find
The sample projects app at desktop width, run through browxai, with numbered boxes over eight elements, each number mapped to a ref. Mark 3 is e7, the Account button, and mark 8 is e13, the first Open button.The sample projects app at desktop width, run through browxai, with numbered boxes over eight elements, each number mapped to a ref. Mark 3 is e7, the Account button, and mark 8 is e13, the first Open button.The sample projects app at 390 px wide in its mobile layout, run through browxai, with numbered boxes over six elements, each number mapped to a ref. Mark 6 is e13, the first Open button.The sample projects app at 390 px wide in its mobile layout, run through browxai, with numbered boxes over six elements, each number mapped to a ref. Mark 6 is e13, the first Open button.
Sample app run through browxai: number the candidates, then say click 3.Sample app at 390 px, mobile layout: number the candidates, then say click 6.
Act
The sample projects app at desktop width, run through browxai, with the Account menu open after one click and the diff browxai returned: aria-expanded false to true and 6 nodes added.The sample projects app at desktop width, run through browxai, with the Account menu open after one click and the diff browxai returned: aria-expanded false to true and 6 nodes added.The sample projects app at 390 px wide in its mobile layout, run through browxai, with the Account menu open after one click and the diff browxai returned: aria-expanded false to true and 6 nodes added.The sample projects app at 390 px wide in its mobile layout, run through browxai, with the Account menu open after one click and the diff browxai returned: aria-expanded false to true and 6 nodes added.
Sample app run through browxai: one click, one diff.Sample app at 390 px, mobile layout: one click, one diff.

What you get

Surface

Token-efficient

snapshot() is scoped and budgeted; find() ranks candidates.

Native

Native apps, same tools

native-device drives Android emulator and iOS Simulator apps.

Host

Reaches past the tab

Host features such as the clipboard start off.
Safety

Default capabilities

Arbitrary JS and response bodies start off.
Clients

Model-agnostic

Any MCP client over stdio, typed TypeScript SDK.
Sessions

Sessions and lifecycle

Installed Chrome, one default profile per workspace.

Native apps and sessions in detail. Bot protection.