A side-by-side look at the Imap MCP Server and Email MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Imap MCP Server for communication work as a local process; choose Email MCP for communication as a local process. You can also run both side by side in one mcpServers block.
imap_add_account, imap_update_account, imap_list_accounts.email_list_accounts, email_add_account, email_remove_account.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Communication | Communication |
| Quality signal | 68/100 · Great | 68/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | other |
| Pricing | Not declared | Free |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 111 | 24 |
| Directory activity | 1 views 0 installs 0 upvotes | 5 views 0 installs 0 upvotes |
| Tools | 40 | 33 |
| Full listing | View Imap MCP Server | View Email MCP |
imap_add_accountAdd a new IMAP account configurationimap_update_accountUpdate an existing IMAP account. Useful for fixing SMTP settings without removing and re-adding the account.imap_list_accountsList all configured IMAP accountsimap_remove_accountRemove an IMAP account configurationimap_connectConnect to an IMAP accountimap_disconnectDisconnect from an IMAP accountimap_test_accountTest an existing account connection without re-entering credentials. Validates IMAP connectivity and returns folder count and message count.imap_search_emailsNote: on some servers a 'flagged' or starred message carries a custom keyword (e.g. an Open-Xchange color label or Apple's $MailFlagBit*) instead of, or in addition to, the \Flagged system flag. After any flagged search, inspect each result's customKeywords field before concluding a message is or isn't flagged — do not rely on the flagged filter alone. Search for emails matching criteria (sender, recipient, subject, body text, date range, read/flagged status). Use this to FIND messages when you know something about them but not their UID — e.g. "emails from amazon last week", "unread invoices". By default searches a single folder (INBOX). Set searchAllFolders=true to scan every mailbox at once — this catches messages filed away by rules (e.g. a receipt routed to a custom folder); Trash/Spam/Drafts are skipped unless you opt in. By default returns lightweight headers (uid, from, subject, date, and folder when searching across folders); set `includeBody=true` to also return the parsed body in one round-trip instead of paying the N+1 cost of calling imap_get_email per match. For the newest messages without criteria, prefer imap_get_latest_emails.imap_get_emailRead the FULL content of a single email by its UID (body, sender/recipients, date, attachment list, optional raw headers and text-attachment previews). By default the body is returned as clean Markdown in markdownContent and raw HTML is omitted so it never crosses the boundary; set bodyFormat to "html" for the legacy raw htmlContent, or "text" for plain text only. Use after imap_search_emails or imap_get_latest_emails gives you a uid. Body text is truncated to maxContentLength to protect the context window — raise it for long messages. To fetch attachment bytes, use imap_download_attachment.imap_upload_fileUpload a file to the server for use as an email attachment. Returns a path that can be used with imap_send_email attachments. This allows sending large attachments without hitting context window limits. Max size: 26214400 bytes (configurable via IMAP_MAX_UPLOAD_SIZE). Uploads are auto-deleted after 86400000 ms (configurable via IMAP_UPLOAD_TTL_MS).imap_download_attachmentDownload a single attachment from an email (folder + uid + attachment filename/contentId, as listed by imap_get_email). Images are returned inline for viewing; PDFs are saved and their text is extracted inline (extractText); other files are saved to the shared downloads directory (or savePath). Use when the user wants the actual file contents, not just the message body.imap_mark_as_readMark one or many emails as read. Accepts a single UID or an array — pass an array to flag N messages in one IMAP STORE round-trip (useful when triaging).email_list_accountsList all configured email accounts and their connection statusemail_add_accountAdd a new IMAP or iCloud email account (Gmail and Outlook require the setup wizard for OAuth)email_remove_accountRemove an email account: deletes its stored credentials, revokes the Google grant for Gmail accounts, and removes Outlook tokens from the local token cache. The result reports whether provider-side revocation succeeded.email_test_accountTest an email account connectionemail_list_foldersList all email folders for an accountemail_searchSearch emails with filters. By default returns compact results without full body content to save context. Set returnBody=true to include full email bodies.email_getGet a single email by IDemail_get_threadGet an email thread by thread IDemail_get_attachmentGet an email attachment by ID, returns base64 encoded dataemail_save_attachmentDownload an email attachment and save it directly to disk, returning metadata only (no base64 in the response) — avoids paying the token cost of round-tripping large attachments through the calling model. outputPath is relative to a fixed downloads directory (/home/user/.email-mcp/downloads, override with EMAIL_MCP_DOWNLOADS_DIR) and cannot escape it.email_sendSend a new emailemail_replyReply to an existing emailPaste 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": {
"imap-mcp-server": {
"command": "npx",
"args": [
"-y",
"imap-mcp-server"
]
}
}
}
{
"mcpServers": {
"marlinjai-email-mcp": {
"command": "npx",
"args": [
"-y",
"@marlinjai/email-mcp"
]
}
}
}