A side-by-side look at the Titan Email MCP and Proton Mail MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Titan Email MCP for communication work as a local process; choose Proton Mail MCP for communication as a local process. You can also run both side by side in one mcpServers block.
TITAN_EMAIL, TITAN_PASSWORD, TITAN_PROVIDER, TITAN_FROM_NAME, TITAN_ALLOW_SEND, TITAN_IMAP_HOST, TITAN_IMAP_PORT, TITAN_SMTP_HOST.test_connection, list_folders, list_emails.PROTONMAIL_USERNAME, PROTONMAIL_PASSWORD, READONLY, ALLOW_FILE_DOWNLOAD_DIR, ALLOW_EMPTY_FOLDER, RESTRICT_OUTBOUND_TO_SELF.send_email, reply_email, reply_all_email.Rows where the two servers differ are marked.
| Spec | T Titan Email MCP | |
|---|---|---|
| Category | Communication | Communication |
| Quality signal | 53/100 · Good | 63/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | other | other |
| Pricing | Free | Free |
| Required env vars | TITAN_EMAILTITAN_PASSWORDTITAN_PROVIDERTITAN_FROM_NAMETITAN_ALLOW_SENDTITAN_IMAP_HOSTTITAN_IMAP_PORTTITAN_SMTP_HOST | PROTONMAIL_USERNAMEPROTONMAIL_PASSWORDREADONLYALLOW_FILE_DOWNLOAD_DIRALLOW_EMPTY_FOLDERRESTRICT_OUTBOUND_TO_SELF |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 6 |
| Directory activity | 0 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 10 | 32 |
| Full listing | View Titan Email MCP | View Proton Mail MCP |
test_connectionVerifies IMAP + SMTP login without touching any mail. **Run this first.list_foldersFolders with message / unread counts.list_emailsLatest emails in a folder (optionally unread only).search_emailsFilter by from, to, subject, text, date range, unread.read_emailFull message by UID: headers, text body, attachment list.send_emailSend new mail (copy saved to Sent). Disabled when `TITAN_ALLOW_SEND=false`.reply_emailThreaded reply / reply-all, or save the reply as a draft instead of sending.save_draftSave to Drafts without sending — always available, even in read-only mode.move_emailMove messages to another folder (Archive, Trash, etc.).set_flagsMark read/unread, flag/unflag.send_emailSend an email using Proton Mail SMTP.reply_emailReply to a message with proper threading headers (In-Reply-To, References). Includes the quoted original message with attribution by default.reply_all_emailReply to all original recipients (sender + TO + CC), excluding the authenticated user. Same threading + quoting semantics as `reply_email`. Use this instead of `reply_email` + `replyAll: true` for clarity. Self-exclusion covers the whole recipient set including the primary `To`: replying-all to a m…forward_emailForward a message to new recipients. Original attachments are carried forward by default. Unlike reply, a forward does **not** set `In-Reply-To`/`References` — it starts its own conversation and leaves the original message's `\Answered` flag untouched.save_draftSave an email as a draft without sending it. The draft is placed in the user's `\Drafts` special-use folder (resolved at runtime; falls back to literal `Drafts` if no annotation). Returns the draft UID when available.list_foldersList all mailbox folders with message and unread counts. No parameters. Counts come from a cached IMAP STATUS that Proton Bridge can serve stale — for an exact count (e.g. before deleting or emptying a folder), use `count_messages` or `folder_stats`, which query the live mailbox. The output include…list_messagesList recent messages from a folder. Supports UID-based pagination.read_messageRead a specific message by UID. Returns full headers, body, and attachment metadata. Prefers plain text; strips HTML tags from HTML-only messages. Body-part selection skips parts marked `Content-Disposition: attachment`, so a `text/plain` attachment sitting next to an HTML body is never returned as…list_attachmentsList attachment metadata (part numbers, filenames, types, sizes) for a message without downloading the body. Composes with `download_attachment` for bulk extraction. The reported size is the **decoded** file size (roughly what you get on save), **estimated** from the IMAP-encoded octet count — base…download_attachmentDownload an attachment by MIME part number. Use `list_attachments` or `read_message` first to see available parts. By default returns base64-encoded content inline. Bad part numbers produce an actionable error listing known parts.search_messagesSearch messages by various criteria. Date filters use IMAP semantics: `since` is inclusive, `before` is exclusive.get_threadGet all messages in a conversation thread by walking In-Reply-To and References headers. Returns messages sorted chronologically (oldest first).Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"titan-email-mcp": {
"command": "npx",
"args": [
"-y",
"titan-email-mcp"
],
"env": {
"TITAN_EMAIL": "YOUR_TITAN_EMAIL_HERE",
"TITAN_PASSWORD": "YOUR_TITAN_PASSWORD_HERE",
"TITAN_PROVIDER": "YOUR_TITAN_PROVIDER_HERE",
"TITAN_FROM_NAME": "YOUR_TITAN_FROM_NAME_HERE",
"TITAN_ALLOW_SEND": "YOUR_TITAN_ALLOW_SEND_HERE",
"TITAN_IMAP_HOST": "YOUR_TITAN_IMAP_HOST_HERE",
"TITAN_IMAP_PORT": "YOUR_TITAN_IMAP_PORT_HERE",
"TITAN_SMTP_HOST": "YOUR_TITAN_SMTP_HOST_HERE"
}
}
}
}
{
"mcpServers": {
"sethbang-proton-mail-mcp": {
"command": "npx",
"args": [
"-y",
"proton-mail-mcp"
],
"env": {
"PROTONMAIL_USERNAME": "YOUR_PROTONMAIL_USERNAME_HERE",
"PROTONMAIL_PASSWORD": "YOUR_PROTONMAIL_PASSWORD_HERE",
"READONLY": "YOUR_READONLY_HERE",
"ALLOW_FILE_DOWNLOAD_DIR": "YOUR_ALLOW_FILE_DOWNLOAD_DIR_HERE",
"ALLOW_EMPTY_FOLDER": "YOUR_ALLOW_EMPTY_FOLDER_HERE",
"RESTRICT_OUTBOUND_TO_SELF": "YOUR_RESTRICT_OUTBOUND_TO_SELF_HERE"
}
}
}
}