ai-browser MCP server
io.github.Glittering · Updated
Visible Electron browser driven by a semantic accessibility tree: 17 MCP tools, no screenshots.
At a glance
ai-browser is an MCP server in the Dev Tools & Git category. It runs locally over stdio via `npx -y @glittering0717/ai-browser`, and declares no required credentials. It exposes 18 tools, including browse_navigate, browse_get_tree and browse_act. It scores A (91/100) on the MCP Skills Hub health score as of Oct 28, 2026.
One-click install
Opens your editor and pre-fills the config. Your editor will ask before adding it.
How to install ai-browser in your AI client
Setup for Claude Code, Claude Desktop, Cursor, Codex, Windsurf, Cline and VS Code — copy-paste ready.
How to install ai-browser in Claude CodeAnthropic's agentic CLI
Add the server
bashclaude mcp add ai-browser -- npx -y @glittering0717/ai-browserVerify it's connected
bashclaude mcp listSharing it with your team?
Add `--scope project` to write it to .mcp.json in the repository root, which you can commit (with the secrets left as environment variables).
Use it in a session
Ask Claude to use the tools this server exposes (e.g. browse_navigate, browse_get_tree, browse_act). It discovers them automatically.
How to install ai-browser in Claude DesktopDesktop app (MCP config)
Open your MCP config
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%\Claude\claude_desktop_config.json
Add this server
json{ "mcpServers": { "ai-browser": { "command": "npx", "args": [ "-y", "@glittering0717/ai-browser" ] } } }Restart Claude Desktop
The tools appear under the 🔌 menu once the app reloads.
How to install ai-browser in CursorAI-first code editor
Create / edit .cursor/mcp.json in your project
json{ "mcpServers": { "ai-browser": { "command": "npx", "args": [ "-y", "@glittering0717/ai-browser" ] } } }Enable it
Cursor Settings → MCP → toggle the server on. Tools become available to the Composer/Agent.
How to install ai-browser in Codex CLIOpenAI coding agent
Add to ~/.codex/config.toml
toml[mcp_servers.ai-browser] command = "npx" args = ["-y", "@glittering0717/ai-browser"]Run Codex
Codex loads MCP servers from config.toml on startup and exposes their tools to the agent.
How to install ai-browser in WindsurfCodeium's agentic IDE
Edit ~/.codeium/windsurf/mcp_config.json
json{ "mcpServers": { "ai-browser": { "command": "npx", "args": [ "-y", "@glittering0717/ai-browser" ] } } }Reload
Windsurf → Cascade → refresh MCP servers. Cascade can now call the tools.
How to install ai-browser in ClineVS Code autonomous agent
Open Cline → MCP Servers → Configure
Adds to cline_mcp_settings.json.
Add the server
json{ "mcpServers": { "ai-browser": { "command": "npx", "args": [ "-y", "@glittering0717/ai-browser" ] } } }
How to install ai-browser in VS CodeCopilot / MCP support
Create .vscode/mcp.json
json{ "servers": { "ai-browser": { "type": "stdio", "command": "npx", "args": [ "-y", "@glittering0717/ai-browser" ] } } }Start it
VS Code shows a ▶ Start action above the server entry. Agent mode (Copilot Chat) can then use the tools.
What tools does ai-browser expose? (18)
Taken from the project's README — the server itself was not queried, so check its docs for the exact schemas.
- browse_navigateLoad a URL in your tab or the given tab.
- browse_get_treeRead the page as a semantic tree + page context (modals, messages, stats).
- browse_act`click` / `type` (append at caret) / `setContent` (replace all) / `clear` / `focus` / `hover` / `scroll_to` / `upload` / `get_value` (read-only) / `drag` / `press` / `wheel` on a `data-ai-id`.
- browse_diff`snapshot` a baseline, then `diff` to get added / removed / changed paths with before/after values. This is how you prove an action did anything.
- browse_capabilitiesProbe what a page affords and which route to take on it (see below).
- browse_repaintForce the compositor to redraw the tab when the window shows a stale page; returns `repaint_count`.
- browse_downloadsList a tab's downloads with their on-disk paths. Downloads are asynchronous — poll this after clicking an export button.
- browse_canvasRead `` through captured draw calls: `list` / `read` / `configure` / `capture`. Experimental — see the canvas section below.
- browse_evaluateRun a JS *expression* in page context (5000-char cap, Node identifiers rejected).
- browse_scrollScroll the page, or scroll an element into view.
- browse_waitPoll until `button_enabled` / `modal_appeared` / `text_contains` / `url_contains`.
- browse_tabsTabs: `list` / `new` / `close` / `switch` / `window`. `switch` = default; add `show:true`. `new` never steals the view unless `show:true`.
- browse_networkChrome-DevTools-style network inspection: `list` (filter by method / URL / status / type), `get` (request + response headers and bodies), `clear`, `configure`.
- browse_quitShut the whole browser down and release the process.
- committeddispatched and acked by the page
- noneprovably nothing happened (no such target, bad params, CDP down)
- unknowncannot prove nothing happened — timeout, paste dispatched but never consumed, half a key sequence
- verdictis an explicit `"changed"` / `"unchanged"`, so "nothing happened" is never inferred from
What the code can do
Read from the published package source — never executed. Parsed 71 of 71 source files.
This server can run other programs on your machine, read and write files and execute code it builds at runtime.
How it was published
- No provenance attestation — there is nothing linking this published artifact to a specific source commit.
- 1 npm maintainer — a single point of compromise · last published by glittering0717.
Maintainer of this package and think something here is wrong? Tell us and we'll correct it.
Before you install
Signals gathered from the source repo and package registry — not a safety verdict.
What it can reach
- Runs code on your machine — Executes as a local process with your user's permissions, including filesystem access.
- Downloads at launch — The package is fetched from its registry each run unless you pin a version.
- Last commit today — Actively maintained.
- 5 GitHub stars — Very little community usage so far.
- 4.3k weekly downloads — Regularly installed by other developers.
Client compatibility
Health score
A · 91Maintenance, adoption, transparency and packaging — not a safety audit. How this is calculated
- Maintenance30%100%
Last commit 0 days ago.
- Adoption20%54%
5 stars, 4275 weekly downloads.
- Transparency20%100%
4/4: ✓ public source repo, ✓ declared license, ✓ documentation, ✓ discoverable tool list.
- Provenance15%100%
Package and registry entry point at the same repository.
- Packaging15%100%
Publishes a pinned version (2.3.1).
Documentation
Full READMEAI Browser
<b>中文读者请看这里:README-CN.md(3 分钟速读 + 中文安装指引)</b>
<b>A real browser whose only operator is your agent.</b> It reads pages as a semantic tree instead of screenshots, acts through trusted browser input — and because it is a normal, visible Electron window, a human can reach for the mouse at any time.
<em>A noisy real-world feed (300+ accessibility nodes) becomes a typed structure — then one <code>ui.act</code> switches the feed and the tree changes with it. Every call is a raw JSON-RPC message over one WebSocket: no SDK, no coordinates.</em>
Reproduce: <code>npm start</code> then <code>node examples/feed-tree.mjs</code>
<em>Human + agent, same browser, same socket. The agent drives, then simply stops and watches; a person clicks an article in the real window, the agent notices the new tab on its next read, and continues on the page the human chose. No lock, no hand-off API.</em>
Try it yourself: <code>npm start</code> then <code>node examples/human-takeover.mjs</code> — click anything when it says <em>YOUR TURN</em>.
What it is. An Electron app that exposes its tabs over two equivalent interfaces — an MCP server (20 browse_* tools) and a raw WebSocket JSON-RPC API (ws://localhost:9223, methods ui.*). Your agent navigates, reads a structured semantic tree (role / label / value / states / actions), and clicks or types by data-ai-id. There is no screenshot step and no OCR: src/ contains no capture call at all.
What it is not. It is not headless. The window really opens, really renders, and stays interactive — see Letting a human step in. Nor does it "co-drive" with you: the hand-off is a conversation between the agent and the user, not a browser API.
Security note. The WebSocket server has no authentication — it listens on localhost and trusts whoever connects. Do not expose port 9223 beyond loopback, and avoid untrusted networks.
Install
Install the prebuilt package unless you have a reason not to. Option A is one file you double-click: no Node.js, no dependency tree, no build step. Source install (Option C) pulls a ~276 MB node_modules plus a ~100 MB Electron engine download on top — only use it when no package fits your platform, the package misbehaves, or you specifically need to run from source.
Option A — macOS install package (recommended)
Excerpt — the full document is on GitHub.
Alternatives to ai-browser
- Vibe Test — Browser Testing AgentA · 88Code-aware browser testing agent — 14 Playwright tools for AI code editors via MCP
- Agent360 Browser MCPA · 92Drive your real, logged-in Chrome from any AI agent - 40 tools. Needs our Chrome extension too.
- Paparats MCP: Self-Hosted Semantic Code SearchA · 84Self-hosted semantic code search MCP for Claude Code & Cursor. Multi-repo, AST-aware, stays local.
- Atlassian (browser SSO)A · 80Jira and Confluence behind SSO via your own browser session: every mcp-atlassian tool, no API token
Maintain ai-browser? Add a badge to your README
Shows its health grade, and links readers to install steps for every client.
[](https://mcp-skills-hub.vercel.app/mcps/io-github-glittering-ai-browser)Catalog data refreshed . Something wrong? Report it.