macOS MCP Server
Control macOS system settings, apps, windows, audio, displays, screenshots, and Focus mode.
Connector by cyanheads · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/cyanheads-macos-mcp-server
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 2 read · 10 write · 1 delete
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Node.js package
Tools by what they do 13
Read from the source code; the running server may list different tools.
Read 2 · Look things up without changing anything.
macos_check_permissionsmacos_get_info
Write 10 · Create, change, send or run things.
macos_control_appearancemacos_control_audiomacos_control_volumemacos_manage_appsmacos_manage_displaysmacos_manage_findermacos_manage_focusmacos_manage_windowsmacos_send_notificationmacos_take_screenshot
Delete 1 · Delete, drop, revoke or wipe things.
macos_control_system
Secrets and settings it asks for
Other settings (environment variables or headers).
MACOS_DISPLAY_LAYOUTSMACOS_SCREENSHOT_DIRMCP_LOG_LEVEL
Tools (13)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
macos_check_permissionsCheck macOS Permissionsread-onlyReports which macOS permissions this server relies on are granted to the calling process, read from Apple's prompt-free checks: Accessibility (every macos_manage_windows action, list included; macos_manage_apps hide and show, and the window_title frontmost reads; the ⌃⌘Q keystroke macos_control_system lock sends before it falls back to the screen saver), Screen Recording (window screenshots), and Automation > Finder (macos_manage_finder frontmost_path, get_selection, and trash). No check sends an Apple event to another app, captures the screen, or can show a permission prompt. Each field is tr…
macos_control_appearanceControl macOS AppearanceGet or set the system appearance (dark mode or light mode). The get action returns the current mode. The set action requires mode="dark", "light", or "toggle". Setting "dark" or "light" is idempotent — calling twice produces the same state. "toggle" flips the current mode on each call.
macos_control_audioControl macOS Audio RoutingManage audio device routing: list all input and output devices, get the current default input and output devices, or switch the default input or output device. Device names support case-insensitive partial matching — "MacBook" matches "MacBook Pro Microphone". Volume level control is separate (use macos_control_volume). Requires SwitchAudioSource CLI (brew install switchaudio-osx).
macos_control_systemControl macOS SystemSystem-level power controls: lock the screen (⌃⌘Q shortcut via Accessibility; falls back to ScreenSaverEngine binary if Accessibility is not granted) or put the display to sleep immediately. Both operations are immediate and user-reversible (wake/unlock with any input).
macos_control_volumeControl macOS VolumeGet or set the system output volume level (0–100) and mute state of the default output. The get action returns the current level and mute state; on an output with no software volume control, such as many HDMI or DisplayPort displays, both read null and output_device names the device. The set action requires level (0–100), muted (true/false), or both, and fails with volume_unsupported on an output that has no software control for the requested value. Setting level=0 does not mute — use muted=true for explicit muting.
macos_get_infoGet macOS System Inforead-onlyReturns a snapshot of the current macOS system state: battery level, charging state, and power source (AC/Battery/UPS), Wi-Fi association and network name, hostname, macOS version, uptime in seconds, and connected display count. All fields reflect live system state at the time of the call. A field whose probe fails is null and named in `unavailable`, never filled with a guess. macOS withholds the Wi-Fi network name from an app without Location Services access; a connected Mac then reports `connected: true` with `ssid: null`.
macos_manage_appsManage macOS AppsManage application lifecycle: list all running user-facing apps, get the frontmost app, launch or activate an app, gracefully quit or force-quit a process, or hide/show an app. Launch activates the app if already running; use hidden=true to start in the background without bringing it forward. Force-quit terminates immediately (SIGKILL) without saving. Hide and show require Accessibility permission.
macos_manage_displaysManage macOS DisplaysList connected displays with their current layout (resolution, position, rotation, scaling) and each display's index, the display_index macos_take_screenshot and macos_manage_windows use, or apply a pre-configured display layout by name. Requires displayplacer CLI (brew install displayplacer). Layouts are pre-configured in the MACOS_DISPLAY_LAYOUTS environment variable as a JSON object mapping names to displayplacer argument strings; action=list returns their names as layouts. Layout application only accepts named presets — raw displayplacer args are never accepted from the user.
macos_manage_finderManage macOS FinderFinder integration: get the path of the frontmost Finder window, get the current Finder selection, reveal a file or folder in Finder, open a path with a specific app, or move a path to the Trash (recoverable — goes to Trash, not rm). reveal and open_with need no special permissions; frontmost_path, get_selection, and trash script Finder and require Automation > Finder permission. trash moves files to Trash and never falls back to permanent deletion.
macos_manage_focusManage macOS Focus ModeGet or set Do Not Disturb / Focus mode. The get action is best-effort: it reads the Focus state file in ~/Library/DoNotDisturb, which may be unreadable to the server process, and returns status "unknown" when that file cannot be read or parsed. The set action runs a shortcut named "Set Focus" from the Shortcuts library and passes {"mode": <mode>, "enabled": <enabled>} to it as JSON input. That shortcut is not built in: create it so it reads this input (e.g. with Get Dictionary from Input) and applies mode and enabled with the Set Focus action. Mode names must exactly match configured Focus nam…
macos_manage_windowsManage macOS WindowsWindow operations across all visible apps: list all windows with their bounds and state, focus a window, move or resize a window, minimize/restore, enter or exit fullscreen, or close. Every action, list included, scripts System Events and requires Accessibility. Every action except list targets one window: the one titled window_title, or app_name's frontmost window (window_title takes precedence when both are given). Focus raises the window and brings its app forward, as fullscreen does before it changes a window; no action launches an app.
macos_send_notificationSend macOS NotificationPost a notification to macOS Notification Center via osascript. The notification is delivered immediately and follows the calling process's notification settings, and an active Focus such as Do Not Disturb silences it unless that Focus allows the posting app. Title is required; body, subtitle, and sound are optional. Each call creates a new notification (not idempotent).
macos_take_screenshotTake macOS ScreenshotCapture a screenshot of the main display (the one with the menu bar), one connected display chosen by display_index, a named app window, or a pixel region. display_index is the 0-based index macos_manage_displays action=list reports for each display. Always saves a full-resolution PNG to disk, by default as a new timestamped file in MACOS_SCREENSHOT_DIR (~/Desktop when unset), and never replaces an existing file unless overwrite is true. With include_data, also returns a JPEG preview (longer side at most 1024 px) as an image content block for visual analysis and as base64 in preview. Window ca…
Signals
- Stars
- 4
- Forks
- 0
- Open issues
- 3
- Weekly downloads
- 333
- Last commit
- Oct 22, 2026 (7 days ago)
- Last release
- Oct 22, 2026 (7 days ago)
- Last package publish
- Oct 22, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.cyanheads/macos-mcp-server- Version
- 0.3.0
- Auth
- No auth
- Packages
- npm @cyanheads/macos-mcp-servernpm @cyanheads/macos-mcp-server
- License
- Apache-2.0
- Repository
- github.com/cyanheads/macos-mcp-server
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from cyanheads
- 0.655score
MCP Ts Template
cyanheads
TypeScript template for building MCP servers with declarative tooling, observability, and auth.
ConnectorAFreshness: ARemoteLocalRead-only★ 152Claude Code +5 - 0.625score
Git MCP Server
cyanheads
Comprehensive Git MCP server enabling native git tools including clone, commit, worktree, & more.
ConnectorBFreshness: BRemoteLocal★ 242↓ 1.6K/wkClaude Code +5 - 0.618score
Obsidian MCP Server
cyanheads
Read, write, search, and surgically edit Obsidian notes, tags, and frontmatter.
ConnectorAFreshness: ARemoteLocal★ 701Claude Code +5 - 0.597score
PubMed MCP Server
cyanheads
Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms.
ConnectorAFreshness: ARemoteLocalRead-only★ 162↓ 1.6K/wkClaude Code +5 - 0.545score
Ntfy MCP Server
cyanheads
Send, manage, and replay ntfy push notifications.
ConnectorAFreshness: ARemoteLocal★ 23Claude Code +5 - 0.542score
Brapi MCP Server
cyanheads
Collaborative BrAPI v2.1 MCP workspace: studies, germplasm, genotypes across Breedbase, T3, more.
ConnectorAFreshness: ARemoteLocal★ 4↓ 660/wkClaude Code +5
Cite this page
macOS MCP Server. Agent Mart. https://agentmart.dev/connectors/cyanheads-macos-mcp-server (last updated 2026-10-24)