Skip to main content
Glama
surendranb

macOS Companion MCP Server

by surendranb

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_calendarsA

Lists all available calendar names in the Apple Calendar app

get_calendar_eventsB

Fetches calendar events for a given time range (using accli)

create_calendar_eventA

Creates a new event in Apple Calendar (using accli)

get_remindersA

Fetches active reminders from Apple Reminders

create_reminderB

Creates a new reminder in Apple Reminders

complete_reminderB

Marks a reminder as completed

list_notesA

Lists titles, IDs, and folders of notes in Apple Notes

get_noteC

Retrieves the body text of a note by title or ID

create_noteA

Creates a new note in Apple Notes

update_noteA

Appends content to an existing note in Apple Notes

get_music_stateA

Returns the current playback state and active track metadata in Apple Music

play_playlistA

Plays a specific Apple Music playlist by name

play_pause_musicA

Toggles playback state of Apple Music

skip_music_trackA

Skips to the next or previous track in Apple Music

set_music_volumeA

Sets Apple Music volume (0 to 100)

send_emailB

Composes and sends an email via Apple Mail

get_unread_emailsA

Fetches recent unread email details from Apple Mail

send_imessageB

Sends an iMessage/SMS via Messages app

open_urlA

Opens a URL in the default browser

get_safari_tabsA

Lists all open tab URLs and titles in Safari

list_shortcutsA

Lists all Siri/Apple Shortcuts configured on the system

run_shortcutB

Runs an Apple/Siri Shortcut by name

get_disk_usageB

Returns local disk usage statistics

get_storage_scanB

Deep storage scan: home directory sizes, caches, and local snapshots

get_battery_healthA

Detailed battery status: cycle count, max capacity, condition

get_startup_itemsA

Lists macOS login items and LaunchAgents

run_health_auditA

Comprehensive health audit: compute, memory, storage, battery, SSD wear, startup items

run_disk_cleanupC

Safely prunes cache folders and empties trash to free up space

get_system_statsA

Gets current CPU load, memory pressure, battery metrics, thermal level, and hung processes

get_process_listA

Lists active running processes with resource usage

kill_processB

Kills a process by PID or name

restart_serviceB

Restarts a macOS launchd service using launchctl

get_recent_podcast_episodesA

Lists podcast episodes from MTLibrary.sqlite, optionally filtered by release date range and/or title query. Returns pubDate, podcastTitle, title, playhead, duration, playState, transcriptId (path fragment), episodeId (Apple store track id). Pass a title to open_podcast_episode, and transcriptId to get_podcast_transcript once cached.

get_podcast_transcriptA

Retrieves the full transcript for an episode from the local Apple Podcasts TTML cache. Returns speaker-attributed text with timestamps. Requires the episode to have been opened/played at least once so the transcript file was cached locally.

open_podcast_episodeA

Searches Apple Podcasts for an episode title (from get_recent_podcast_episodes) and opens its episode page. Verified UI flow: Cmd+F, clipboard-paste the title (keystroke typing corrupts punctuation), open the top search result. Use before play_podcast_episode. The title should be fairly exact — the top search result is what gets opened.

play_podcast_episodeA

Plays the currently open episode page in Apple Podcasts (AX-discovers the play pill — position varies per page, so it is never hardcoded — and clicks it), then polls the TTML cache for up to ~15s for the transcript download. Returns the cached transcript path and transcriptId for get_podcast_transcript. Requires open_podcast_episode to have been called first.

pause_podcast_episodeA

Pauses Apple Podcasts playback via the Controls menu bar item. Note: the MTLibrary play_state column is unreliable (stays 1 while paused) — use the playhead field of get_recent_podcast_episodes to verify pause.

capture_camera_snapshotA

Takes a photo using the built-in camera via imagesnap. Returns JPEG as base64 data URL. Use: ambient light sensing, health PPG read, presence detection.

get_ambient_noiseA

Records a short audio sample via microphone and measures ambient noise level in decibels. Returns average dB, peak dB, and classification (quiet/moderate/loud).

capture_audioA

Records an audio clip via microphone and saves to a temp WAV file. Returns file path, duration, and sample rate.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/surendranb/macos-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server