{
  "slug": "io-github-db-25-arc-control-mcp",
  "name": "io.github.DB-25/arc-control-mcp",
  "title": "Arc Control (macOS)",
  "description": "Arc browser MCP for macOS: agent window, snapshots, DevTools input, guardrails",
  "version": "0.4.0",
  "publishedAt": "2026-10-05T22:05:19.585674Z",
  "updatedAt": "2026-10-05T22:05:19.585674Z",
  "repoUrl": "https://github.com/DB-25/arc-control-mcp",
  "websiteUrl": "https://github.com/DB-25/arc-control-mcp",
  "namespace": {
    "type": "github",
    "owner": "DB-25"
  },
  "kind": "local",
  "packages": [
    {
      "registryType": "npm",
      "identifier": "arc-control-mcp",
      "version": "0.4.0",
      "transport": "stdio",
      "runtimeHint": null
    }
  ],
  "remotes": [],
  "envVars": [
    {
      "name": "ARC_MCP_LABEL",
      "isSecret": false,
      "isRequired": false,
      "description": "Names this agent's tab ownership. Two agents with different labels never see each other's owned tabs. Defaults to \"default\"."
    },
    {
      "name": "ARC_MCP_SPACE",
      "isSecret": false,
      "isRequired": false,
      "description": "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\"."
    },
    {
      "name": "ARC_MCP_STATE_DIR",
      "isSecret": false,
      "isRequired": false,
      "description": "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."
    },
    {
      "name": "ARC_MCP_WINDOW",
      "isSecret": false,
      "isRequired": false,
      "description": "\"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\"."
    },
    {
      "name": "ARC_MCP_WINDOW_PLACEMENT",
      "isSecret": false,
      "isRequired": false,
      "description": "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\"."
    },
    {
      "name": "ARC_MCP_IDLE_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "How many milliseconds the user must have been idle before the server does anything visible. 0 turns the activity gate off. Defaults to 1500."
    },
    {
      "name": "ARC_MCP_IDLE_WAIT_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "How many milliseconds to wait for that pause before failing with userActive true. Defaults to 15000."
    },
    {
      "name": "ARC_MCP_ARC_DATA_DIR",
      "isSecret": false,
      "isRequired": false,
      "description": "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."
    },
    {
      "name": "ARC_MCP_ALLOW_HISTORY",
      "isSecret": false,
      "isRequired": false,
      "description": "Set to 1 to let search_history run. Off by default, and any other value leaves it off."
    },
    {
      "name": "ARC_MCP_CDP",
      "isSecret": false,
      "isRequired": false,
      "description": "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."
    },
    {
      "name": "ARC_MCP_CDP_PORT",
      "isSecret": false,
      "isRequired": false,
      "description": "The DevTools port to probe on 127.0.0.1. The host is fixed. Defaults to 9222."
    },
    {
      "name": "ARC_MCP_ALLOWED_ORIGINS",
      "isSecret": false,
      "isRequired": false,
      "description": "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."
    },
    {
      "name": "ARC_MCP_BLOCKED_ORIGINS",
      "isSecret": false,
      "isRequired": false,
      "description": "Guardrail. Comma list of origins the agent may not touch. Wins over the allow list. Unset means no block list."
    },
    {
      "name": "ARC_MCP_BLOCK_READS",
      "isSecret": false,
      "isRequired": false,
      "description": "Set to 1 to apply the origin lists to read tools as well as changing ones. Off by default."
    },
    {
      "name": "ARC_MCP_READ_ONLY",
      "isSecret": false,
      "isRequired": false,
      "description": "Set to 1 to expose only the read-only tools. Off by default."
    },
    {
      "name": "ARC_MCP_AUDIT_LOG",
      "isSecret": false,
      "isRequired": false,
      "description": "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."
    }
  ],
  "category": "browser",
  "subcategory": "more",
  "company": "",
  "categoryAuto": true,
  "checks": [
    {
      "id": "source-linked",
      "label": "Source repository linked",
      "result": "pass",
      "detail": "https://github.com/DB-25/arc-control-mcp"
    },
    {
      "id": "version-pinned",
      "label": "Version pinned",
      "result": "pass",
      "detail": "Every package has an explicit version"
    },
    {
      "id": "secrets-requested",
      "label": "Secrets requested",
      "result": "info",
      "detail": "Asks for no secrets"
    },
    {
      "id": "known-registry",
      "label": "Known package registry",
      "result": "pass",
      "detail": "All packages come from npm, PyPI, OCI, NuGet or MCPB"
    },
    {
      "id": "namespace",
      "label": "Namespace ownership",
      "result": "info",
      "detail": "Name verified via GitHub account DB-25"
    },
    {
      "id": "meta-text",
      "label": "Registry text aimed at the AI",
      "result": "pass",
      "detail": "Description and settings contain no hidden characters or instructions to the AI"
    },
    {
      "id": "install-scripts",
      "label": "Install scripts",
      "result": "pass",
      "detail": "arc-control-mcp@0.4.0 runs nothing at install"
    },
    {
      "id": "code-flags",
      "label": "Code red flags",
      "result": "pass",
      "detail": "Read 48 files in arc-control-mcp@0.4.0: no obfuscation, encoded execution, credential reads or data-collection endpoints found"
    },
    {
      "id": "ai-text",
      "label": "Text aimed at the AI",
      "result": "pass",
      "detail": "No hidden characters or instructions to the AI in 48 files, including comments and the README"
    }
  ],
  "scannedAt": "2026-10-29",
  "level": "Scanned",
  "install": [
    {
      "label": "Claude Desktop (npm)",
      "kind": "claude_desktop_json",
      "text": "{\n  \"mcpServers\": {\n    \"arc-control-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"arc-control-mcp@0.4.0\"\n      ]\n    }\n  }\n}"
    }
  ],
  "curated": true,
  "stars": 2,
  "archived": false,
  "pushedAt": "2026-10-05T19:31:17Z",
  "health": {
    "score": 61,
    "parts": {
      "popularity": 0.21810151144748044,
      "activity": 0.99839165077817,
      "issues": null,
      "security": 1
    },
    "fail": 0,
    "warn": 0,
    "raw": {
      "stars": 2,
      "forks": 0,
      "downloads": 52,
      "hn": null,
      "issuesOpen": 0,
      "issuesClosed": 0,
      "prsMerged": 0,
      "commits90": 59,
      "release": "2026-10-05T22:05:21Z",
      "pushed": "2026-10-05T19:31:17Z",
      "growth": null,
      "growthDays": null,
      "archived": false
    },
    "at": "2026-10-31T07:42:38.200Z"
  }
}
