MCP server giving AI assistants full access to Apple Mail - read, search, compose, organize & analyze emails via natural language
# Add to your Claude Code skills
git clone https://github.com/patrickfreyer/apple-mail-mcpGuides for using ai agents skills like apple-mail-mcp.
Last scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T16:20:08.714Z",
"npmAuditRan": true,
"pipAuditRan": true
}See how apple-mail-mcp compares with popular alternatives.
apple-mail-mcp is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by patrickfreyer. MCP server giving AI assistants full access to Apple Mail - read, search, compose, organize & analyze emails via natural language. It has 228 GitHub stars.
Yes. apple-mail-mcp passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/patrickfreyer/apple-mail-mcp" and add it to your Claude Code skills directory (see the Installation section above).
apple-mail-mcp is primarily written in Python. It is open-source under patrickfreyer on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh apple-mail-mcp against similar tools.
No comments yet. Be the first to share your thoughts!
30 days in the Featured rail · terms & refunds
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Automated security scan — not a certification.
An MCP server that gives AI assistants full access to Apple Mail -- read, search, compose, organize, and analyze emails via natural language. Built with FastMCP.
Prerequisites: macOS with Apple Mail configured, Python 3.10+
Two commands — gets you the MCP server, /email-management slash command, and the Email Management Expert skill:
claude plugin marketplace add patrickfreyer/apple-mail-mcp
claude plugin install apple-mail@apple-mail-mcp
Then restart Claude Code.
claude mcp add apple-mail -- uvx mcp-apple-mail
Or for Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"apple-mail": {
"command": "uvx",
"args": ["mcp-apple-mail"]
}
}
}
pip install mcp-apple-mail
claude mcp add apple-mail -- mcp-apple-mail
Installs the Email Management Expert skill via the open skills CLI. The skill does not include the MCP server, so install that too (e.g. with uvx above):
npx skills add patrickfreyer/apple-mail-mcp
claude mcp add apple-mail -- uvx mcp-apple-mail
Add -g to install the skill globally, or -a <agent> to target a specific agent.
apple-mail-mcp-vX.Y.Z.mcpb from Releases.mcpb file and grant Mail.app permissionsgit clone https://github.com/patrickfreyer/apple-mail-mcp.git
cd apple-mail-mcp/plugin
python3 -m venv venv
venv/bin/pip install -r requirements.txt
claude mcp add apple-mail -- /bin/bash $(pwd)/start_mcp.sh
| Tool | Description |
|---|---|
get_inbox_overview |
Dashboard with unread counts, folders, and recent emails |
list_inbox_emails |
List emails with account/read-status filtering and optional content preview |
get_mailbox_unread_counts |
Unread counts per mailbox or per-account summary |
list_accounts |
List all configured Mail accounts |
search_emails |
Unified search — subject, sender, body text, dates, attachments, flag status/color, cross-account |
get_email_thread |
Conversation thread view |
| Tool | Description |
|---|---|
list_mailboxes |
Folder hierarchy with message counts |
create_mailbox |
Create new mailboxes (supports nested paths) |
move_email |
Move/archive emails with filters (subject, sender, date, read status, dry-run) |
update_email_status |
Mark read/unread, flag/unflag (optional flag color) — by filters or message IDs |
manage_trash |
Soft delete, permanent delete, empty trash (with dry-run) |
| Tool | Description |
|---|---|
compose_email |
Send new emails (plain text or HTML body) |
reply_to_email |
Reply or reply-all with optional HTML body |
forward_email |
Forward with optional message, CC/BCC |
manage_drafts |
Create, list, send, and delete drafts |
create_rich_email_draft |
Build a rich HTML .eml draft, open it in Mail, and optionally save it to Drafts |
| Tool | Description |
|---|---|
list_email_attachments |
List attachments with names and sizes |
save_email_attachment |
Save attachments to disk |
| Tool | Description |
|---|---|
get_awaiting_reply |
Find sent emails that haven't received a reply |
get_needs_response |
Identify emails that likely need your response |
get_top_senders |
Analyse most frequent senders by count or domain |
| Tool | Description |
|---|---|
get_statistics |
Email analytics (volume, top senders, read ratios) |
export_emails |
Export single emails or mailboxes to TXT/HTML |
inbox_dashboard |
Interactive UI dashboard (requires mcp-ui-server) |
Pass --read-only to block delivery. Nothing leaves the machine: compose_email and reply_to_email refuse mode="send", manage_drafts refuses action="send", and forward_email is removed entirely because it has no non-sending mode.
The composing tools stay registered so that mode="draft" and mode="open" keep working. Those never deliver anything, and they are the only place in the compose surface that supports attachments — manage_drafts and create_rich_email_draft cannot attach files.
{
"mcpServers": {
"apple-mail": {
"command": "/path/to/venv/bin/python3",
"args": ["/path/to/apple_mail_mcp.py", "--read-only"]
}
}
}
Set the USER_EMAIL_PREFERENCES environment variable to give the assistant context about your workflow:
{
"mcpServers": {
"apple-mail": {
"command": "/path/to/venv/bin/python3",
"args": ["/path/to/apple_mail_mcp.py"],
"env": {
"USER_EMAIL_PREFERENCES": "Default to BCG account, show max 50 emails, prefer Archive and Projects folders"
}
}
}
}
For .mcpb installs, configure this in Claude Desktop under Developer > MCP Servers > Apple Mail MCP.
Batch operations have conservative defaults to prevent accidental bulk actions:
| Operation | Default Limit |
|---|---|
update_email_status |
10 emails |
manage_trash |
5 emails |
move_email |
1 email |
Override via function parameters when needed.
By default the server can write and attach files anywhere your user account can, except a hardened denylist of locations an attacker could use for code execution or credential theft. (Attachment bytes come from whoever emailed you, and a prompt-injected email can steer tool arguments.)
Writes (save_email_attachment, export_emails, create_rich_email_draft's output_path) are refused for:
~/.zshrc, ~/.zshenv, ~/.zprofile, ~/.zlogin, ~/.bashrc, ~/.bash_profile, ~/.profile), ~/.ssh, ~/.gnupg, ~/.aws, ~/.config (incl. ~/.config/git), ~/.gitconfig, ~/.netrc, ~/.envrc, ~/.local/bin, ....git/hooks, .git/config and .envrc in any folder~/Library/LaunchAgents, ~/Library/LaunchDaemons, /Library/LaunchAgents, /Library/LaunchDaemons, ~/Library/Application Support (incl. com.apple.backgroundtaskmanagementagent), ~/Library/Application Scripts, ~/Library/Preferences, ~/Library/Keychains, ~/Library/Mail, ~/Library/Containers, ...PATH: ~/bin, /usr/local/bin, /opt/homebrew/bin, and /etcAttachments (compose_email, reply_to_email, ...) may be any readable file except secrets: ~/.ssh, ~/.gnupg, ~/.aws, ~/.netrc, ~/.git-credentials, ~/.config/gh, .env files, ~/Library/Keychains, and browser profiles and cookie stores (Safari, Chrome, Firefox, Edge, Brave, Arc, ...).
Paths are resolved (~, .., symlinks) before checking, and matching is case-insensitive like APFS.
Restricting further (opt-in). To confine writes or attachments to specific folders, list them (colon-separated) in the server's env, or pass --write-dir / --attach-dir (repeatable) as arguments. Once set, only those folders are allowed for that side, and the denylist still applies inside them. The tool's own cache (~/Library/Caches/apple-mail-mcp, the default rich-draft location) stays writable.
"env": {
"APPLE_MAIL_MCP_WRITE_DIRS": "~/Downloads:~/Documents/mail-exports",
"APPLE_MAIL_MCP_ATTACH_DIRS": "~/Documents:~/Desktop"
}
Show me an overview of my inbox
Search for emails about "project update" in my Gmail
Reply to the email about "Domain name" with "Thanks for the update!"
Move emails with "invoice" in the subject to my Archive folder
Show me email statistics for the last 30 days
Create a rich HTML draft for a weekly update and open it in Mail
Use create_rich_email_draft when you need a visually formatted email, newsletter, or leadership update.
.eml file with mu