{"name":"io.github.nikolausm/imap-mcp-server","slug":"nikolausm-imap-mcp-server","title":null,"description":"IMAP/SMTP MCP server to search, read, organize, send, reply & forward email for AI assistants","url":"https://mcp.market/server/nikolausm-imap-mcp-server","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"email","tags":["email","search"],"presence":{"score":48,"stars":96,"forks":48,"downloads_week":528,"last_push_at":"2026-09-23T11:08:59.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/nikolausm/imap-mcp-server","website":null,"version":"2.0.0","remotes":[],"packages":[{"registryType":"npm","identifier":"imap-mcp-server","version":"2.0.0","transport":{"type":"stdio"}}],"tools":[{"name":"imap_add_account","description":"Add a new IMAP account configuration","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_add_keyword","description":"Set an arbitrary custom (non-system) IMAP keyword/label on an email \\u2014 e.g. a provider color label like Open-Xchange's $cl_1..$cl_10, Apple Mail's $MailFlagBit0..$MailFlagBit2, or an app tag such as $promotion. Unlike imap_flag_email (which only ever sets the system \\Flagged flag), this passes the keyword through verbatim, but rejects backslash-prefixed system flags (e.g. \\Flagged, \\Seen, \\Del","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_add_spam_domain","description":"Add a domain to the custom spam list. Emails from this domain will be flagged as spam.","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_add_whitelist_domain","description":"Add a domain to the whitelist. Emails from whitelisted domains will never be flagged as spam.","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_bulk_delete","description":"Delete multiple emails at once with chunking and auto-reconnection. Processes deletions in batches to prevent connection timeouts.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_bulk_delete_by_search","description":"Search for emails matching criteria and delete them all. Useful for cleaning up spam or unwanted emails. At least one concrete criterion (from, to, subject, before, or since) is REQUIRED \\u2014 a call with no criteria is refused so it can never wipe an entire folder. Supports dryRun to preview matches first.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_check_spam","description":"Check emails in a folder for spam. Combines sender-domain checks (known spam/disposable domains, suspicious patterns) with deterministic raw-header analysis: bulk-mailer X-Mailer/User-Agent signatures, Precedence: bulk, DMARC/SPF/DKIM failures in Authentication-Results, and List-Unsubscribe / Reply-To domains that do not match the sender. Header checks catch scam mail from fresh, unlisted domains ","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_connect","description":"Connect to an IMAP account","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_create_folder","description":"Create a new IMAP folder/mailbox. Most servers also create any missing parent folders (e.g. creating \"Archives/2026/2026-05\" auto-creates \"Archives\" and \"Archives/2026\"). Returns success even if the folder already exists.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_delete_by_domain","description":"Delete all emails from a specific domain. Useful for cleaning up unwanted newsletters or spam.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_delete_email","description":"Delete ONE email by folder + uid (moves to Trash or expunges, server-dependent). Destructive and not easily undone \\u2014 confirm the user means this specific message. To remove many at once use imap_bulk_delete (known uids) or imap_bulk_delete_by_search (by criteria, supports dryRun). To file an email away instead of deleting, use imap_move_email.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_delete_spam","description":"Find and delete emails from known spam/disposable email domains.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_disconnect","description":"Disconnect from an IMAP account","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_domain_stats","description":"Get statistics about sender domains in a folder. Useful for identifying bulk senders or spam patterns.","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_download_attachment","description":"Download 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_find_email_by_message_id","description":"Locate an email by its RFC822 Message-ID across folders and return its current { folder, uid } plus basic envelope. Robust to the message having been moved or archived (IMAP UIDs are folder-relative). Pass the returned folder + uid to imap_reply_to_email or imap_get_email. Without `folders`, searches Gmail \\All Mail when present, else INBOX \\u2192 Archive \\u2192 Sent \\u2192 remaining folders.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_find_thread_messages","description":"Find messages in `searchFolder` that belong to the same conversation threads as messages already in `sourceFolder`. Useful for catching replies that arrived after a thread was sorted. Works on any IMAP server (uses RFC 3501 HEADER search on In-Reply-To and References). Set `includeBody=true` to also return the parsed body for each found thread message in one round-trip \\u2014 avoids the N+1 cost o","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_flag_email","description":"Flag an email \\u2014 sets the IMAP \\Flagged system flag (shows as a star in Gmail / a flag in Apple Mail). Use this tool when a user asks to star, flag, or mark a message as important.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_folder_status","description":"Get status information about a folder","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_forward_email","description":"Forward an existing email (folder + uid) to new recipients, quoting the original message and headers. Optionally include the original attachments. Use when the user wants to pass an existing message on to someone else; use imap_reply_to_email instead to respond to the sender. Account defaultBcc addresses are always BCC'd when configured.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_get_email","description":"Read 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 i","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_get_latest_emails","description":"Get the most recent emails from a folder, newest first. Use this for \"what just came in?\" / \"show my latest inbox messages\" when no search filter is needed. By default returns lightweight headers (uid, from, subject, date); 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 message. To filter by sender/subject/date i","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_get_unread_count","description":"Count unread (unseen) emails per folder, plus a total. Use for \"how many unread do I have?\" overviews. Defaults to all folders; pass a folders list to limit scope and speed it up.","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_list_accounts","description":"List all configured IMAP accounts","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_list_folders","description":"List all folders/mailboxes for an account (names, hierarchy delimiter, attributes, RFC 6154 special-use role). Use this first to discover exact folder names before searching, moving, or creating subfolders \\u2014 folder naming varies by provider (e.g. \"Archive\" vs \"[Gmail]/All Mail\" vs \"INBOX.Archive\"). The specialUse field (\"\\\\Sent\", \"\\\\Drafts\", \"\\\\Trash\", \"\\\\Junk\", \"\\\\Archive\") identifies a fold","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_list_spam_domains","description":"List all known spam domains (built-in and custom).","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_mark_as_read","description":"Mark one or many emails as read. Accepts a single UID or an array \\u2014 pass an array to flag N messages in one IMAP STORE round-trip (useful when triaging).","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_mark_as_unread","description":"Mark one or many emails as unread. Accepts a single UID or an array \\u2014 pass an array to flag N messages in one IMAP STORE round-trip.","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_move_email","description":"Move an email from one folder to another (e.g., INBOX to Taxes, or INBOX to Archive). Optionally creates the destination folder if it does not exist.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_remove_account","description":"Remove an IMAP account configuration","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_remove_keyword","description":"Remove an arbitrary custom (non-system) IMAP keyword/label from an email \\u2014 e.g. a provider color label like Open-Xchange's $cl_1..$cl_10, Apple Mail's $MailFlagBit0..$MailFlagBit2, or an app tag such as $promotion. Unlike imap_unflag_email (which only ever clears the system \\Flagged flag), this passes the keyword through verbatim, but rejects backslash-prefixed system flags (e.g. \\Flagged, \\S","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_remove_spam_domain","description":"Remove a domain from the custom spam list.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_reply_to_email","description":"Reply to an existing email identified by folder + uid. Automatically sets the recipient to the original sender, prefixes the subject with \"Re:\", and preserves threading (In-Reply-To/References). Set replyAll to also include the original recipients. Use this instead of imap_send_email whenever the user is responding to a message already in a mailbox. Account defaultBcc addresses are always BCC'd wh","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_save_draft","description":"Save an email as a draft in the Drafts folder (no send). Takes the same fields as imap_send_email (including account defaultBcc when configured).","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_search_emails","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_send_email","description":"Compose and send a NEW email via the account's SMTP server (a copy is saved to Sent unless disabled; account defaultBcc addresses are always BCC'd when configured). Use for fresh outbound messages. To respond to an existing message use imap_reply_to_email (keeps threading); to pass a message on use imap_forward_email; to store without sending use imap_save_draft. Supports to/cc/bcc, text and/or HT","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_test_account","description":"Test an existing account connection without re-entering credentials. Validates IMAP connectivity and returns folder count and message count.","write_action":false,"price_micros":0,"input_schema":null},{"name":"imap_unflag_email","description":"Unflag an email \\u2014 removes the IMAP \\Flagged system flag (the star in Gmail, the flag in Apple Mail). Note: some servers (e.g. Open-Xchange / Network Solutions) and Apple Mail also write a separate custom keyword such as $cl_N or $MailFlagBit* when a message is flagged in their client. Removing \\Flagged alone does not clear that keyword, so the message may still display as flagged. If it does,","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_update_account","description":"Update an existing IMAP account. Useful for fixing SMTP settings without removing and re-adding the account.","write_action":true,"price_micros":0,"input_schema":null},{"name":"imap_upload_file","description":"Upload 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: … bytes (configurable via IMAP_MAX_UPLOAD_SIZE). Uploads are auto-deleted after … ms (configurable via IMAP_UPLOAD_TTL_MS).","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-24T05:06:17.859Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T05:06:17.819Z","components":{"code":{"score":25,"max":25,"notes":["5 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"imap-mcp-server","version":"2.0.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":17,"publishedAt":"2026-08-05T09:50:52.166Z","repositoryUrl":"git+https://github.com/nikolausm/imap-mcp-server.git","weeklyDownloads":528}],"repo":{"found":true,"owner":"nikolausm","repo":"imap-mcp-server","archived":false,"pushedAt":"2026-09-23T11:08:59Z","stars":96,"forks":48,"openIssues":7,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/5160061?v=4","ownerCreatedAt":"2013-08-04T14:24:05Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/5160061?v=4&s=128","source":"github"},"presence":{"stars":96,"forks":48,"downloadsWeek":528,"license":"MIT","lastPushAt":"2026-09-23T11:08:59.000Z","score":48}}}},"grade_history":[],"reviews":[]}