Skip to content
Agentmart
Submit a tool

IMAP MCP Server

IMAP/SMTP MCP server to search, read, organize, send, reply & forward email for AI assistants

Connector by nikolausm · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 112
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/nikolausm-imap-mcp-server

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

IMAP/SMTP MCP server to search, read, organize, send, reply & forward email for AI assistants

Use cases: email

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
12 read · 16 write · 9 delete · 3 not yet classified
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Tools by what they do 40

Read from the source code; the running server may list different tools.

Read 12 · Look things up without changing anything.

  • imap_check_spam
  • imap_domain_stats
  • imap_find_email_by_message_id
  • imap_find_thread_messages
  • imap_folder_status
  • imap_get_email
  • imap_get_latest_emails
  • imap_get_unread_count
  • imap_list_accounts
  • imap_list_folders
  • imap_list_spam_domains
  • imap_search_emails

Write 16 · Create, change, send or run things.

  • imap_add_account
  • imap_add_keyword
  • imap_add_spam_domain
  • imap_add_whitelist_domain
  • imap_create_folder
  • imap_download_attachment
  • imap_flag_email
  • imap_forward_email
  • imap_mark_as_read
  • imap_mark_as_unread
  • imap_move_email
  • imap_reply_to_email
Show 4 more tools
  • imap_save_draft
  • imap_send_email
  • imap_update_account
  • imap_upload_file

Delete 9 · Delete, drop, revoke or wipe things.

  • imap_bulk_delete
  • imap_bulk_delete_by_search
  • imap_delete_by_domain
  • imap_delete_email
  • imap_delete_spam
  • imap_remove_account
  • imap_remove_keyword
  • imap_remove_spam_domain
  • imap_unflag_email

Not yet classified 3 · We could not tell from the name and description.

  • imap_connect
  • imap_disconnect
  • imap_test_account

Files it touches

  • Any path the agent passes to its tools

Tools (40)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • imap_add_account

    Add a new IMAP account configuration

  • imap_add_keyword

    Set an arbitrary custom (non-system) IMAP keyword/label on an email — 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, \Deleted) — use the dedicated flag/read tools for those. Not every IMAP server permits custom keywords (see the mailbox's PERMANENTFLAGS) — if the server rejects or silently ignores the change, this call fails…

  • imap_add_spam_domain

    Add a domain to the custom spam list. Emails from this domain will be flagged as spam.

  • imap_add_whitelist_domain

    Add a domain to the whitelist. Emails from whitelisted domains will never be flagged as spam.

  • imap_bulk_delete

    Delete multiple emails at once with chunking and auto-reconnection. Processes deletions in batches to prevent connection timeouts.

  • imap_bulk_delete_by_search

    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 — a call with no criteria is refused so it can never wipe an entire folder. Supports dryRun to preview matches first.

  • imap_check_spam

    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 that pass the domain check. Returns domain-based spam, a separate list of header-flagged mails, and domain statistics.

  • imap_connect

    Connect to an IMAP account

  • imap_create_folder

    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.

  • imap_delete_by_domain

    Delete all emails from a specific domain. Useful for cleaning up unwanted newsletters or spam.

  • imap_delete_email

    Delete ONE email by folder + uid (moves to Trash or expunges, server-dependent). Destructive and not easily undone — 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.

  • imap_delete_spam

    Find and delete emails from known spam/disposable email domains.

  • imap_disconnect

    Disconnect from an IMAP account

  • imap_domain_stats

    Get statistics about sender domains in a folder. Useful for identifying bulk senders or spam patterns.

  • imap_download_attachment

    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.

Show 25 more tools
  • imap_find_email_by_message_id

    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 → Archive → Sent → remaining folders.

  • imap_find_thread_messages

    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 — avoids the N+1 cost of calling imap_get_email per thread member.

  • imap_flag_email

    Flag an email — 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.

  • imap_folder_status

    Get status information about a folder

  • imap_forward_email

    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.

  • imap_get_email

    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 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_get_latest_emails

    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 instead, use imap_search_emails.

  • imap_get_unread_count

    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.

  • imap_list_accounts

    List all configured IMAP accounts

  • imap_list_folders

    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 — 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 folder's role independent of its localized name (e.g. "Gesendet" is the Sent folder when specialUse is "\\Sent").

  • imap_list_spam_domains

    List all known spam domains (built-in and custom).

  • imap_mark_as_read

    Mark 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).

  • imap_mark_as_unread

    Mark one or many emails as unread. Accepts a single UID or an array — pass an array to flag N messages in one IMAP STORE round-trip.

  • imap_move_email

    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.

  • imap_remove_account

    Remove an IMAP account configuration

  • imap_remove_keyword

    Remove an arbitrary custom (non-system) IMAP keyword/label from an email — 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, \Seen, \Deleted) — use the dedicated flag/read tools for those. Not every IMAP server permits custom keywords (see the mailbox's PERMANENTFLAGS) — if the server rejects or silently ignores the change, this c…

  • imap_remove_spam_domain

    Remove a domain from the custom spam list.

  • imap_reply_to_email

    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 To (and Cc as Cc), excluding the account's own address; a Reply-To header on the original is honoured. 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 when configured.

  • imap_save_draft

    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).

  • imap_search_emails

    Note: 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"…

  • imap_send_email

    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 HTML, and attachments by base64 content or by file path (see imap_upload_file for large files).

  • imap_test_account

    Test an existing account connection without re-entering credentials. Validates IMAP connectivity and returns folder count and message count.

  • imap_unflag_email

    Unflag an email — 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, check the message's customKeywords via imap_get_email and remove the lingering label with imap_remove_keyword.

  • imap_update_account

    Update an existing IMAP account. Useful for fixing SMTP settings without removing and re-adding the account.

  • imap_upload_file

    Description is built at runtime.

Compare and alternatives

    Featured in

    Signals

    Stars
    112
    Forks
    58
    Open issues
    3
    Contributors
    21
    Last commit
    Oct 21, 2026 (7 days ago)
    Last release
    Oct 9, 2026 (19 days ago)

    From GitHub (fetched Oct 24, 2026).

    Details

    Registry name
    io.github.nikolausm/imap-mcp-server
    Version
    2.2.0
    Auth
    No auth
    Packages
    npm imap-mcp-server
    License
    MIT
    First seen
    Oct 24, 2026
    Last checked
    Oct 24, 2026

    Same server elsewhere

    Copies of this server published by others; search shows only one of them.

    Cite this page

    IMAP MCP Server. Agent Mart. https://agentmart.dev/connectors/nikolausm-imap-mcp-server (last updated 2026-10-24)