Two decisions carry it. Search returns compact results and only pulls bodies when you ask, so scanning an inbox does not fill the context window. And email_transfer moves messages between accounts by their raw MIME, which is why sender, date and threading survive a consolidation that would otherwise rewrite every header.
A multi-account email server that uses each provider's native API where one exists — Gmail's REST API, Microsoft Graph — and falls back to IMAP and SMTP everywhere else.
- Accounts as first-class objects: add, remove, test and list them with their connection status, several at once and across providers
- Search with filters on sender, recipient, subject, body, date range, unread, starred and attachments — compact by default, with returnBody=true when you want the full text
- Reading: one message by ID, a whole thread by thread ID, folder listings, and an attachment fetched by ID as base64
- Writing: send with cc and bcc, reply with reply-all and threading preserved, forward to new recipients, and create and list drafts
- Organising: move a message, delete to trash or permanently, mark read, starred or flagged, create folders, and manage Gmail labels or read Outlook categories
- Batch versions of delete, move and mark for whole swathes of a mailbox at once — up to 1000 messages for Gmail, batches of 20 for Outlook, UID ranges for IMAP, all with a sequential fallback
- email_transfer moves or copies messages between accounts as raw MIME, keeping sender, date and threading intact, and with deleteAfter it only trashes the source once the import is confirmed
One setup pass per mailbox, through the wizard: npx @marlinjai/email-mcp setup. Gmail and Outlook go through a browser OAuth flow using built-in PKCE credentials, so there is nothing to register unless you want your own app — a Desktop OAuth client with the Gmail API enabled, or an Azure app with Mail.ReadWrite, Mail.Send and offline_access. iCloud takes an app-specific password from appleid.apple.com; a generic IMAP account takes host, port and credentials, plus SMTP details for sending. Credentials are stored encrypted at rest with AES-256-GCM under machine-derived keys. The server itself runs over stdio via npx @marlinjai/email-mcp.
One command plus a key — npx @marlinjai/email-mcp, then supply credentials
