Prototype · Preview: every server in the official registry, synced every 30 minutes. Sign in with Google to write reviews.
PopNx MCPMCP servers for people who use AI · explained in plain words

mac-control-mcp

by AdelElo13version 0.10.3i★ 18iRuns on your computer
Registry nameio.github.AdelElo13/mac-control-mcp

How to install

Overview

Description from the maker (original English)

Native Swift macOS automation — 153 tools: AX, EventKit, voice, browser DOM, undo.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Web & browsers

Install

Pick the AI app you use, then copy the settings.

Passed 2/2 checks · Runs on your computer

First: which AI do you use?

Pick your app and the steps appear below.

Works with Claude, with some setup first

No key, nothing to install · Only the Claude desktop app (Windows or Mac), not the web or phone

  1. Download the maker’s installer

    Download the maker’s .mcpb file

    The .mcpb file comes straight from the maker; we do not change it

  2. Double-click the file, then click Install in the Claude desktop app

  3. Try it

    Use mac-control-mcp and tell me what you can do for me, then show me one thing

    ✓ If Claude says it is using mac-control-mcp or shows a mac-control-mcp tool in the answer, you are connected

Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version

ChatGPT cannot connect mac-control-mcp yet

mac-control-mcp runs on your computer, but ChatGPT can only connect servers that run on the web

What you can do instead

A · Use an app that can connect mac-control-mcp

  • No key, nothing to install · Only the Claude desktop app (Windows or Mac), not the web or phone
  • Install Node.js on your computer first (one time)
  • Install Node.js on your computer first (one time)
  • Install Node.js on your computer first (one time)

B · Others in Web & browsers that work with ChatGPT

Picked from the most used in the same category, only ones that connect by address with no key

Works with Claude Code, with some setup first

Install Node.js on your computer first (one time)

  1. Install Node.js

    One time only; it works for every server that needs Node.js

    Open the Node.js download page ↗

  2. Open Terminal

    Mac: press Command+Space and type Terminal · Windows: open PowerShell

  3. Paste this command and press Enter

    claude mcp add mac-control -- npx -y mac-control-mcp
  4. Type /mcp in Claude Code

    You should see mac-control-mcp listed as connected

  5. Try it

    Use mac-control-mcp and tell me what you can do for me, then show me one thing

    ✓ If Claude Code says it is using mac-control-mcp or shows a mac-control-mcp tool in the answer, you are connected

Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with Cursor, with some setup first

Install Node.js on your computer first (one time)

  1. Install Node.js

    One time only; it works for every server that needs Node.js

    Open the Node.js download page ↗

  2. Click this button to open Cursor

    Open in Cursor

    Cursor asks you to confirm; click Install

  3. Open the AI chat in Cursor in Agent mode

  4. Try it

    Use mac-control-mcp and tell me what you can do for me, then show me one thing

    ✓ If Cursor says it is using mac-control-mcp or shows a mac-control-mcp tool in the answer, you are connected

Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with VS Code, with some setup first

Install Node.js on your computer first (one time)

  1. Install Node.js

    One time only; it works for every server that needs Node.js

    Open the Node.js download page ↗

  2. Click this button to open VS Code

    Open in VS Code

    VS Code asks you to confirm; click Install

  3. Open the AI chat in VS Code in Agent mode

  4. Try it

    Use mac-control-mcp and tell me what you can do for me, then show me one thing

    ✓ If VS Code says it is using mac-control-mcp or shows a mac-control-mcp tool in the answer, you are connected

Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.

See every app that uses MCP →

JSON settings are under “For developers” below

Stuck? Ask people who use mac-control-mcp💬 Discussion →
For developers: Terminal commands and JSON settings

Installed on your computer

Claude Code

claude mcp add mac-control -- npx -y mac-control-mcp

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "mac-control": {
      "command": "npx",
      "args": [
        "-y",
        "mac-control-mcp"
      ]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "mac-control": {
      "command": "npx",
      "args": [
        "-y",
        "mac-control-mcp"
      ]
    }
  }
}

VS Code (mcp.json)

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

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

At a glance

Downloads per weeki
49/wk
Licencei
No licence stated
Connection
Runs on your computer
Latest versioni
0.10.3
Published to registryi
Oct 16, 2026
Code last changedi
Oct 16, 2026
Maker
AdelElo13
Packages
mcpb: https://github.com/AdelElo13/mac-control-mcp/releases/downlo
npm: mac-control-mcp
Website
github.com
Registry status
Active

Which apps can use it

Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.

Run on your computer in

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

All apps, with pros and cons →

Related guides

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 11, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account AdelElo13, which owns the repo

  • ✓ Pass

    Still maintained

    Code last changed 26 days ago

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Discussion

Ask, share a tip or report that it does not work. Sorted by what people marked helpful.

No posts yet. Be the first to ask or share.

Posts here are written by users, not the PopNx team.

Sign in with Google to post

User reviews

No reviews yet

Sign in with Google to write a review

Compared with others in Web & browsersi

  • More stars than 94% of the other 1454 servers in this category
  • Published to the registry more recently than 55% of the other 1454 servers in this category
  • Basic checks equal to or better than 100% of the other 1454 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is mac-control-mcp safe?

It passed 2 of 2 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed 26 days ago, and the latest version (0.10.3) reached the registry 26 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need MCPB, Node.js on your computer.

What can I use instead?

In the same category: Browser Use, Scrapling MCP Server, Chrome DevTools MCP

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Browser Use

Lets AI do web tasks for you, such as filling forms, searching and extracting data, in the maker’s cloud browsers or on your computer.

by browser-useWidely used↓ 1.7M/wk★ 120.5KUpdated 21 days ago

Computer or cloud✓ browser-use.com

Scrapling MCP Server

Web scraping with stealth HTTP, real browsers, and Cloudflare bypass. CSS selectors supported.

by D4VinciWidely used↓ 396.9K/wk★ 100.8KUpdated 6 days ago

Runs on your computer

Chrome DevTools MCP

Lets AI use Chrome’s developer tools to inspect pages, find what makes them slow and spot errors. Made by the Chrome DevTools team.

by ChromeDevToolsWidely used↓ 1.9M/wk★ 55KUpdated 19 days ago

Runs on your computer

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

mac-control-mcp

Native Swift MCP server for full macOS automation. 153 tools in one signed .app bundle — no Python, no Node runtime, no Electron. Full list with parameters: docs/TOOLS.md.

Gives any MCP-compatible client (Claude Desktop, Claude Code, Cursor, etc.) the ability to:

  • Read and mutate the Accessibility tree of any running app
  • Drive Safari and Chrome (tabs, navigation, JS eval)
  • Capture the screen, a display, or a specific window (ScreenCaptureKit)
  • OCR what's on screen
  • Click, type, scroll, drag, send key events
  • Control windows (move / resize / fullscreen / minimize / main)
  • Manage the clipboard
  • Launch / activate / quit apps
  • Search Spotlight's index (NSMetadataQuery) and launch results
  • Toggle dark mode, volume, list displays, inspect menus

Install

Requires macOS 14.0+. Four options, in order of simplicity:

1. One-click install (Claude Desktop, recommended)

The server is published as an MCP Bundle — a zip with a manifest.json that Claude Desktop reads directly:

  1. Download mac-control-mcp-v\ .mcpb from the latest release.
  2. Double-click the .mcpb file. Claude Desktop opens an install dialog.
  3. Click Install. The server is registered under the name mac-control-mcp and available immediately in new chats.
  4. First tool call triggers the macOS TCC consent prompts (Screen Recording, Accessibility, Apple Events). Grant all three once — the bundle is Developer-ID signed and notarized, so grants persist across updates.

It's also listed on the official MCP Registry as io.github.AdelElo13/mac-control-mcp, so any MCP client that supports the registry will find it by searching for "mac-control".

2. Install via npm / npx

For clients that are configured with a command line rather than a file path. The npm package mac-control-mcp is a thin launcher: it has no runtime dependencies, and on install it downloads the notarized MacControlMCP.app for that exact version from this repo's GitHub release, verifies it against the published .sha256, refuses any archive entry that escapes the install directory, and re-checks the bundle with codesign --verify --deep --strict, spctl --assess --type execute and a pinned Team ID (A3W973JZ49). The first run therefore pulls ~3 MB; later runs are local.

Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json:

{

"mcpServers": { "mac-control-mcp": { "command": "npx", "args": ["-y", "mac-control-mcp"] } } }

Claude Code:

claude mcp add mac-control-mcp -- npx -y mac-control-mcp

Cursor — ~/.cursor/mcp.json:

{

"mcpServers": { "mac-control-mcp": { "command": "npx", "args": ["-y", "mac-control-mcp"] } } }

ChatGPT (developer mode, local MCP connector) — mcp.json:

{

"mcpServers": { "mac-control-mcp": { "command": "npx", "args": ["-y", "mac-control-mcp"], "transport": "stdio" } } }

Two flags are handled by the launcher itself instead of being forwarded to the binary:

npx -y mac-control-mcp --version    # version of the bundled .app

npx -y mac-control-mcp --app-path # path to MacControlMCP.app

--app-path is what you need when granting macOS permissions by hand. Note that TCC grants go to the MCP host application that launches this process (Claude Desktop, Cursor, your terminal), not to npx or to the script — run the permissions_status tool once from your client to see which grants are missing and which app they belong to.

MAC_CONTROL_MCP_SKIP_DOWNLOAD=1 skips the download (CI, sandboxed builds); HTTPS_PROXY and NO_PROXY are honoured.

3. Download the prebuilt app

If you don't use Claude Desktop or want manual control:

  1. Download MacControlMCP-v\ -macos-universal.tar.gz from the latest release.
  2. Extract and move MacControlMCP.app to ~/Applications/.
  3. Point your MCP client at the binary inside:
{

"mcpServers": { "mac-control-mcp": { "type": "stdio", "command": "/Users/you/Applications/MacControlMCP.app/Contents/MacOS/MacControlMCP" } } }

Add that block to ~/Library/Application Support/Claude/claude_desktop_config.json (Claude Desktop) or ~/.claude.json → mcpServers (Claude Code).

Verify the download with the published SHA-256:

shasum -a 256 MacControlMCP-v<version>-macos-universal.tar.gz

should match MacControlMCP-v -macos-universal.sha256 on the release

4. Build from source

For contributors or if you want to tweak the code. Requires Swift 6 / Xcode 16+:

git clone https://github.com/AdelElo13/mac-control-mcp.git

cd mac-control-mcp ./scripts/build-bundle.sh

Produces ~/Applications/MacControlMCP.app/Contents/MacOS/MacControlMCP. Without a Developer ID cert in your keychain it'll fall back to ad-hoc signing (works for local use, TCC grants reset on every rebuild).

To re-sign + re-notarise an existing Apple Developer account:

# one-time: store notary credentials in keychain

xcrun notarytool store-credentials "mac-control-mcp" \ --apple-id "you@example.com" --team-id "XXXXXXXXXX"

subsequent builds:

NOTARIZE_PROFILE=mac-control-mcp ./scripts/build-bundle.sh

Tool surface

Selected categories — this table is a curated subset, not the full list. For the complete, auto-generated tool reference (every tool, its description, and its required/optional parameters, regenerated straight from the tool registry so it can't drift), see [docs/TOOLS.md](docs/TOOLS.md).

CategoryTools
Permissionspermissions_status, request_permissions
Accessibilityfind_element(s), query_elements, list_elements, get_ui_tree, ax_tree_augmented, get_element_attributes, set_element_attribute, read_value, perform_element_action, wait_for_element, scroll_to_element
App lifecyclelist_apps, launch_app, activate_app, quit_app, force_quit_app, wait_for_app, focused_app
Windowslist_windows, focus_window, move_window, resize_window, set_window_state, wait_for_window, move_window_to_display
Inputclick, mouse_event, drag_and_drop, scroll, type_text, press_key, press_key_sequence, key_down, key_up, convert_coordinates
Menusclick_menu_path, list_menu_paths, list_menu_titles
Browserbrowser_list_tabs, browser_get_active_tab, browser_navigate, browser_new_tab, browser_close_tab, browser_eval_js, browser_dom_tree, browser_visible_text, browser_iframes
Screencapture_screen, capture_screen_v2, capture_window, capture_display, ocr_screen
Clipboardclipboard_read, clipboard_write, clipboard_clear
Spotlightspotlight_search, spotlight_open_result
Systemset_volume, set_dark_mode, list_displays
File dialogsfile_dialog_set_path, file_dialog_select_item, file_dialog_confirm, file_dialog_cancel, wait_for_file_dialog
Apple appsmail_send, imessage_send, imessage_list_recent, calendar_create_event, calendar_list_events, reminders_create, reminders_list, contacts_search
Voice & recordingspeech_to_text, text_to_speech, audio_record, record_screen
Undoundo_last_action, undo_peek

153 tools total — see docs/TOOLS.md for the complete, generated list.

Which tool when

Several tools overlap in purpose. Based on their actual implementations:

Screen capture — `capture_screen` vs `capture_screen_v2` vs `capture_window` vs `capture_display`

  • capture_screen — main display (or a rectangular region within it) to a PNG file, returns the file path + width/height. Simple, synchronous, no size limits applied.
  • capture_screen_v2 — main display only, but stores the PNG as a content-addressed artifact under ~/.mac-control-mcp/artifacts/ .png and returns {content_ref, bytes, sha256}. Defaults to inline=false and downscales to max_dimension/max_bytes (4000px / 4MB by default) specifically to avoid blowing up an MCP client's context window with a huge inline image (referenced in its own description as a fix for claude-code issues #13383/#45785). Prefer this one when the image is going back through an LLM context rather than straight to disk.
  • capture_window — screenshots one specific window by PID (optionally filtered by title_contains), not the whole display.
  • capture_display — screenshots one specific physical display by its index from list_displays, for multi-monitor setups.

Accessibility tree / element lookup — `find_element` vs `find_elements` vs `query_elements` vs `list_elements` vs `get_ui_tree` vs `ax_tree_augmented`

  • list_elements — lists actionable elements for a PID (a flat, practical "what can I click" view).
  • find_element — returns the *first* element matching a role/title filter for a PID.
  • find_elements — same matching as find_element, but returns *all* matches, not just the first.
  • query_elements — regex search over role/title/value (falls back to case-insensitive substring on invalid regex); use when a plain role/title filter isn't precise enough.
  • get_ui_tree — walks the *full* accessibility tree of a process, including containers, and assigns stable element IDs for follow-up calls. Heavier than list_elements/find_element(s), but the only one that gives you structure/hierarchy.
  • ax_tree_augmented — like get_ui_tree, but does one OCR pass and geometrically joins OCR-derived labels onto AX nodes that have no native label. Use it specifically for Electron/Chromium/Canvas apps where the native AX tree is sparse and unlabeled; it's the expensive option (an OCR pass), so reach for get_ui_tree first and fall back to this when nodes come back unlabeled.

Security model

  • Tools that write files (capture_*, ocr_screen) validate output_path via a strict allow-list — only the user-scoped temp dir (NSTemporaryDirectory()) and ~/Desktop, ~/Documents, ~/Downloads, ~/Pictures are accepted. Symlinks at the target path are rejected to prevent redirection. /tmp is deliberately excluded because it's shared across users and opens a TOCTOU window.
  • AppleScript string interpolation for browser_eval_js wraps user code in (0, eval)(…) via JSON.stringify, so quotes/newlines/unicode can't break out of the wrapper.
  • No network calls. Everything is local system integration.
  • Password fields are off limits in code, not by instruction. A field with role or subrole AXSecureTextField never returns its value or length, and every write route is refused with reason: secure_field: element writes, text_* edits, act, untargeted type_text, and text keys or Cmd+V via press_key, press_key_sequence and key_down while such a

Only the beginning is shown; read the rest in the repo