Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
USER_EMAIL_PREFERENCESNoPersonal email preferences that will be provided to the AI assistant when using email tools. This helps Claude understand your preferred email accounts, defaults, and workflow.

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
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_inbox_emailsA

List all emails from inbox across all accounts or a specific account.

Replaces the former get_recent_emails tool — use account + max_emails to get recent emails from a single account.

get_mailbox_unread_countsA

Get unread counts per mailbox for one account or all accounts.

When summary_only=True, returns only per-account inbox unread totals (replaces the former get_unread_count tool).

list_accountsB

List all available Mail accounts.

list_account_addressesA

List all configured email addresses for each Mail account.

Useful for mapping a Mail.app account name (e.g. "Gmail", "Work") to the actual email address(es) it receives mail at — handy when an integration needs to know which inbox a message landed in by address rather than by Mail.app's display name.

list_mailboxesA

List all mailboxes (folders) for a specific account or all accounts.

get_inbox_overviewB

Get a comprehensive overview of your email inbox status across all accounts.

search_emailsA

Unified search tool with JSON output, pagination, and real date filtering.

Consolidates subject search, sender search, body content search, and cross-account search into a single tool.

get_email_threadA

Get an email conversation thread - messages linked by Message-ID, not just by subject.

Candidates are found by subject (fast, filtered inside Mail), then linked through their Message-ID / In-Reply-To / References headers. Messages that merely share the subject but belong to a different conversation are listed separately instead of being mixed into the thread.

get_email_sourceA

Return the raw RFC 822 source of a single message.

The MCP's other body-extraction paths return Mail.app's rendered content (HTML collapsed to display text, hrefs dropped, embedded objects replaced with U+FFFC). This tool returns the raw source instead — all headers, all MIME parts, all hrefs intact.

Implementation note:

Wraps the source property of message defined in Mail.sdef (the AppleScript dictionary for Mail.app). That property returns the same RFC 822 text Mail.app writes to the on-disk .partial.emlx file, so the consumer does not need filesystem access or knowledge of the Mail directory layout to recover MIME parts / hrefs / custom headers.

Identifier resolution: message_id is preferred when both are provided (exact match on the RFC 822 Message-Id header via AppleScript's message id property — distinct from id, which is Mail.app's internal numeric id). subject_keyword matches the first message in mailbox whose subject contains the substring.

Output sizing: messages can be large (a plain note is ~200 KB; with attachments far larger). max_bytes caps the returned payload and appends a truncation marker when exceeded. headers_only=True returns only the RFC 822 header block (everything up to and including the first blank line) — usually sufficient for URL/header inspection and avoids returning base64 bodies. Cap applies after the headers_only filter.

create_rich_email_draftA

Create a rich-text email draft by generating an unsent .eml message and optionally opening it in Mail.

This is the preferred path for HTML or richly formatted emails because Mail reliably renders .eml content, while setting raw HTML through AppleScript often stores the literal markup instead.

reply_to_emailC

Reply to an email matching a subject keyword.

compose_emailC

Compose and send a new email from a specific account.

forward_emailC

Forward an email to one or more recipients.

manage_draftsB

Manage draft emails - list, create, send, open, or delete drafts.

move_emailA

Move email(s) matching filters from one mailbox to another.

Supports subject, sender, and date filters. Use dry_run=True to preview matches without moving. Set only_read=True to skip unread emails (useful for archiving). For archiving to "Archive", just set to_mailbox="Archive". Pass message_ids to move specific messages by exact id (ignores other filters; same fast path as update_email_status).

save_email_attachmentC

Save a specific attachment from an email to disk.

update_email_statusA

Update email status - mark as read/unread or flag/unflag emails.

When message_ids is provided, uses exact ID matching (ignores other filters). Otherwise filters by subject, sender, and/or age.

manage_trashA

Manage trash operations - delete emails or empty trash.

When dry_run=True (default) and action is "move_to_trash", previews what would be deleted without acting. Set dry_run=False to actually move to trash.

Mail's AppleScript interface has no command that erases a message: delete means "move to Trash", and on a message that already sits in Trash it does nothing. "delete_permanent" and "empty_trash" therefore usually remove nothing at all. Both report the real before/after mailbox count instead of the number of delete calls, and say so when nothing was removed; emptying the trash for good has to happen in Mail itself.

create_mailboxA

Create a new mailbox (folder) in the specified account.

Supports nested paths via the parent_mailbox parameter (e.g., parent_mailbox="Projects" + name="2024" creates Projects/2024). You can also pass a full slash-separated path as name (e.g., "Projects/2024/ClientName") and omit parent_mailbox.

synchronize_accountA

Force Mail.app to synchronize an account (or every account) with its IMAP / Exchange server right now. Equivalent to clicking the refresh button next to the account or selecting Mailbox → Synchronize.

Use after move_email, update_email_status, or manage_trash when downstream clients (iPhone, web mail, etc.) need to see the change immediately. Mail.app's natural sync cadence is "automatic" which can be several minutes — this collapses that to one IMAP push.

Implementation note:

Uses the synchronize with <account> AppleScript verb (per Mail.sdef: "Command to trigger synchronizing of an IMAP account with the server") rather than check for new mail. The latter is receive-only — it pulls new messages but does NOT push pending IMAP commands like queued moves / archives / flag changes. With check for new mail, archives done via move_email could sit in Mail.app's local cache for several minutes before reaching the IMAP server, leaving iPhone Mail (which reads IMAP directly) showing already-archived messages still in INBOX. synchronize with is the bidirectional verb that drains pending IMAP commands AND fetches new mail.

Mail.app's synchronize is potentially long-running. We wrap each invocation in with timeout of N seconds so the AppleScript returns promptly. When the timeout fires (error -1712) Mail.app keeps the sync running in the background — exactly the fire-and-forget semantics callers expect.

list_email_attachmentsB

List attachments for emails matching a subject keyword.

get_statisticsC

Get comprehensive email statistics and analytics.

export_emailsC

Export emails to files for backup or analysis.

inbox_dashboardA

Get an interactive dashboard view of your email inbox.

Returns an interactive UI dashboard resource that displays:

  • Unread email counts by account (visual cards with badges)

  • Recent emails across all accounts (filterable list)

  • Quick action buttons for common operations (Mark Read, Archive, Delete)

  • Search functionality to filter emails

This tool returns a UIResource that can be rendered by compatible MCP clients (like Claude Desktop with MCP Apps support) to provide an interactive dashboard experience.

Note: Requires mcp-ui-server package and a compatible MCP client.

get_awaiting_replyA

Find sent emails that haven't received a reply yet.

Scans the Sent mailbox for outgoing emails and cross-references with the Inbox to see if a reply (matching subject) was received from the same recipient. Useful for follow-up tracking.

get_needs_responseA

Identify unread emails that likely need a response from you.

Filters out newsletters, automated emails, and noreply senders. Prioritises direct emails (To: you) with question marks as likely needing a reply.

get_top_sendersB

Analyse a mailbox to find the most frequent senders.

Useful for identifying key contacts, high-volume senders to filter, or newsletter sources to unsubscribe from.

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 27 tools

Disambiguation4/5

Most tools have clearly distinct purposes (e.g., search vs. thread vs. source, send vs. reply vs. forward), but several analytics/overview tools—get_inbox_overview, inbox_dashboard, get_statistics, get_top_senders—overlap in the 'summarize my inbox' space. The detailed descriptions help clarify differences, so ambiguity is limited to a few related tools.

Naming Consistency4/5

Names are consistently snake_case with action-first verbs (list_, get_, create_, manage_, move_, update_), which is highly readable. Minor deviations exist, such as the noun-only inbox_dashboard and the less predictable get_awaiting_reply/get_needs_response phrasing.

Tool Count2/5

27 tools is above the typical 3–15 range and crosses the 'too many' threshold; several analytics/insight tools could be consolidated into fewer endpoints. However, each tool does map to a distinct operation, so the set is heavy rather than chaotic.

Completeness4/5

The surface covers core email workflows well: listing accounts/mailboxes, searching/reading, sending/replying/forwarding, moving, flagging, trash, attachments, and sync. Gaps include no delete/rename mailbox operation and no explicit single-email rendered-body fetch, though raw source is available as a workaround.

Maintenance

ActivityActive
ResponsivenessWithin a week