Labsco
MCP SERVER

DOMShell

by apireno

Let an agent browse the web with `ls`, `cd`, `cat` and `click` — the page's accessibility tree presented as a filesystem.

Browser Automation, Control & Screenshots
Summary
Semantic paths instead of pixel coordinates, and read-only until you say otherwise.

Because the tree comes from the browser's accessibility data, `cd navigation/` and `click submit_btn` mean the same thing across sites — no per-site selectors, no screenshot parsing. The safety model is unusually explicit: writes and navigation are off out of the box, `--domains` pins commands to hosts you name, and every command lands in an audit log. Per-action confirmation prompts exist behind `--confirm` but are off by default, because the server's terminal is usually not where the agent is running.

What it is

A Chrome extension that maps the browser into a virtual filesystem: windows and tabs are top-level directories, and each tab's accessibility tree becomes nested folders where containers are directories and buttons, links and inputs are files. A hardened MCP server exposes that shell to any MCP client.

What you get
  • `domshell_execute` — one tool that takes a command string exactly as you would type it in the shell, and accepts several newline-separated commands in a single call
  • Navigation and reading: `ls`, `cd`, `pwd`, `tree`, `cat`, `text` for bulk extraction, `grep`, `find` by role, plus `tabs` and `windows`
  • Acting on the page: `click`, `focus`, `type`, `scroll`, `select`, and `navigate` / `open` for going somewhere new
  • Command chaining and a pipe operator, so a find can be filtered and fed onward in one round trip
  • Read-only by default — navigation and write commands stay off until you pass `--allow-write`, and cookie access needs `--allow-sensitive`
  • A domain allowlist and an audit log recording every command with a timestamp
Requirements

The DOMShell Chrome extension, plus the MCP server run separately with npx. The server listens on two ports: HTTP for MCP clients and a WebSocket bridge for the extension. Both sides must present the same token — set it with `--token`, or let the server generate one and paste it into the extension's options page. A setup wizard detects installed clients and writes their configs for you.

Setup effort

One command — npm install -g @apireno/domshell