Skip to main content
Glama
icloud-mcp

icloud-mcp

by adamzaidi

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
IMAP_USERYesYour iCloud email address (e.g., you@icloud.com).
IMAP_PASSWORDYesYour Apple app-specific password generated from appleid.apple.com.

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

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_accountsA

List all configured email accounts (names and IMAP hosts). Use the account name in any mail tool's account parameter.

get_inbox_summaryC

Get a summary of a mailbox including total, unread, and recent email counts

get_mailbox_summaryA

Get total, unread, and recent email counts for any specific mailbox/folder

get_top_sendersA

Get the top senders by email count from a sample of the inbox

get_unread_sendersC

Get top senders of unread emails

get_emails_by_senderC

Get all emails from a specific sender

read_inboxB

Read emails from an inbox with pagination. Supports multiple accounts.

get_emailB

Get full content of a specific email by UID

search_emailsB

Search emails by keyword or targeted field queries, with optional filters for date, read status, domain, and more

count_emailsA

Count how many emails match a set of filters without moving or deleting them. Use this before bulk_move or bulk_delete to preview how many emails will be affected.

bulk_moveA

Move emails matching any combination of filters from one mailbox to another. Uses safe copy-verify-delete with fingerprint verification and a persistent manifest. Use dryRun: true to preview without making changes.

bulk_deleteA

Delete emails matching any combination of filters. Processes in chunks of 500 with per-chunk timeouts for reliability. Use dryRun: true to preview without making changes.

bulk_flagB

Flag or unflag emails matching any combination of filters in bulk

bulk_delete_by_senderC

Delete all emails from a specific sender

bulk_move_by_senderB

Move all emails from a specific sender to a folder

bulk_delete_by_subjectC

Delete all emails matching a subject pattern

bulk_mark_readB

Mark all emails as read, optionally filtered by sender

bulk_mark_unreadB

Mark all emails as unread, optionally filtered by sender

delete_older_thanC

Delete all emails older than a certain number of days

get_emails_by_date_rangeC

Get emails between two dates

flag_emailA

Flag or unflag a single email

mark_as_readA

Mark a single email as read or unread

delete_emailC

Delete a single email

move_emailA

Move a single email to a different mailbox/folder

list_mailboxesA

List all mailboxes/folders in iCloud Mail

create_mailboxC

Create a new mailbox/folder

rename_mailboxC

Rename an existing mailbox/folder

delete_mailboxA

Delete a mailbox/folder. The folder must be empty first.

empty_trashA

Permanently delete all emails in the trash (Deleted Messages or Trash folder). Use dryRun: true to preview first.

get_move_statusA

Check the status of the current or most recent bulk move operation. Shows progress, chunk statuses, and any failures. Call this to monitor a long-running move or inspect a failed one.

abandon_moveA

Abandon an in-progress move operation so a new one can start. Only use if you are certain the operation should not be resumed. Emails already moved will not be returned to source.

log_writeA

Write a step to the session log. Use this to record your plan before starting, and after each completed step. Helps maintain progress across long operations.

log_readA

Read the current session log to see what has been done so far.

log_clearA

Clear the session log and start fresh. Use this at the start of a new task.

list_attachmentsA

List all attachments in an email without downloading them. Returns filename, MIME type, size, and IMAP part ID for each attachment.

get_attachmentA

Download a specific attachment from an email. Returns the file content as base64-encoded data. Use list_attachments first to get the partId. Maximum 20 MB per request; use offset+length for larger files.

get_unsubscribe_infoA

Get the List-Unsubscribe header from an email, parsed into email and URL components. Useful for AI-assisted inbox cleanup.

mark_older_than_readB

Mark all unread emails older than N days as read. Useful for bulk triage of a cluttered inbox.

bulk_move_by_domainA

Move all emails from a specific domain to a folder. Convenience wrapper around bulk_move with a domain filter.

get_email_rawA

Get the raw RFC 2822 source of an email (full headers + MIME body) as base64-encoded data. Useful for debugging or export. Capped at 1 MB.

bulk_flag_by_senderB

Flag or unflag all emails from a specific sender

archive_older_thanA

Safely move emails older than N days from a source mailbox to an archive folder. Uses the same safe copy-verify-delete pipeline as bulk_move. Use dryRun: true to preview.

get_storage_reportA

Estimate storage usage by size bucket and identify top senders by email size. Uses SEARCH LARGER queries for bucketing and samples large emails for sender analysis.

get_threadA

Find all emails in the same thread as a given email. Uses subject matching + References/In-Reply-To header filtering. Note: iCloud does not support server-side threading — results are approximate.

create_ruleA

Create a saved rule that applies a specific action to emails matching a set of filters. Rules are stored persistently and can be run on demand or all at once with run_all_rules.

list_rulesA

List all saved rules with their filters, actions, and run history.

run_ruleB

Run a specific saved rule by name. Use dryRun: true to preview what would be affected without making changes.

delete_ruleC

Delete a saved rule by name.

run_all_rulesA

Run all saved rules in sequence. Use dryRun: true to preview all rules without making changes.

compose_emailA

Compose and send a new email via iCloud SMTP. The From address is always your iCloud account. Supports plain text, HTML, or both (multipart/alternative).

reply_to_emailA

Reply to an existing email. Automatically sets correct threading headers (In-Reply-To, References) and prefixes the subject with Re:. Supports plain text and/or HTML body.

forward_emailB

Forward an existing email to one or more recipients. Fetches the original email body and includes it as a forwarded message block. Supports plain text and/or HTML note.

save_draftA

Save a draft email to your iCloud Drafts folder without sending it. Supports plain text, HTML, or both. The draft can be edited and sent later from Mail.app or iCloud.com.

get_digest_stateA

Get the current inbox digest state — last run timestamp, processed email UIDs (to skip on next run), pending actions, and per-sender skip counts for smart unsubscribe.

update_digest_stateB

Update the digest state after a run. Merges new processed UIDs into the existing list, updates lastRun, replaces pendingActions, and accumulates per-sender skip counts.

list_contactsA

List contacts from iCloud Contacts. Returns names, phones, emails, and other fields.

search_contactsB

Search iCloud Contacts by name, email address, or phone number.

get_contactA

Get full details for a specific contact by ID. Use list_contacts or search_contacts to find a contactId.

create_contactC

Create a new contact in iCloud Contacts.

update_contactA

Update an existing contact in iCloud Contacts. Only provided fields are changed; others are preserved.

delete_contactB

Delete a contact from iCloud Contacts permanently.

list_calendarsA

List all calendars in iCloud Calendar (e.g. Personal, Work, School). Returns calendarId, name, and supported event types. When ICLOUD_MCP_SUBSCRIBED_CALENDARS=on, configured read-only subscribed (ICS/webcal) calendars are included with readOnly:true and subscribed:true, and subscribedCalendars reports that setting.

create_calendarA

Create a new event calendar in iCloud Calendar. Fails if a calendar with that name already exists.

delete_calendarA

Delete an iCloud event calendar by exact name or calendarId. The calendar must have no events (past or future); delete them first with bulk_delete_events. Will not delete Reminders lists.

list_eventsA

List events in a specific iCloud calendar within a date range. Use list_calendars first to get a calendarId.

get_eventA

Get full details of a specific calendar event by its ID.

create_eventA

Create a new event in an iCloud calendar. For all-day events use allDay:true and YYYY-MM-DD for start/end.

update_eventB

Update an existing calendar event. Only provided fields are changed; others are preserved.

delete_eventB

Delete a calendar event permanently from iCloud Calendar.

search_eventsA

Search for events by title/summary across all calendars within an optional date range.

bulk_update_eventsA

Update multiple calendar events in one call. Each update object must include eventId and only the fields to change.

list_events_multiA

List events from multiple calendars in one call. Returns events grouped by calendar ID.

bulk_create_eventsA

Create multiple calendar events in one call. Much more efficient than calling create_event repeatedly. Each event in the array uses the same fields as create_event.

bulk_delete_eventsB

Delete multiple calendar events in one call. Much more efficient than calling delete_event repeatedly.

detect_conflictsA

Detect scheduling conflicts and tight gaps between events across multiple calendars. Compares all non-all-day events on the same date from different calendars.

list_reminder_listsA

List all Reminders lists in iCloud Reminders (e.g. "Reminders", "Work", "Shopping"). Returns name, id, and count per list.

create_reminder_listA

Create a new Reminders list in iCloud Reminders. Fails if a list with that name already exists.

rename_reminder_listA

Rename a Reminders list. The old name must match exactly one list, and the new name must not already be in use.

delete_reminder_listA

Delete a Reminders list. The list must be empty first, and the name must match exactly one list.

list_remindersB

List reminders from iCloud Reminders. Omit listName to fetch from all lists.

get_reminderC

Get full details of a specific reminder by ID.

create_reminderC

Create a new reminder in iCloud Reminders.

update_reminderB

Update an existing reminder. Only provided fields are changed; others are preserved.

complete_reminderC

Mark a reminder as completed in iCloud Reminders.

delete_reminderB

Delete a reminder from iCloud Reminders permanently.

suggest_event_from_emailA

Fetch an email and return its content formatted for calendar event extraction. After calling this tool, extract the event fields from the returned content (pay attention to _dateAnchor for resolving relative dates like "Tuesday"), present a summary to the user for confirmation, then call create_event. No API key required.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 86 tools

Disambiguation3/5

Mail operations contain many overlapping bulk convenience tools: bulk_delete vs bulk_delete_by_sender vs bulk_delete_by_subject vs delete_older_than, and similarly bulk_move vs bulk_move_by_sender vs bulk_move_by_domain. Descriptions clarify the differences, but an agent still has multiple plausible choices for the same cleanup task.

Naming Consistency4/5

Nearly all tools use consistent snake_case with verb-first naming (list_, get_, create_, update_, delete_, bulk_). Minor deviations exist, such as log_write/log_read/log_clear reversing the order and mark_older_than_read/delete_older_than not following a strict verb_noun pattern.

Tool Count1/5

86 tools is an extreme count mismatch for a coherent MCP surface, even across mail, calendar, reminders, and contacts. Many tools are convenience wrappers around a smaller core set of operations.

Completeness5/5

The surface has strong lifecycle coverage across mail, calendar, reminders, contacts, rules, attachments, threading, digest state, and bulk operations. There are no major dead ends; minor omissions such as rule updates are workable via delete and recreate.

Maintenance

ActivitySlowing
ResponsivenessNo recent community issues