domshell_executeLABSCO 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,textfor bulk extraction,grep,findby role, plustabsandwindows - Acting on the page:
click,focus,type,scroll,select, andnavigate/openfor 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
Follow the published steps
USE CASES
Extracting the content of a page without scraping HTML
Walk into the section you want and pull all its text in one call, instead of reading fifty elements individually.
Collecting every link in a section
Find the links with their URLs shown inline, and pipe the results down to the ones matching the host you care about.
Filling in and submitting a form
Focus the field, type, and click — after starting the server with writes enabled and the domain pinned.
Doing a whole workflow in one round trip
Send several commands separated by newlines and get the combined output back once.
Keeping an agent inside one site
Start the server with a domain allowlist so commands only execute when the active tab matches.
38 tools
Listed in project docs. Your client may show a different list.
domshell_tabsdomshell_heredomshell_lsdomshell_cddomshell_pwddomshell_catdomshell_textdomshell_readdomshell_finddomshell_grepdomshell_treedomshell_extract_linksdomshell_extract_tabledomshell_refreshdomshell_navigatedomshell_opendomshell_clickdomshell_focusdomshell_scrolldomshell_jsdomshell_typedomshell_submitdomshell_backdomshell_forwarddomshell_closedomshell_screenshotdomshell_selectdomshell_waitdomshell_evaldomshell_diffdomshell_whoamidomshell_functionsdomshell_calldomshell_watchdomshell_fordomshell_scriptdomshell_eachBEFORE YOU INSTALL
What to know first
Tools you get
38 tools named in the project's documentation.
Requires
- Chrome with the DOMShell extension, its MCP Bridge enabled
- npx on PATH
- One token shared by the server (--token) and the extension's options page
Where it runs
All 4 documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
Install the DOMShell extension from the Chrome Web Store (link on the project home, pireno.com/domshell) — no build step required
Start the MCP server in a terminal and leave it running:
npx @apireno/domshell --allow-write --token <YOUR_TOKEN>Connect the extension: go to chrome://extensions/, find DOMShell, click Options, enable the MCP Bridge toggle, paste the same token (<YOUR_TOKEN>) and click Save — the status indicator turns green when connected
Add the entry for your client below. Claude Code, Gemini CLI and Cursor connect to http://localhost:3001/mcp?token=<YOUR_TOKEN> on the server you started
MCP Clients
Claude Desktop
{
"mcpServers": {
"domshell": {
"command": "npx",
"args": [
"-y",
"@apireno/domshell",
"--allow-write",
"--token",
"<YOUR_TOKEN>"
]
}
}
}Claude Code
{
"mcpServers": {
"domshell": {
"type": "http",
"url": "http://localhost:3001/mcp?token=<YOUR_TOKEN>"
}
}
}Gemini CLI
{
"mcpServers": {
"domshell": {
"httpUrl": "http://localhost:3001/mcp?token=<YOUR_TOKEN>"
}
}
}Cursor
{
"mcpServers": {
"domshell": {
"url": "http://localhost:3001/mcp?token=<YOUR_TOKEN>"
}
}
}