The design detail worth noticing is the anti-search tooling: unread mail, latest mail, mailbox statistics and an account summary each have their own tool, so "what needs attention" does not become a search query returning a wall of messages. Bulk operations and label add/remove that preserve other mailbox assignments make inbox cleanup safe to hand over, and one-click unsubscribe is deliberately narrow — HTTPS only, and only where the message advertises support for it.
A Fastmail server over JMAP. It covers mail, mailboxes, calendars and contacts in one account, with separate tools for the common questions so you are not writing search filters for everything.
- Search by sender, recipient, subject, date range, attachments or full text — and dedicated tools for the two questions search is usually misused for: what is unread, and what arrived most recently
- One email in full, one thread in chronological order, or just the headers — unsubscribe, reply routing, return path and authentication — without pulling the body
- A mailbox browsed page by page, attachments listed before you fetch them, and one attachment downloaded by blob ID as text or base64
- Sending: a new message from one of your sender identities, a reply with In-Reply-To and References set for you, a forward, or a draft saved now and sent later
- Filing: move between mailboxes, add or remove labels while leaving other assignments alone, flag and unflag, mark read and unread, archive, and delete to Trash or permanently
- The same operations across many messages at once, plus marking a whole mailbox read in one call
- Compact overviews instead of long listings — per-mailbox email, unread and thread counts, and an account-level summary with top mailboxes
- One-click unsubscribe, which only posts to HTTPS List-Unsubscribe URLs where List-Unsubscribe-Post advertises it
- Mailboxes created, renamed and deleted, with force required to delete one that still has contents
- Calendars listed, events read by date range or ID, created, updated and deleted
- Address books listed, contacts searched, read, created, updated and deleted
- Summaries and drafted replies produced through your own client's model, when the client supports sampling
- A capability check that reports which Fastmail feature groups and client capabilities are actually available, with setup guidance for the missing ones
A Fastmail account on the Standard or Professional plan and an API token with JMAP access. Create it under Settings → Privacy & Security → Manage API tokens and grant Mail, Calendars and Contacts read and write, then pass it as FASTMAIL_API_TOKEN. Node.js 18 or later; run it with npx @jordonh19/fastmail-mcp-server over stdio, from the npm package @jordonh19/fastmail-mcp-server, currently 1.3.0. Adding --transport http --port 3000 serves a single /mcp endpoint over Streamable HTTP plus a browser dashboard, whose one-time access token is printed to the console at startup. The summarize and reply-drafting tools need an MCP client that supports sampling.
One command plus a key — npx @jordonh19/fastmail-mcp-server, then supply credentials
