NestDaddy

Arc Control (macOS)

io.github.DB-25/arc-control-mcp · v0.4.0

Arc browser MCP for macOS: agent window, snapshots, DevTools input, guardrails

Connect Runs on your machine

Terminal
claude mcp add arc-control-mcp -e ARC_MCP_LABEL=<ARC_MCP_LABEL> -e ARC_MCP_SPACE=<ARC_MCP_SPACE> -e ARC_MCP_STATE_DIR=<ARC_MCP_STATE_DIR> -e ARC_MCP_WINDOW=<ARC_MCP_WINDOW> -e ARC_MCP_WINDOW_PLACEMENT=<ARC_MCP_WINDOW_PLACEMENT> -e ARC_MCP_IDLE_MS=<ARC_MCP_IDLE_MS> -e ARC_MCP_IDLE_WAIT_MS=<ARC_MCP_IDLE_WAIT_MS> -e ARC_MCP_ARC_DATA_DIR=<ARC_MCP_ARC_DATA_DIR> -e ARC_MCP_ALLOW_HISTORY=<ARC_MCP_ALLOW_HISTORY> -e ARC_MCP_CDP=<ARC_MCP_CDP> -e ARC_MCP_CDP_PORT=<ARC_MCP_CDP_PORT> -e ARC_MCP_ALLOWED_ORIGINS=<ARC_MCP_ALLOWED_ORIGINS> -e ARC_MCP_BLOCKED_ORIGINS=<ARC_MCP_BLOCKED_ORIGINS> -e ARC_MCP_BLOCK_READS=<ARC_MCP_BLOCK_READS> -e ARC_MCP_READ_ONLY=<ARC_MCP_READ_ONLY> -e ARC_MCP_AUDIT_LOG=<ARC_MCP_AUDIT_LOG> -- npx -y [email protected]
claude_desktop_config.json
{
  "mcpServers": {
    "arc-control-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "ARC_MCP_LABEL": "<ARC_MCP_LABEL>",
        "ARC_MCP_SPACE": "<ARC_MCP_SPACE>",
        "ARC_MCP_STATE_DIR": "<ARC_MCP_STATE_DIR>",
        "ARC_MCP_WINDOW": "<ARC_MCP_WINDOW>",
        "ARC_MCP_WINDOW_PLACEMENT": "<ARC_MCP_WINDOW_PLACEMENT>",
        "ARC_MCP_IDLE_MS": "<ARC_MCP_IDLE_MS>",
        "ARC_MCP_IDLE_WAIT_MS": "<ARC_MCP_IDLE_WAIT_MS>",
        "ARC_MCP_ARC_DATA_DIR": "<ARC_MCP_ARC_DATA_DIR>",
        "ARC_MCP_ALLOW_HISTORY": "<ARC_MCP_ALLOW_HISTORY>",
        "ARC_MCP_CDP": "<ARC_MCP_CDP>",
        "ARC_MCP_CDP_PORT": "<ARC_MCP_CDP_PORT>",
        "ARC_MCP_ALLOWED_ORIGINS": "<ARC_MCP_ALLOWED_ORIGINS>",
        "ARC_MCP_BLOCKED_ORIGINS": "<ARC_MCP_BLOCKED_ORIGINS>",
        "ARC_MCP_BLOCK_READS": "<ARC_MCP_BLOCK_READS>",
        "ARC_MCP_READ_ONLY": "<ARC_MCP_READ_ONLY>",
        "ARC_MCP_AUDIT_LOG": "<ARC_MCP_AUDIT_LOG>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "arc-control-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "ARC_MCP_LABEL": "<ARC_MCP_LABEL>",
        "ARC_MCP_SPACE": "<ARC_MCP_SPACE>",
        "ARC_MCP_STATE_DIR": "<ARC_MCP_STATE_DIR>",
        "ARC_MCP_WINDOW": "<ARC_MCP_WINDOW>",
        "ARC_MCP_WINDOW_PLACEMENT": "<ARC_MCP_WINDOW_PLACEMENT>",
        "ARC_MCP_IDLE_MS": "<ARC_MCP_IDLE_MS>",
        "ARC_MCP_IDLE_WAIT_MS": "<ARC_MCP_IDLE_WAIT_MS>",
        "ARC_MCP_ARC_DATA_DIR": "<ARC_MCP_ARC_DATA_DIR>",
        "ARC_MCP_ALLOW_HISTORY": "<ARC_MCP_ALLOW_HISTORY>",
        "ARC_MCP_CDP": "<ARC_MCP_CDP>",
        "ARC_MCP_CDP_PORT": "<ARC_MCP_CDP_PORT>",
        "ARC_MCP_ALLOWED_ORIGINS": "<ARC_MCP_ALLOWED_ORIGINS>",
        "ARC_MCP_BLOCKED_ORIGINS": "<ARC_MCP_BLOCKED_ORIGINS>",
        "ARC_MCP_BLOCK_READS": "<ARC_MCP_BLOCK_READS>",
        "ARC_MCP_READ_ONLY": "<ARC_MCP_READ_ONLY>",
        "ARC_MCP_AUDIT_LOG": "<ARC_MCP_AUDIT_LOG>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "arc-control-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "ARC_MCP_LABEL": "<ARC_MCP_LABEL>",
        "ARC_MCP_SPACE": "<ARC_MCP_SPACE>",
        "ARC_MCP_STATE_DIR": "<ARC_MCP_STATE_DIR>",
        "ARC_MCP_WINDOW": "<ARC_MCP_WINDOW>",
        "ARC_MCP_WINDOW_PLACEMENT": "<ARC_MCP_WINDOW_PLACEMENT>",
        "ARC_MCP_IDLE_MS": "<ARC_MCP_IDLE_MS>",
        "ARC_MCP_IDLE_WAIT_MS": "<ARC_MCP_IDLE_WAIT_MS>",
        "ARC_MCP_ARC_DATA_DIR": "<ARC_MCP_ARC_DATA_DIR>",
        "ARC_MCP_ALLOW_HISTORY": "<ARC_MCP_ALLOW_HISTORY>",
        "ARC_MCP_CDP": "<ARC_MCP_CDP>",
        "ARC_MCP_CDP_PORT": "<ARC_MCP_CDP_PORT>",
        "ARC_MCP_ALLOWED_ORIGINS": "<ARC_MCP_ALLOWED_ORIGINS>",
        "ARC_MCP_BLOCKED_ORIGINS": "<ARC_MCP_BLOCKED_ORIGINS>",
        "ARC_MCP_BLOCK_READS": "<ARC_MCP_BLOCK_READS>",
        "ARC_MCP_READ_ONLY": "<ARC_MCP_READ_ONLY>",
        "ARC_MCP_AUDIT_LOG": "<ARC_MCP_AUDIT_LOG>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
ARC_MCP_LABEL
Optional
Names this agent's tab ownership. Two agents with different labels never see each other's owned tabs. Defaults to "default".
ARC_MCP_SPACE
Optional
With ARC_MCP_WINDOW=space, the Arc space new tabs open into, when a space with that name exists. Arc will not let a script create a space, so make it by hand. Defaults to "Agent".
ARC_MCP_STATE_DIR
Optional
Directory where per-session tab ownership is recorded, so a restarted agent can clean up the tabs its previous run left behind. Defaults to ~/Library/Application Support/arc-control-mcp.
ARC_MCP_WINDOW
Optional
"dedicated" keeps agent tabs in one separate agent window, never the user's own. "space" puts them in the Agent space of the user's window. Defaults to "dedicated".
ARC_MCP_WINDOW_PLACEMENT
Optional
Where the agent window goes once, at creation: "auto" (largest non-main display, else where Arc puts it), "second-display", "minimized" (experimental) or "none". Needs Accessibility. Defaults to "auto".
ARC_MCP_IDLE_MS
Optional
How many milliseconds the user must have been idle before the server does anything visible. 0 turns the activity gate off. Defaults to 1500.
ARC_MCP_IDLE_WAIT_MS
Optional
How many milliseconds to wait for that pause before failing with userActive true. Defaults to 15000.
ARC_MCP_ARC_DATA_DIR
Optional
Directory the local data tools (sidebar_tree, find_stale_tabs, search_archive, search_history) read Arc's files from. Defaults to ~/Library/Application Support/Arc.
ARC_MCP_ALLOW_HISTORY
Optional
Set to 1 to let search_history run. Off by default, and any other value leaves it off.
ARC_MCP_CDP
Optional
Set to 0 to disable the DevTools engine (trusted input, screenshots, console and network capture). On by default, and inert until Arc is launched with --remote-debugging-port.
ARC_MCP_CDP_PORT
Optional
The DevTools port to probe on 127.0.0.1. The host is fixed. Defaults to 9222.
ARC_MCP_ALLOWED_ORIGINS
Optional
Guardrail. Comma list of origins the agent may touch (host, *.host, scheme://host[:port], file://, about:). Anything not listed is refused. Unset means no allow list.
ARC_MCP_BLOCKED_ORIGINS
Optional
Guardrail. Comma list of origins the agent may not touch. Wins over the allow list. Unset means no block list.
ARC_MCP_BLOCK_READS
Optional
Set to 1 to apply the origin lists to read tools as well as changing ones. Off by default.
ARC_MCP_READ_ONLY
Optional
Set to 1 to expose only the read-only tools. Off by default.
ARC_MCP_AUDIT_LOG
Optional
Path of a file that gets one JSON line per changing call (time, tool, tab, origin, ok, error), never typed values or script code. Unset means no audit log.

Details

Package[email protected] (NPM, stdio)
First published5 Oct 2026
Last updated5 Oct 2026
Registry nameio.github.DB-25/arc-control-mcp

More browser automation servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.