AnyMail MCP v0.0.1-rc.1
Pre-release
Pre-release
·
28 commits
to main
since this release
[0.0.1-rc.1] - 2026-07-15
First release candidate. The earlier v0.1.0–v0.3.0 tags and releases have been
withdrawn and the version reset: this project is pre-1.0, the public version history
restarts here, and interfaces may still change without notice. Everything below is the
current feature set, not a diff against a withdrawn build.
Added
- Multi-account, multi-provider email MCP engine (Node/TypeScript), exposing full
CRUD over IMAP/SMTP to any MCP client. One agent session can span several mailboxes
across different providers; every tool takes an optionalaccount. - Providers — Gmail (labels, threads, native
X-GM-RAWsearch) plus a generic
IMAP/SMTP provider for iCloud, Fastmail, or any host
(--provider icloud|fastmail|imap, with custom host/port). Non-Gmail accounts are
folder-based: no labels, no server-side threads, text-only search.list_accounts
reports each account's provider so an agent can tell which rules apply. - Per-message tools —
list_accounts,search_messages,get_message,
get_thread,list_labels,get_attachment,send_message,create_draft,
create_label,modify_labels,mark_read,mark_unread,star,unstar,
archive,move_message,trash_message,delete_message,add_account. - Query-first bulk tools —
mark_all_read,bulk_modify_labels,bulk_move,
bulk_trash,bulk_delete,empty_spam,empty_trash. Each takes
{query?, mailbox?, dryRun?, confirm?, max?}and acts on the whole matching set in
one pass instead of one call per message.dryRun:truepreviews the count and a
sample; destructive or >100-message batches requireconfirm:true; partial failures
are reported, never hidden. Spam and Trash are reachable viamailbox. - Resumable bulk — removing ops (trash / move / delete / empty) act on up to
max
(default 2000) messages per call and return{matched, affected, remaining, done};
whendone:false, re-run the same call to continue. Keeps a 10k-message sweep under
the client's tool timeout. - Two transports from one engine — stdio, and an always-on local HTTP server on
127.0.0.1:8765. - CLI for account management:
add,list,test,default,remove,
install,token.installregisters the server into Claude Desktop, Claude Code,
Cursor, VS Code and Windsurf. - macOS menu-bar app (Swift/AppKit) — supervises the engine, with an Add Account
window (provider picker + custom IMAP host/port), Install into Agents, and Start at
Login. The App Password never reaches the model: it is posted to the local engine,
which stores it in the Keychain. - "Create an App Password" assistant in the app — opens the provider's page in your
own browser, or hands the task to a local (Claude for Chrome) or cloud
(ChatGPT / Claude.ai) agent. It never automates the provider's page itself; cloud
options carry an inline full-mailbox exposure warning and are never the default. - Security — App Passwords only in the macOS Keychain; loopback-only bind;
bearer-token auth on every request; Origin validation (DNS-rebinding defense);
per-account read-only mode;confirm:truegate on permanent delete; stderr logging
with secret redaction.
Note for anyone running a withdrawn 0.1–0.3 build
The stored identifiers were renamed from gmail-mcp to anymail-mcp, so an upgrade
will not find your existing accounts or App Passwords. To carry them over:
mv ~/.gmail-mcp ~/.anymail-mcp # keeps accounts.json + your local server tokenThen re-add each account (anymail-mcp add <email>) to write its App Password under
the new Keychain service, and delete the stale gmail-mcp entries in Keychain Access.
Gmail-specific names (imap.gmail.com, [Gmail]/Spam, the X-GM-* extensions) are
unrelated to this and unchanged.