A side-by-side look at the Arc Control (macOS) and Camoufox MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Arc Control (macOS) for browser automation work as a local process; choose Camoufox MCP for browser automation as a local process. You can also run both side by side in one mcpServers block.
list_tabs, get_current_tab, switch_to_tab.create_session, list_sessions, save_session.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Browser Automation | Browser Automation |
| Quality signal | 56/100 · Good | 52/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 1 | 7 |
| Directory activity | 1 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
| Tools | 38 | 35 |
| Full listing | View Arc Control (macOS) | View Camoufox MCP |
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 changi…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_backMove 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](#loading-tabs-and-stop_loading)), 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.get_page_contentVisible text, whole page or every element matching a selector, joined. Always reports `matched`, so a partial answer is never silent, and flags truncation.create_sessionCreate a new isolated session, optionally pre-loading cookies/localStorage from a JSON filelist_sessionsList all sessions with their page counts and metadatasave_sessionExport a session's cookies and localStorage to a JSON fileclose_sessionClose a session and all its pageslist_context_filesList available context files registered in settingsnew_pageCreate a new page, optionally in a specific sessionlist_pagesList all open pages with their session IDsselect_pageSet a page as activeclose_pageClose a pagenavigate_pageNavigate to URL, back, forward, or reloadclickClick an element by UIDhoverHover over an elementPaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"arc-control-macos": {
"command": "npx",
"args": [
"-y",
"arc-control-mcp@latest"
]
}
}
}
{
"mcpServers": {
"camoufox-mcp": {
"command": "npx",
"args": [
"-y",
"camoufox-mcp"
]
}
}
}