Skip to main content
ClaudeWave
ES, Spanish
cyanheads / MCP Servers · Registry oficial

macos-mcp-server

macOS system controls, window management, and hardware state for MCP clients

  • 4 estrellas
  • 0 forks
  • 3 issues abiertos
  • Lenguaje: TypeScript
  • Licencia: Apache-2.0
  • actualizado

Instalación

Claude Code CLI
git clone https://github.com/cyanheads/macos-mcp-server
  1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
  2. Replace any <placeholder> values with your API keys or paths.
  3. Restart Claude. The MCP server and its tools appear automatically.

Clone https://github.com/cyanheads/macos-mcp-server and follow its README for install instructions.

README

Resumen de MCP Servers

README completo en GitHub

@cyanheads/macos-mcp-server Control macOS system settings, apps, windows, audio, displays, screenshots, and Focus mode via MCP. STDIO or Streamable HTTP. 13 Tools • 3 Resources

Version License MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

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.


Overview

Control your Mac from an agent: launch, quit, and arrange apps and windows, switch audio and display devices, capture screenshots, work with Finder, send notifications, and toggle Focus mode.

Tools

ToolDescription
macos_get_infoSystem snapshot: battery level and charging status, power source, Wi-Fi association and network name, hostname, macOS version, uptime, and display count; a failed probe leaves its field null and named in unavailable
macos_check_permissionsReports Accessibility, Screen Recording, and Automation > Finder status for the calling process from Apple's prompt-free checks — null with a reason when a check can't tell
macos_manage_appsList running apps, get the frontmost app, launch, quit, force-quit, hide, or show applications
macos_manage_windowsList, focus, move, resize, move_resize, minimize, fullscreen, or close windows across all visible apps
macos_control_volumeGet or set system output volume (0–100) and mute state
macos_control_audioList audio devices, get current defaults, or switch the default input/output device
macos_control_appearanceGet or set dark/light mode
macos_control_systemLock the screen or put the display to sleep
macos_take_screenshotCapture the main display, one display by display_index, a named app window, or a pixel region; saves a PNG without replacing existing files unless overwrite is true, optional JPEG preview
macos_manage_displaysList connected displays (with each one's index) and the configured layout names, and apply a named display layout preset
macos_send_notificationPost a notification to macOS Notification Center
macos_manage_focusGet or set Do Not Disturb / Focus mode
macos_manage_finderFrontmost path, current selection, reveal, open with app, or move to Trash

Resources

ResourceDescription
macos://system/infoCurrent macOS system snapshot: battery, power source, Wi-Fi association and network name, hostname, version, uptime, display count; a failed probe leaves its field null and named in unavailable
macos://audio/devicesAll audio input and output devices, including which is the current default. Requires SwitchAudioSource CLI.
macos://displaysConnected display inventory including persistent IDs, index (the display_index macos_take_screenshot and macos_manage_windows use), type, resolution, origin, rotation, scaling, and enabled state. Requires displayplacer CLI.

Resource data is also accessible via macos_get_info, macos_control_audio (action=list), and macos_manage_displays (action=list).

Capability reference

macos_get_info tool

  • Battery level (0–100), charging state, and power source (AC, Battery, UPS); null on desktops with no battery. charging is false when the battery is held at a charge limit (AC attached; not charging) and true while finishing charge

  • Wi-Fi association from the Wi-Fi device's link state; the network name is null while connected when macOS withholds it (reading it requires Location Services access for the host app). The name renders in content[] as a code span, so markdown characters in it read back as the name

  • Hostname and uptime (from Node's os module), macOS version string (e.g. "15.1")

  • Connected display count (0 on a headless Mac)

  • A probe that fails leaves its field null and names it in unavailable; nothing is filled in. battery: null with battery absent from unavailable means the Mac has no battery

  • No permissions required


macos_check_permissions tool

  • Reports 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) from Apple's prompt-free checks: AXIsProcessTrusted, CGPreflightScreenCaptureAccess, and AEDeterminePermissionToAutomateTarget with prompting off

  • Each field is true, false, or null when the check can't tell; unknown_reasons names why each null is unknown. Automation > Finder reads null until macOS has asked for consent and while Finder isn't running. Notifications is always null: macOS has no prompt-free check for it

  • Returns the calling process name (e.g. "ghostty", "node") so you know which process to grant permissions for

  • Read-only — no check sends an Apple event to another app, captures the screen, or can show a permission prompt

  • Run this first when debugging why another tool is failing


macos_manage_apps tool

  • list — running user-facing apps with name, bundle ID, PID, visible, and frontmost flags

  • frontmost — name, bundle ID, PID, and frontmost window title of the active app

  • launch — open or activate by app_name or bundle_id; hidden=true starts in the background

  • quit (graceful AppleScript quit) vs. force_quit (SIGKILL, no save prompt)

  • hide / show — toggle visibility; requires Accessibility

  • quit, force_quit, hide, and show first check that the app is running — resolved by application name the way tell application does ("Visual Studio Code" finds the Code process), without launching it — and return not_running when it isn't

  • Typed errors: app_not_found (launch of an app that isn't installed), no_frontmost_app (System Events reports no frontmost process), not_running, accessibility_required


macos_manage_windows tool

  • list — all visible windows across apps, with position, size, minimized and fullscreen state (each read from the window's AXMinimized / AXFullScreen attribute, null when it can't be read), and display_index: the display the window overlaps most (the index macos_manage_displays action=list reports), or null when the display frames can't be read or the window overlaps none. Two windows that share a title, and the windows of two processes that share a name, are each listed

  • focus, move, resize, move_resize, minimize, fullscreen, close — target by window_title (exact, ignoring case, in any app; when two windows of one app share the title, the frontmost of them) or app_name (that app's frontmost window); window_title takes precedence and app_name is then ignored

  • app_name matches a running app by its application name ("Visual Studio Code"), localized name ("Code"), or process name ("firefox"), ignoring case; it is resolved from the running-application list, so no app is launched or sent an Apple event to find it

  • move needs x/y, resize needs width/height (both greater than 0), move_resize needs all four

  • minimize — minimized: true (the default) minimizes, false restores; it writes the window's AXMinimized attribute only when the window is not already in that state, and succeeds only when the window reads back in the requested state

  • fullscreen — fullscreen: true enters, false exits, omitted toggles the window's current state. When the state differs it raises the target window, as focus does, and sets its AXFullScreen attribute (no keystroke, so the window that had keyboard focus is never toggled); it waits up to 4 s for the window to read back in the requested state

Topics
ai-agentsai-toolsautomationcyanheadsjxamacosmcpmcp-servermodel-context-protocolosascriptsystem-controltypescript
Preguntas frecuentes

Lo que la gente pregunta sobre macos-mcp-server

¿Qué es cyanheads/macos-mcp-server?

cyanheads/macos-mcp-server es mcp servers para el ecosistema de Claude AI. macOS system controls, window management, and hardware state for MCP clients Tiene 4 estrellas en GitHub y su última actualización registrada es del 2026-10-22.

¿Cómo se instala macos-mcp-server?

Puedes instalar macos-mcp-server clonando el repositorio (https://github.com/cyanheads/macos-mcp-server) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.

¿Es seguro usar cyanheads/macos-mcp-server?

Nuestro agente de seguridad ha analizado cyanheads/macos-mcp-server y le ha asignado un Trust Score de 95/100 (tier: Verified). Revisa el desglose completo de comprobaciones superadas y flags en esta página.

¿Quién mantiene cyanheads/macos-mcp-server?

cyanheads/macos-mcp-server es mantenido por cyanheads. La última actividad registrada en GitHub es del 2026-10-22, con 3 issues abiertos.

¿Hay alternativas a macos-mcp-server?

Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.

Alternativas