Control macOS system settings, apps, windows, audio, displays, screenshots, and Focus mode via MCP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Control macOS system settings, apps, windows, audio, displays, screenshots, and Focus mode via MCP. STDIO or Streamable HTTP.
macOS-only. This server controls the local macOS system β it requires the host machine to be running macOS. HTTP transport is supported for completeness, but the practical use case is stdio: run it locally and point your MCP client at it.
13 tools covering macOS system state, app and window management, audio routing, display control, screenshots, Finder integration, notifications, and Focus mode:
| Tool | Description |
|---|---|
macos_get_info | System snapshot: battery level and charging status, power source, Wi-Fi SSID, hostname, macOS version, uptime, and display count |
macos_check_permissions | Reports Accessibility, Screen Recording, Automation > Finder, and Notification status for the calling process |
macos_manage_apps | List, launch, quit, force-quit, hide, or show applications |
macos_manage_windows | List, focus, move, resize, move_resize, minimize, fullscreen, or close windows |
macos_control_volume | Get or set system output volume (0β100) and mute state |
macos_control_audio | List audio devices, get current defaults, or switch the default input/output device |
macos_control_appearance | Get or set dark/light mode |
macos_control_system | Lock the screen or put the display to sleep |
macos_take_screenshot | Capture full screen, display, named app window, or pixel region; saves PNG; optional base64 JPEG preview |
macos_manage_displays | List connected displays and apply named display layout presets |
macos_send_notification | Post a notification to macOS Notification Center |
macos_manage_focus | Get or set Do Not Disturb / Focus mode |
macos_manage_finder | Frontmost path, current selection, reveal, open with app, or move to Trash |
macos_get_infoReturns a live system snapshot with no prerequisites.
AC, Battery, UPS); null on desktops with no battery"15.1.0"), uptime in secondsmacos_check_permissionsReports permission status for each capability this server exercises. Run this first when debugging why a tool is failing.
move, resize, minimize, fullscreen, close), app hide/showmacos_take_screenshot with target=window)macos_manage_finder with action=get_selection"ghostty", "node") so you know which process to grant permissions formacos_manage_appsManage the lifecycle of user-facing applications.
list β all running user-facing apps with name, bundle ID, PID, visible, and frontmost flagsfrontmost β name, bundle ID, PID, and frontmost window title of the active applaunch β open or activate an app by name or bundle ID; hidden=true starts in the backgroundquit β graceful quit via AppleScript tell application β¦ to quitforce_quit β SIGKILL without savinghide / show β toggle app visibility; requires Accessibilitymacos_manage_windowsWindow operations across all visible apps via System Events Accessibility.
list β all visible windows with app name, title, position, size, minimized state, and display index (0 = primary)focus β bring an app or window to the foreground (does not require Accessibility)move β reposition a window by top-left coordinateresize β change a window's width and heightmove_resize β set position and size in one callminimize β minimize to Dock or restore; minimized=true to minimize, false to restorefullscreen β toggle fullscreen via ββF keystrokeclose β click the close button via Accessibilityapp_name, window_title, or both (window_title takes precedence)list and focus) require Accessibilitymacos_control_volumeget β returns current output volume (0β100) and mute stateset β accepts level (0β100), muted (true/false), or both; setting level=0 does not mutesetmacos_control_audioAudio device routing via SwitchAudioSource CLI (brew install switchaudio-osx).
list β all input and output devices, with is_default flag; filter by type=input|output|allcurrent β current default input and output device namesswitch_output / switch_input β change the default device; supports case-insensitive partial name matching ("MacBook" matches "MacBook Pro Microphone")macos_control_volume)macos_control_appearanceget β returns dark_mode: true/falseset with mode=dark|light|toggle β dark/light are idempotent; toggle flips on each callmacos_control_systemlock β locks the screen immediately via ββQ (Accessibility); falls back to ScreenSaverEngine binary if Accessibility is not grantedsleep_display β puts all displays to sleep via pmset displaysleepnow; no permissions requiredmacos_take_screenshotSaves a full-resolution PNG to disk; optionally returns a downscaled JPEG preview as base64.
screen β full screen capture (all displays merged); no Screen Recording requireddisplay β a specific display by 0-based display_index; no Screen Recording requiredwindow β a named app window by app_name; requires Screen Recordingregion β a pixel rectangle { x, y, width, height }; no Screen Recording requiredpath β custom output path (must be within ~/Desktop, /tmp, or home dir); defaults to MACOS_SCREENSHOT_DIR/<timestamp>.png (falls back to ~/Desktop)include_data=true β adds preview (base64 JPEG, max 1024px wide, ~70% quality) + preview_width / preview_height to the response for agent visual analysismacos_manage_displaysRequires displayplacer CLI (brew install jakehilborn/jakehilborn/displayplacer).
list β connected display inventory: persistent ID, connection type, resolution, refresh rate, origin, rotation, scaling, enabled state; plus current_config (a displayplacer command string that reproduces the active arrangement)apply_layout β activates a named preset from MACOS_DISPLAY_LAYOUTS; layout names are pre-configured in the env var β raw displayplacer args are never accepted from the usermacos_send_notificationPosts to Notification Center via osascript. Does not require notification permission β osascript notifications bypass Do Not Disturb.
title (required), body, subtitle, sound=true (plays default notification sound)macos_manage_focusget β best-effort: reads ~/Library/DoNotDisturb/DB/Assertions.json when accessible; returns status: active|inactive|unknown; unknown is expected on macOS 13+ where the database is SIP-protectedset β requires the built-in "Set Focus" shortcut to exist in Shortcuts.app (present by default on macOS 12+); mode must match a configured Focus profile exactly (e.g. "Do Not Disturb", "Work"); enabled defaults to truemacos_manage_finderFinder integration via osascript and open.
frontmost_path β POSIX path of the active Finder window, or null when no window is open; no permissions requiredget_selection β POSIX paths of selected items; requires Automation > Finder permissionreveal β highlight a path in Finder (open -R path)open_with β open a path with a named app (open -a AppName path)trash β moves a path to the Trash (recoverable); not a permanent deleteNo reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/macos-mcp-server)<a href="https://allmcps.com/mcp/macos-mcp-server"><img src="https://allmcps.com/api/badge/macos-mcp-server?style=directory" alt="Macos MCP Server on AllMCPs" /></a>