mcpField
A
apple-mail

apple-mail

github.com/rbouscheryProductivity01.4k installsUpdated 40w ago
Repository

About apple-mail

apple-mail is a skill for operating Apple Mail on macOS through AppleScript-backed shell scripts. It supports mailbox and message tasks, from reading and searching to drafting, sending, and organizing email.

Key features

  1. 01List accounts and mailboxes
  2. 02Read and search emails
  3. 03Send email and create drafts
  4. 04Reply to messages
  5. 05Archive, delete, and mark messages

Use cases

  1. 01Check unread messages in a mailbox
  2. 02Find a specific email by search
  3. 03Draft or send a reply
  4. 04Archive or mark messages as read

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/rbouschery/marketplace --skill apple-mail

After installing, type/apple-mailin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

reference/
applescript-patterns.md
scripts/
archive-email.sh
create-draft.sh
create-reply-draft.sh
delete-email.sh
get-email-by-id.sh
get-emails.sh
get-unread-count.sh
list-accounts.sh
list-mailboxes.sh
mark-read.sh
mark-unread.sh
search-emails.sh
send-draft.sh
send-email.sh

Details

From the project README

Apple Mail Skill

This skill provides commands to interact with Apple Mail on macOS via AppleScript.

Available Scripts

All scripts are in the ../../scripts/ directory (relative to this file). Execute them via bash from the plugin root.

Account & Mailbox Management
ScriptPurposeArguments
list-accounts.shList all email accountsnone
list-mailboxes.shList mailboxes/folders[account] (optional)
get-unread-count.shGet unread email count[account] [mailbox] (optional)
Reading Emails
ScriptPurposeArguments
get-emails.shGet recent emails[account] [mailbox] [limit] [include_content] [unread_only]
get-email-by-id.shGet specific email by ID<id> [account] [mailbox] [include_content]
search-emails.shSearch emails<query> [account] [mailbox] [limit]
Sending & Composing
ScriptPurposeArguments
send-email.shSend an email<to> <subject> <body> [cc] [bcc] [from]
create-draft.shCreate a draft email<subject> <body> [to] [cc] [bcc] [from]
create-reply-draft.shCreate reply to email<message_id> <body> [reply_all] [account] [mailbox]
send-draft.shSend front-most draftnone
Email Management
ScriptPurposeArguments
archive-email.shArchive an email<message_id> [account] [mailbox] [archive_mailbox]
delete-email.shDelete an email<message_id> [account] [mailbox]
mark-read.shMark email as read<message_id> [account] [mailbox]
mark-unread.shMark email as unread<message_id> [account] [mailbox]

Output Format

Scripts use delimiters for structured output:

  • <<>> separates fields within a record
  • ||| separates multiple records
  • ERROR: prefix indicates an error message
Email Record Format
id<<>>subject<<>>sender<<>>to<<>>cc<<>>bcc<<>>dateSent<<>>isRead<<>>content|||

Usage Examples

List accounts
./scripts/list-accounts.sh
Get recent emails from INBOX
./scripts/get-emails.sh "" "INBOX" 10 false false
Get recent unread emails with content
./scripts/get-emails.sh "" "INBOX" 10 true true
Get specific email by ID
./scripts/get-email-by-id.sh 12345 "iCloud" "INBOX" true
Search emails
./scripts/search-emails.sh "meeting notes" "" "" 20
Send an email
./scripts/send-email.sh "[email protected]" "Subject" "Body text"
Send with CC and BCC
./scripts/send-email.sh "[email protected]" "Subject" "Body" "[email protected]" "[email protected]"
Create a draft
./scripts/create-draft.sh "Draft Subject" "Draft body" "[email protected]"
Reply to an email
./scripts/create-reply-draft.sh 12345 "Thanks for your message!" false "iCloud" "INBOX"
Send the front-most draft
./scripts/send-draft.sh
Archive an email
./scripts/archive-email.sh 12345 "iCloud" "INBOX"
Mark as read/unread
./scripts/mark-read.sh 12345 "iCloud" "INBOX"
./scripts/mark-unread.sh 12345 "iCloud" "INBOX"

Parsing Output

When receiving email records, parse them like this:

  1. Split by ||| to get individual records
  2. Split each record by <<>> to get fields
  3. Fields are: id, subject, sender, to, cc, bcc, dateSent, isRead, content

Example parsing in bash:

IFS='|||' read -ra emails <<< "$output"
for email in "${emails[@]}"; do
    IFS='<<>>' read -ra fields <<< "$email"
    id="${fields[0]}"
    subject="${fields[1]}"
    sender="${fields[2]}"
    # ... etc
done

Notes

  • Scripts require macOS with Apple Mail configured
  • Apple Mail must have at least one account set up
  • First run may trigger macOS permission prompts for automation
  • Empty optional arguments should be passed as empty strings ""
  • For scripts that need arrays (multiple recipients), pass comma-separated values

Reference

For advanced AppleScript patterns and customization, see ./reference/applescript-patterns.md.

Comments

Markdown supported