Multi-Mail Plugin

Talk to your own mail, calendar, and contact servers from Claude. Self-hosted, multi-account, no SaaS in the middle.
Multi-Mail plugs Claude into the open mail-server stack you already run — IMAP/SMTP, ManageSieve filters, CalDAV calendars, and CardDAV contacts. Add an email address and the plugin auto-discovers the rest. Once configured, just talk to Claude:
"Check my work email and reply to anything from Alice about the invoice."
"Set up a vacation auto-reply for next week."
"What's on my calendar Thursday?"
What you get
| |
|---|
| 34 MCP tools | Email read/send/reply/forward/move/flag, folder/Sieve management, calendar event CRUD, contact CRUD |
| Autodiscovery | Mozilla autoconfig, Microsoft/Mailcow Autodiscover, DNS SRV, and .well-known DAV — add an account by typing its email address |
| Multi-account | Add and remove accounts at runtime; switch contexts per request |
| Sieve filters | Manage server-side filtering rules via ManageSieve (RFC 5804) |
| Security by default | TLS verification, SSRF guard on every redirect hop, defusedxml parsing, DAV host pinning, 0600/0700 on the credentials file |
| No SaaS | All traffic goes from your machine to your mail server. The plugin talks to your servers, not ours. |
Install
Claude Desktop (recommended for most users)
- Grab the latest
.mcpb bundle from the releases page.
- In Claude Desktop, open Customize → Personal plugins, then drag the
.mcpb onto the panel. To update later, use the ⋮ menu on the existing entry to replace.
- Restart Claude Desktop.
- Install
uv if you don't have it — the server uses PEP 723 inline deps via uv run:
curl -LsSf https://astral.sh/uv/install.sh | sh
- Ask Claude: "Add my email account — [email protected]". Claude will run autodiscovery and walk you through it.
Claude Code
- Clone into Claude Code's plugin directory (or anywhere on disk; point Code at it via
/plugin):
git clone https://github.com/disko/multi-mail.git ~/.plugins/multi-mail
- Install
uv (same one-liner as above).
- Restart Claude Code. You'll see
/email-add-account, /email-remove-account, and /email-list-accounts slash commands plus the 34 MCP tools.
Updating later: git pull then restart the client.
Verify it's working
Ask Claude:
"List my email accounts."
You should see an empty list (or your accounts if you've already added some). If Claude tells you the tools aren't available, restart the client.
Try it
Once you've added at least one account:
| You say | Claude does |
|---|
| "Check my work email" | Lists recent INBOX messages |
| "Search for emails from alice about the invoice" | IMAP SEARCH FROM "alice" SUBJECT "invoice" |
| "Reply to that and say I'll be there" | email_reply with threading headers |
| "Forward this to the team" | email_forward with notes |
| "Move that to trash" / "Delete that for good" | email_delete_message (Trash by default; permanent=True to expunge) |
| "Create a folder called Archive/2026" | email_create_folder |
| "Show me my Sieve filters" / "Set up a vacation auto-reply" | email_sieve_* |
| "What's on my calendar this week?" | cal_list_events with a date window |
| "Create a meeting tomorrow at 2pm" | cal_create_event |
| "Find Bob's phone number in my contacts" | card_search_contacts |
| "Add a new contact for Alice" | card_create_contact |
Configuration
Accounts are stored at ~/.claude/multi-mail-accounts.json. The plugin creates and chmods this file (0600 on POSIX) — you can also edit it by hand. Each entry looks like:
{
"id": "work",
"display_name": "Work Email",
"email_address": "[email protected]",
"username": "[email protected]",
"password": "app-password-here",
"imap_host": "mail.example.com",
"imap_port": 993,
"imap_security": "ssl",
"smtp_host": "mail.example.com",
"smtp_port": 587,
"smtp_security": "starttls",
"sieve_host": null,
"sieve_port": 4190,
"sieve_security": "starttls",
"caldav_url": "https://mail.example.com/dav",
"carddav_url": "https://mail.example.com/dav"
}