macos-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| mail_list_accountsA | List Mail.app accounts configured on this Mac (name + email addresses). |
| mail_list_mailboxesB | List mailboxes. Optionally filter by Mail account name. |
| mail_list_messagesC | List recent messages from a mailbox (default INBOX). Returns Mail message ids for follow-up actions. |
| mail_search_messagesB | Search messages by substring in subject or sender within a mailbox. |
| mail_get_messageC | Fetch full message content by Mail message id. |
| mail_save_attachmentsC | Save all attachments from a Mail message to a local directory. |
| mail_draft_emailA | Open a draft in Mail.app (never sends). Appends signature from signatures/ when sender is set. Em dashes are stripped from subject/body. |
| mail_draft_replyA | Open a reply draft in Mail.app for an existing message (never sends). Keeps Mail native rich-text quote. With body: pastes your text at the top via clipboard (requires Accessibility for Cursor). |
| mail_archive_messagesB | Archive messages by id (Gmail: move to All Mail / remove from Inbox). |
| mail_trash_messagesC | Move messages to Trash by id. |
| mail_mark_readC | Mark messages read or unread by id. |
| mail_move_messagesC | Move messages to another mailbox. |
| calendar_list_calendarsA | List Calendar.app calendars with writable flag. |
| calendar_list_eventsC | List events in a date range (ISO 8601 start/end). |
| calendar_search_eventsC | Search events by substring in title or location. |
| calendar_get_eventC | Get full event by uid. |
| calendar_create_eventC | Create a calendar event. |
| calendar_update_eventC | Update event fields by uid. |
| calendar_delete_eventC | Delete an event by uid. |
| reminders_list_listsA | List all Reminders lists. |
| reminders_listC | List reminders in a list with optional filters. |
| reminders_searchC | Search reminders by substring in name or notes. |
| reminders_createC | Create a reminder in a list. |
| reminders_completeC | Mark a reminder complete by id or name+list. |
| reminders_deleteB | Delete a reminder by id or name+list. |
| notes_list_foldersB | List Notes.app folders. |
| notes_listC | List notes, optionally filtered by folder. |
| notes_searchB | Search notes by substring in title or body. |
| notes_getC | Get note title and body by id or name. |
| notes_createC | Create a note in a folder (may require macOS automation permission). |
| notes_appendC | Append text to an existing note. |
| messages_get_threadA | Read iMessage/SMS thread by phone substring or email. Requires Full Disk Access for chat.db. |
| messages_list_chatsC | List recent chat identifiers from Messages.app. |
| contacts_listC | List contacts. Optionally return only contacts missing an email address. |
| contacts_searchA | Search Contacts by name, email, or phone substring. |
| contacts_getB | Get full contact card by id or name. |
| contacts_createC | Create a new contact with basic fields. |
| contacts_updateC | Update contact fields by contact_id. |
| contacts_deleteB | Delete a contact by Contacts.app person id. |
| contacts_import_csvA | Import contacts from a Google Contacts CSV export. Upserts by email, optionally removes name-only duplicates. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 40 tools
Each tool has a distinct domain prefix (calendar_, contacts_, mail_, etc.) and a specific action, making it impossible to confuse tools across domains. Even within a domain like mail, tools like mail_draft_email and mail_draft_reply are clearly differentiated.
All tools follow a strict verb_noun pattern with snake_case, e.g., calendar_create_event, mail_list_messages, notes_append. The naming is uniform and predictable across all domains.
40 tools is on the high side, but the server covers multiple macOS apps (Calendar, Contacts, Mail, Messages, Notes, Reminders), each requiring several operations. While the count is heavy, it is not excessive for such a broad scope, though it may overwhelm agents.
Most domains have CRUD-like coverage, but notable gaps exist: Mail lacks a 'send' tool (only draft), Messages cannot send new messages, Notes lacks delete and update (only append), and Reminders lacks field updates. These omissions may hinder agent workflows.