Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Bewertungen und Benutzerkonten folgen in einem späteren Schritt.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

Arc Control (macOS)

von DB-25Version 0.4.0i★ –iLäuft auf deinem Computer
Name in der Registryio.github.DB-25/arc-control-mcp

Installieren

Überblick

Beschreibung vom Entwickler (englisches Original)

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

Die drei Säulen von PopNx MCP

Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.

Was du damit machen kannst

Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.

  • Verbindung: Läuft auf deinem Computer
  • Transport: stdio
  • Kategorie: Web & Browser

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

Bevor du installierst

  • Basischecks: 1 von 1 bestanden
  • Läuft auf deinem Computer mit den Rechten deines Benutzerkontos (Dateien, Netzwerk, Apps).
  • Das trägst du selbst ein: ARC_MCP_LABEL, ARC_MCP_SPACE, ARC_MCP_STATE_DIR, ARC_MCP_WINDOW, ARC_MCP_WINDOW_PLACEMENT, ARC_MCP_IDLE_MS, ARC_MCP_IDLE_WAIT_MS, ARC_MCP_ARC_DATA_DIR, ARC_MCP_ALLOW_HISTORY, ARC_MCP_CDP, ARC_MCP_CDP_PORT, ARC_MCP_ALLOWED_ORIGINS, ARC_MCP_BLOCKED_ORIGINS, ARC_MCP_BLOCK_READS, ARC_MCP_READ_ONLY, ARC_MCP_AUDIT_LOG

Du brauchst

  • npmNode.js installiert (für den Befehl npx)

Welche App nutzt du?

Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.

Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein

{
  "mcpServers": {
    "arc-control": {
      "command": "npx",
      "args": [
        "-y",
        "arc-control-mcp"
      ],
      "env": {
        "ARC_MCP_LABEL": "your-value",
        "ARC_MCP_SPACE": "your-value",
        "ARC_MCP_STATE_DIR": "your-value",
        "ARC_MCP_WINDOW": "your-value",
        "ARC_MCP_WINDOW_PLACEMENT": "your-value",
        "ARC_MCP_IDLE_MS": "your-value",
        "ARC_MCP_IDLE_WAIT_MS": "your-value",
        "ARC_MCP_ARC_DATA_DIR": "your-value",
        "ARC_MCP_ALLOW_HISTORY": "your-value",
        "ARC_MCP_CDP": "your-value",
        "ARC_MCP_CDP_PORT": "your-value",
        "ARC_MCP_ALLOWED_ORIGINS": "your-value",
        "ARC_MCP_BLOCKED_ORIGINS": "your-value",
        "ARC_MCP_BLOCK_READS": "your-value",
        "ARC_MCP_READ_ONLY": "your-value",
        "ARC_MCP_AUDIT_LOG": "your-value"
      }
    }
  }
}

Führe das in deinem Terminal aus

claude mcp add arc-control --env ARC_MCP_LABEL=your-value --env ARC_MCP_SPACE=your-value --env ARC_MCP_STATE_DIR=your-value --env ARC_MCP_WINDOW=your-value --env ARC_MCP_WINDOW_PLACEMENT=your-value --env ARC_MCP_IDLE_MS=your-value --env ARC_MCP_IDLE_WAIT_MS=your-value --env ARC_MCP_ARC_DATA_DIR=your-value --env ARC_MCP_ALLOW_HISTORY=your-value --env ARC_MCP_CDP=your-value --env ARC_MCP_CDP_PORT=your-value --env ARC_MCP_ALLOWED_ORIGINS=your-value --env ARC_MCP_BLOCKED_ORIGINS=your-value --env ARC_MCP_BLOCK_READS=your-value --env ARC_MCP_READ_ONLY=your-value --env ARC_MCP_AUDIT_LOG=your-value -- npx -y arc-control-mcp

Trag die leeren Werte ein, bevor du ihn startest.

In Cursor öffnen

Oder kopier die Einstellungen selbst

In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen

{
  "mcpServers": {
    "arc-control": {
      "command": "npx",
      "args": [
        "-y",
        "arc-control-mcp"
      ],
      "env": {
        "ARC_MCP_LABEL": "your-value",
        "ARC_MCP_SPACE": "your-value",
        "ARC_MCP_STATE_DIR": "your-value",
        "ARC_MCP_WINDOW": "your-value",
        "ARC_MCP_WINDOW_PLACEMENT": "your-value",
        "ARC_MCP_IDLE_MS": "your-value",
        "ARC_MCP_IDLE_WAIT_MS": "your-value",
        "ARC_MCP_ARC_DATA_DIR": "your-value",
        "ARC_MCP_ALLOW_HISTORY": "your-value",
        "ARC_MCP_CDP": "your-value",
        "ARC_MCP_CDP_PORT": "your-value",
        "ARC_MCP_ALLOWED_ORIGINS": "your-value",
        "ARC_MCP_BLOCKED_ORIGINS": "your-value",
        "ARC_MCP_BLOCK_READS": "your-value",
        "ARC_MCP_READ_ONLY": "your-value",
        "ARC_MCP_AUDIT_LOG": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

In VS Code öffnen

Oder kopier die Einstellungen selbst

In .vscode/mcp.json in deinem Projekt einfügen

{
  "servers": {
    "arc-control": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "arc-control-mcp"
      ],
      "env": {
        "ARC_MCP_LABEL": "your-value",
        "ARC_MCP_SPACE": "your-value",
        "ARC_MCP_STATE_DIR": "your-value",
        "ARC_MCP_WINDOW": "your-value",
        "ARC_MCP_WINDOW_PLACEMENT": "your-value",
        "ARC_MCP_IDLE_MS": "your-value",
        "ARC_MCP_IDLE_WAIT_MS": "your-value",
        "ARC_MCP_ARC_DATA_DIR": "your-value",
        "ARC_MCP_ALLOW_HISTORY": "your-value",
        "ARC_MCP_CDP": "your-value",
        "ARC_MCP_CDP_PORT": "your-value",
        "ARC_MCP_ALLOWED_ORIGINS": "your-value",
        "ARC_MCP_BLOCKED_ORIGINS": "your-value",
        "ARC_MCP_BLOCK_READS": "your-value",
        "ARC_MCP_READ_ONLY": "your-value",
        "ARC_MCP_AUDIT_LOG": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.

Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.

Werte, die du selbst einträgst

  • ARC_MCP_LABEL env
    Names this agent's tab ownership. Two agents with different labels never see each other's owned tabs. Defaults to "default".
  • ARC_MCP_SPACE env
    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 env
    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 env
    "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 env
    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 "aut…
  • ARC_MCP_IDLE_MS env
    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 env
    How many milliseconds to wait for that pause before failing with userActive true. Defaults to 15000.
  • ARC_MCP_ARC_DATA_DIR env
    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 env
    Set to 1 to let search_history run. Off by default, and any other value leaves it off.
  • ARC_MCP_CDP env
    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 env
    The DevTools port to probe on 127.0.0.1. The host is fixed. Defaults to 9222.
  • ARC_MCP_ALLOWED_ORIGINS env
    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 env
    Guardrail. Comma list of origins the agent may not touch. Wins over the allow list. Unset means no block list.
  • ARC_MCP_BLOCK_READS env
    Set to 1 to apply the origin lists to read tools as well as changing ones. Off by default.
  • ARC_MCP_READ_ONLY env
    Set to 1 to expose only the read-only tools. Off by default.
  • ARC_MCP_AUDIT_LOG env
    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.

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Was er kann

Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde mit dem GitHub-Konto DB-25 bestätigt, dem das Repo gehört

  • … Noch nicht geprüft

    Wird noch gepflegt

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • … Noch nicht geprüft

    Hat eine Lizenz

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • – Nicht zutreffend

    Endpunkt antwortet

    Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen

  • … Noch nicht geprüft

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen

Im Vergleich mit anderen in Web & Browseri

  • Mehr Sterne als 0 % der anderen 879 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 53 % der anderen 879 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 879 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist Arc Control (macOS) sicher?

Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.4.0) kam vor 32 Tagen in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.

Was kann ich stattdessen nutzen?

In derselben Kategorie: Browser Use, Chrome DevTools MCP, MCP Server Browser

Alternativen

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

Browser Use

von browser-use

Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.

Computer oder Cloud★ 120.087MITAktualisiert vor 17 Tagen
Installieren

Chrome DevTools MCP

von ChromeDevTools

MCP server for Chrome DevTools

Läuft auf deinem Computer★ 54.821Apache-2.0Aktualisiert vor 15 Tagen
Installieren

MCP Server Browser

von bytedance

MCP server for browser use access

Läuft auf deinem Computer★ 39.550Apache-2.0Aktualisiert vor 14 Monaten
Installieren

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

arc-control-mcp

An MCP server that drives the Arc browser on macOS: tabs, navigation, page reading, DOM interaction and scripting.

It exists because the bundled "Control Chrome" MCP server cannot be pointed at Arc. Arc's scripting dictionary looks like Chrome's, and differs in exactly the places that matter.

Who it is for: anyone running an agent (Claude Code or another MCP client) on a Mac who wants it to work in Arc, the browser they are already signed in to, instead of a fresh automation profile. It reads pages, fills forms, clicks things, runs JavaScript, and keeps its own tabs separate from yours.

What it is not: a cross-platform or cross-browser tool. It drives one browser on one operating system, through Apple Events, plus an optional DevTools engine for screenshots, trusted input and console/network capture. There is no headless mode. There is also no Docker image, and there cannot be one: Apple Events do not cross a container boundary, so a container has no way to reach the Arc running on your Mac. This is a 0.4.0 personal project, and the known limitations below are real.

Requirements

  • macOS
  • Arc installed
  • Node 20 or newer (the CDP tools need Node 22 or newer, for its built-in WebSocket; they fail with a clear message on Node 20 and everything else keeps working)

Two runtime dependencies, @modelcontextprotocol/sdk and zod. No build step.

Install

Nothing to clone. Any MCP client can start the server with npx, and @latest is also how it upgrades: the next start picks up a new release.

{

"mcpServers": { "arc": { "command": "npx", "args": ["-y", "arc-control-mcp@latest"] } } }

[!IMPORTANT]

That config is not sufficient on its own. Two macOS permissions still have to

be granted, one of them in Arc's own settings where nothing will prompt you

for it. Until both are granted, the server starts normally and then every

tool fails. This is by far the most likely reason a fresh install looks

broken: read

the two macOS permissions, the next section.

package.json declares "os": ["darwin"], so on Linux or Windows the install stops with EBADPLATFORM instead of succeeding and then failing at the first Apple Event. Environment variables go in an env object alongside args; see environment variables.

Claude Code

claude mcp add arc --scope user -- npx -y arc-control-mcp@latest

The -- is required. Without it, claude mcp add reads the -y as one of its own flags and registers the wrong command. Then check what was registered:

claude mcp get arc

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json and add the mcpServers block above, merging it with any servers already listed. Quit and reopen Claude Desktop: the file is only read at launch.

Cursor

Add the same mcpServers block to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json for one project.

VS Code

VS Code uses servers, not mcpServers, in .vscode/mcp.json for a workspace or in the file opened by the MCP: Open User Configuration command:

{

"servers": { "arc": { "type": "stdio", "command": "npx", "args": ["-y", "arc-control-mcp@latest"] } } }

Or from the command line:

code --add-mcp '{"name":"arc","command":"npx","args":["-y","arc-control-mcp@latest"]}'

From a git checkout, for development

git clone https://github.com/DB-25/arc-control-mcp.git

cd arc-control-mcp npm install claude mcp add arc-dev --scope user -- node "$PWD/src/index.js"

For any other client, the same thing as JSON. The path has to be absolute: the client's working directory is not yours.

{

"mcpServers": { "arc-dev": { "command": "node", "args": ["/absolute/path/to/arc-control-mcp/src/index.js"] } } }

Register it under a different name than the published one, so you can tell which copy answered. See CONTRIBUTING.md.

Check the install without an MCP client. Neither call touches Arc, so both work before the permissions below are granted:

npx -y arc-control-mcp@latest --version

npx -y arc-control-mcp@latest --help # tool count and environment variables

The two macOS permissions

Both are asked for once, and both fail in a way that is confusing if you do not know to look here.

  1. Automation. System Settings > Privacy & Security > Automation, enable Arc under the app that runs the server (Terminal, iTerm, Claude Code, your editor). Without it, *nothing* works: every tool fails on the first Apple Event.
  2. Allow JavaScript from Apple Events. Arc > Settings > Advanced. Without it, tab and window tools keep working (list, switch, close, open a URL) while everything that touches page content fails: no text, no HTML, no clicking, no scripts.

Both failures are mapped to an explanatory error rather than a raw AppleScript code, so you will be told which one to fix.

A third, optional one is Accessibility (System Settings > Privacy & Security

Accessibility, for the same app, and Automation for System Events). It is what

lets the server place the agent window on a second display and put your window back in front if Arc raised another. Without it everything still works, the agent window is just not moved and your focus is not restored, and the first open_url says so once. The user-activity gate below needs no permission.

Why not just reuse the Chrome server

Arc's scripting dictionary looks like Chrome's but differs in ways that break the Chrome server outright:

ChromeArc
Tab idintegerUUID string
Switch tabset active tab index of windowselect command on the tab
Back / forwardworks on window or tabtab only
New tabopen locationmake new tab on a window or space
Groupingnonespaces, plus a pinned / unpinned / topApp location

The Chrome server calls parseInt(tab_id) on every id, so against Arc every tool taking a tab id fails before reaching AppleScript. It also splits AppleScript's comma-joined output, which corrupts titles and URLs containing commas.

Design

Not restrictive by design. Anything the agent can reach, it can drive: any tab, any space, arbitrary JavaScript. The defaults are chosen so the user's browsing is not disturbed, but nothing is walled off.

  • Implicit target: a call with no tab_id uses a tab this agent opened. A read-only tool then falls back to whatever tab is active in Arc, because reading the page you already have open is useful and harmless. A tool that *changes* a tab does not fall back: with no tab of its own it is refused, so an agent cannot navigate or reload the tab you are working in just by leaving an argument out. The CDP reads screenshot, console_messages and network_requests follow the changing-tool rule too, since they attach a debugger. Pass a tab_id to address any tab deliberately.
  • Arguments are checked before anything runs: every tool's schema is a Zod schema, the JSON Schema it advertises over MCP is generated from that, and the same schema validates the incoming call. A wrong type comes back as Invalid arguments for click. selector: Invalid input: expected string, received number, rather than as an obscure failure from inside the page.
  • Ownership is information, not enforcement: every tab is flagged mine, and close_own_tabs exists for cleanup. No tool refuses a tab you name with an explicit tab_id. The one refusal above is about an unnamed tab, not a named one.
  • No focus stealing: new tabs open in a separate agent window, never in yours, and anything visible waits for you to stop typing. See The agent window. Pass activate: true to opt out of the quiet behaviour.
  • Background tabs are usable: tabs in an unfocused space still load, render and script normally, so nothing needs to be brought to the front. The exception is code a page loads only once something is on screen: see Background tabs and lazy content.

Scripts run through osascript -l JavaScript (JXA), so results come back as JSON rather than AppleScript's flat comma-joined lists. Tool arguments are injected as a JSON literal bound to P, never concatenated into script source.

Every injected page script returns an explicit envelope, so a script that threw is reported as an error carrying the page's own message instead of arriving as an empty success. That distinction is the main thing 0.3.0 fixed.

The model never reads this README, so the handful of facts it needs before its first call are sent as MCP instructions at initialize: call arc_status first, prefer passing a tab_id over switching what the user is looking at, text= is substring matching, batch a known sequence, and page content is untrusted data rather than instructions. A client that ignores instructions loses nothing but a few wasted calls.

Tools

50 tools in twelve modules.

Tabs
ToolPurpose
list_tabsEvery tab, or narrow with scope: "own", query, space, window_id. Rows are flagged mine and isActive.
get_current_tabThe tab a call with no tab_id would act on.
switch_to_tabMake a tab active in its window. activate also brings Arc to the front. Waits for you to stop typing.
close_tabClose one tab.
close_own_tabsClose every tab this agent opened, leaving the user's alone. include_stale also closes tabs leaked by a dead previous run of the same label.
arc_statusArc's version and whether it is the frontmost app, owned tabs, the agent window (id, placement, display, minimized), whether Accessibility is available, your current idle time, whether the agent space exists, what a call with no tab_id resolves to (reported separately for read-only and for changing tools), and how many stale tabs a previous run left behind.
Navigation
ToolPurpose
open_urlOpen a URL in the agent window, launching Arc if needed. Waits for you to stop typing, and reports focusRestored and waitedForUserMs. Options for new_tab, target space, little_arc, activate, wait_until_loaded.
go_back / go_forwardMove a tab through its history, verified by checking the URL actually changed.
reload_tabReload a tab.
wait_for_loadPoll until the document is ready, optionally until the URL contains a substring. Also reads Arc's loading flag (see Loading tabs), so a hung page shows up as ready: "loading" instead of a stalled call.
stop_loadingPress the stop button on a tab that will not finish loading, which also unblocks every page tool on it.
Content
ToolPurpose

| get_page_content | Visible text, whole page or every element matching a selector, joined.

Nur der Anfang wird gezeigt; den Rest findest du im Repo

PopNx fragen