Learn-skills.dev mac-control

MCP server for AI-powered macOS control — apps, display, audio, files, screenshots, clipboard

install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aiagentwithdhruv/skills/mac-control" ~/.claude/skills/neversight-learn-skills-dev-mac-control && rm -rf "$T"
manifest: data/skills-md/aiagentwithdhruv/skills/mac-control/SKILL.md
source content

macOS Control — AI Mac Automation

Give Claude direct control of your Mac through 15 MCP tools. Open apps, toggle dark mode, search files, take screenshots, manage clipboard — all via natural language.

Location

Project:

/Volumes/Dhruv_SSD/AIwithDhruv/Claude/Mac-Automation/
MCP Server:
Mac-Automation/macos_mcp.py

Tools Reference

System (read-only)

get_system_info()                    # macOS version, chip, RAM, uptime
get_running_apps()                   # All visible running apps
get_disk_usage()                     # Storage per volume

App Control

open_app(app_name="Safari")          # Launch app (validated against /Applications/)
close_app(app_name="Notes")          # Graceful quit via AppleScript
switch_to_app(app_name="Terminal")   # Bring to foreground

Display & Audio

toggle_dark_mode()                   # Switch light <-> dark (instant visual)
set_volume(level=50)                 # 0-100, auto-unmutes

Notifications

send_notification(title="Hey", message="Class starting!", sound="Glass")
play_sound(sound_name="Ping")        # 14 system sounds available

Files & Search

spotlight_search(query="invoice.pdf", folder="~/Documents", limit=20)
open_folder(folder_path="~/Desktop") # Opens in Finder

Clipboard

get_clipboard()                      # Read current clipboard
set_clipboard(text="Hello World")    # Write to clipboard

Screenshot

take_screenshot(region="full")       # Saves PNG to Desktop
take_screenshot(region="window")     # Front window only

Schema

Inputs

NameTypeRequiredDescription
app_namestrvariesApp name without .app (e.g., 'Safari')
levelintvariesVolume 0-100
titlestrvariesNotification title
messagestrvariesNotification body
soundstrnoSound name (default/Glass/Ping/Pop/etc.)
querystrvariesSpotlight search query
folderstrnoFolder to scope search
textstrvariesText for clipboard
regionstrnoScreenshot region (full/window)

Outputs

NameTypeDescription
resultstrHuman-readable result or error message

Credentials

NameTypeRequiredDescription
(none)No credentials needed — uses local macOS commands

Composable With

  • ghost-browser
    — screenshot → analyze → automate browser
  • google-mcp
    — search files → email attachment
  • instantly-campaigns
    — clipboard → email templates

Cost

Free — stdlib only, no API calls.

Safety

  • Blocked keywords: rm, sudo, shutdown, format, erase, passwd, kill
  • App names validated against /Applications/
  • AppleScript strings sanitized
  • 10s timeout on all commands
  • No shell=True anywhere