Skip to content
Agentmart
Submit a tool

Email MCP

IMAP/SMTP email MCP server — 52 tools, stdio + HTTP, IMAP IDLE push, multi-account, AI triage.

Connector by codefuturist · GitHub account verified by the MCP Registry

IndexedLGPL-3.0Local (stdio)★ 135
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/codefuturist-email-mcp

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 email MCP server — 52 tools, stdio + HTTP, IMAP IDLE push, multi-account, AI triage.

Use cases: email, scheduling

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
27 read · 18 write · 7 delete
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Tools by what they do 52

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

Read 27 · Look things up without changing anything.

  • analyze_email_for_scheduling
  • check_calendar_permissions
  • check_clipboard_setup
  • check_health
  • check_notification_setup
  • download_attachment
  • extract_calendar
  • extract_contacts
  • find_email_folder
  • get_email
  • get_email_stats
  • get_email_status
Show 15 more tools
  • get_emails
  • get_hooks_config
  • get_thread
  • get_watcher_status
  • list_accounts
  • list_calendars
  • list_emails
  • list_events
  • list_labels
  • list_mailboxes
  • list_presets
  • list_reminders
  • list_scheduled
  • list_templates
  • search_emails

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

  • add_label
  • add_to_calendar
  • apply_template
  • configure_alerts
  • configure_verification
  • create_label
  • create_mailbox
  • create_reminder
  • forward_email
  • get_verification_code
  • mark_email
  • move_email
Show 6 more tools
  • rename_mailbox
  • reply_email
  • save_draft
  • schedule_email
  • send_email
  • test_notification

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

  • bulk_action
  • cancel_scheduled
  • delete_email
  • delete_label
  • delete_mailbox
  • remove_label
  • send_draft

Files it touches

  • Any path the agent passes to its tools

Tools (52)

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

  • add_labelAdd label

    Add a label to an email. For ProtonMail, this copies the email into the corresponding Labels/<name> folder. For Gmail and standard IMAP, this sets a keyword flag on the message.

  • add_to_calendarAdd to calendar

    Add an email event to the local calendar (macOS Calendar.app / Linux via xdg-open). Automatically extracts event data from the email: ICS attachments, meeting URL (Zoom/Teams/Meet), conference dial-in / ID / passcode, attendees, and email body excerpt. All relevant email attachments (PDFs, docs, etc.) are saved locally and linked in the event notes. A native confirmation dialog is shown on macOS before the event is written. Returns one of: added | cancelled | timed_out | no_display.

  • analyze_email_for_schedulingAnalyze email for schedulingread-only

    Analyze an email to detect calendar events and/or reminder-worthy content. Returns structured analysis so the AI can decide whether to call add_to_calendar, create_reminder, both, or neither. Use this as the first step before creating any scheduling resource.

  • apply_templateApply template

    Apply an email template with variable substitution. Use action "preview" to see the result, "draft" to save as draft, or "send" to send immediately.

  • bulk_actionBulk actioncan change or delete data

    Batch operation on multiple emails by UID list. Supports mark_read, mark_unread, flag, unflag, move, and delete. Max 100 IDs per call. Returns success/failure counts.

  • cancel_scheduledCancel scheduledcan change or delete data

    Cancel a scheduled email. Removes it from the queue and deletes the associated draft.

  • check_calendar_permissionsCheck calendar permissionsread-only

    Check whether the local calendar is accessible. On macOS, verifies Calendar.app access (requires Privacy & Security → Calendars permission). Returns granted status and step-by-step setup instructions if access is denied.

  • check_clipboard_setupCheck clipboard setupread-only

    Diagnose the clipboard integration used for caught verification codes: platform tools, concealed-write support, current [settings.verification] values, and the watcher prerequisite. With test_write=true it performs a harmless clipboard round-trip (writes a test string, reads it back, clears it).

  • check_healthCheck healthread-only

    Check connection health, quota, and capabilities for email accounts, plus local cache size, coverage and hit ratio. Useful for diagnosing issues.

  • check_notification_setupCheck notification setupread-only

    Diagnose desktop notification support on this platform. Checks if required OS tools are available and provides setup instructions to enable notification permissions (macOS, Linux, Windows).

  • configure_alertsConfigure alerts

    Update alert/notification settings at runtime. Changes take effect immediately. Use save=true to persist changes to the config file. Omit any field to leave it unchanged.

  • configure_verificationConfigure verification catching

    Update [settings.verification] at runtime — changes take effect immediately, including starting/stopping the ambient catcher via `enabled`. Use save=true to persist to config.toml (previous file is backed up). Omit every field to see the current configuration. Registered in read-only mode too: this writes config, never the mailbox.

  • create_labelCreate label

    Create a new label. For ProtonMail, creates a folder under Labels/. For standard IMAP keywords, labels are auto-created on first use — this is a no-op.

  • create_mailboxCreate mailbox

    Create a new mailbox (folder). Use '/' as separator for nested folders (e.g., 'Work/Projects'). Use list_mailboxes to see existing folders.

  • create_reminderCreate reminder

    Create a reminder in macOS Reminders.app from an email. Shows a native confirmation dialog before adding. The reminder notes include a message: deep link that reopens the source email in Mail.app. Use for action items, deadlines, and follow-up tasks extracted from emails. Use analyze_email_for_scheduling first to let the AI decide if a reminder is appropriate.

Show 37 more tools
  • delete_emailDelete emailcan change or delete data

    Delete an email. By default moves to Trash. Set permanent=true for permanent deletion (⚠️ irreversible). The mailbox must be a real folder. Use find_email_folder first if the email was found in a virtual folder.

  • delete_labelDelete labelcan change or delete data

    Delete a label. For ProtonMail, deletes the label folder. For standard IMAP keywords, labels cannot be deleted server-wide — use remove_label on individual emails.

  • delete_mailboxDelete mailboxcan change or delete data

    ⚠️ DESTRUCTIVE: Permanently delete a mailbox and ALL its contents. This cannot be undone. Use list_mailboxes to verify the folder path.

  • download_attachmentDownload attachmentread-only

    Description is built at runtime.

  • extract_calendarExtract calendarread-only

    Extract calendar events (ICS/iCalendar) from an email. Returns structured event data including time, location, attendees, and status.

  • extract_contactsExtract contactsread-only

    Extract unique contacts from recent email headers. Returns contacts sorted by frequency (most frequent first). Useful for finding frequent correspondents or building an address book.

  • find_email_folderFind email folderread-only

    Find a real mailbox folder an email belongs to. Required before move_email or delete_email when the email was found in a virtual folder (e.g., "All Mail", "Starred"). Returns the first real folder path found, to use as sourceMailbox; on a label-based server a message may also sit in other folders.

  • forward_emailForward email

    Forward an email to new recipients with optional additional message. The original is converted to readable text and "> "-quoted below your note; its attachments are re-attached unless includeAttachments is false. Set html=true to also send an HTML part carrying the original HTML in a blockquote.

  • get_emailGet emailread-only

    Description is built at runtime.

  • get_email_statsGet email statsread-only

    Get email statistics and analytics for a mailbox. Shows volume, top senders, daily trends, and read/flagged counts.

  • get_email_statusGet email statusread-only

    Get the current read/flag/label state of an email without fetching its body. Much cheaper than get_email when you only need to check whether an email is unread, flagged, or which labels it has. Also useful to confirm the result of a mark_email call. Does NOT mark the email as seen.

  • get_emailsGet multiple emailsread-only

    Fetch the full content of multiple emails in a single call (max 20). More efficient than calling get_email repeatedly when triaging or summarising several emails. Does NOT mark emails as seen. Defaults to format="text" (HTML stripped) for compact, AI-friendly output. Each message carries the same 📰 newsletter / 🤖 automated marker as get_email.

  • get_hooks_configGet hooks configread-only

    Get the current AI hooks configuration including preset, rules, and custom instructions.

  • get_threadGet threadread-only

    Description is built at runtime.

  • get_verification_codeGet verification code

    Find the newest verification code (OTP/2FA) or sign-in magic link in recent mail, using false-positive-resistant scoring (EN/DE). Use wait_seconds (max 45) to wait for a mail still in flight; if nothing arrives, simply call again. Works without the watcher via polling — with [settings.watcher] enabled, hits land within ~1 second. Set copy_to_clipboard=true to also place the value on the clipboard (concealed from clipboard managers, auto-cleared). The code/link is returned in the result by design.

  • get_watcher_statusGet watcher statusread-only

    Get the status of IMAP IDLE watcher connections and recent activity.

  • list_accountsList accountsread-only

    List all configured email accounts. Call this first to discover available account names for use with other tools.

  • list_calendarsList calendarsread-only

    List all available local calendars (macOS Calendar.app / Linux default). Use the returned calendar names with add_to_calendar to target a specific calendar.

  • list_emailsList emailsread-only

    List emails in a mailbox with optional filters. Returns paginated results with metadata (read/unread 🔵, flagged ⭐, replied ↩️, attachments 📎, labels 🏷️). List or machine-generated mail is marked 📰 newsletter / 🤖 automated from its RFC headers, with the unsubscribe URI when the sender offers one — personal mail carries no marker. Use get_email to fetch full body content. ProtonMail note: labels are represented as IMAP folders — use list_labels to discover them, then list_emails with mailbox="Labels/X" to find labeled emails.

  • list_eventsList eventsread-only

    List local calendar events with optional filters. Search by title, date range, or calendar name. Use to check for existing events before creating new ones, or to verify a recently added event. Returns event id, title, start/end time, location, and calendar name.

  • list_labelsList labelsread-only

    List available labels for an email account. Auto-detects the label system: ProtonMail folder-labels, Gmail X-GM-LABELS, or IMAP keywords. ProtonMail note: labels are represented as IMAP folders under the Labels/ prefix. Use list_emails with mailbox="Labels/<name>" to find emails tagged with a ProtonMail label.

  • list_mailboxesList mailboxesread-only

    List all mailbox folders for an account with unread counts and special-use flags. Use list_accounts first to get the account name.

  • list_presetsList presetsread-only

    List all available AI triage presets with their descriptions and suggested labels.

  • list_remindersList remindersread-only

    List reminders from macOS Reminders.app with optional filters. Search by title or list name. By default only shows incomplete reminders. Use to check for existing reminders before creating new ones, or to verify a recently added reminder. Returns reminder id, title, due date, completion status, priority, and list name.

  • list_scheduledList scheduledread-only

    List scheduled emails. Shows pending, sent, or all scheduled emails.

  • list_templatesList templatesread-only

    List all available email templates. Templates are TOML files in ~/.config/email-mcp/templates/ with {{variable}} placeholders for subject and body.

  • mark_emailMark email

    Change email flags — mark as read/unread, flag/unflag. Idempotent: marking an already-read email as read is a no-op.

  • move_emailMove email

    Move an email to a different mailbox folder. The sourceMailbox must be a real folder, not a virtual one like "All Mail". Use find_email_folder first if the email was discovered in a virtual folder.

  • remove_labelRemove label

    Remove a label from an email. For ProtonMail, this removes the email from the label folder. For Gmail and standard IMAP, this removes a keyword flag.

  • rename_mailboxRename mailbox

    Rename an existing mailbox (folder). Use list_mailboxes to see current folder paths.

  • reply_emailReply email

    Reply to an email with proper threading (In-Reply-To & References headers). Use get_email first to read the original. The original message is quoted below the reply by default (Thunderbird/Outlook style) — set quoteOriginal=false for the bare body only.

  • save_draftSave draft

    Save an email draft to the Drafts folder. Compose over time, then use send_draft to send it. Use list_emails with the Drafts mailbox to see saved drafts.

  • schedule_emailSchedule email

    Schedule an email to be sent at a specific time in the future. The email is queued locally and sent automatically when the time arrives.

  • search_emailsSearch emailsread-only

    Search emails by keyword across subject, sender, and body — and, where the local mirror is enabled, attachment filenames (searching "report" finds an email carrying Q3-report.pdf). Omit query (or pass an empty string) to use it as a pure filter — e.g. find all emails from a specific sender without a keyword. Supports additional filters for sender, recipient, date range (since/before — INTERNALDATE; sent_since/sent_before — Date: header), attachments, size, and reply status. At least one of query/from/to/since/before/sent_since/sent_before/has_attachment/larger_than/smaller_than/answered must b…

  • send_draftSend draftcan change or delete data

    Send an existing draft email and remove it from Drafts. The draft is fetched, sent via SMTP, then deleted. Use list_emails with the Drafts mailbox to find draft IDs.

  • send_emailSend email

    Send a new email. Supports plain text or HTML body, CC, and BCC.

  • test_notificationTest notification

    Send a test desktop notification to verify that OS permissions are correctly configured. Use check_notification_setup first to diagnose any issues.

Compare and alternatives

Featured in

Signals

Stars
135
Forks
62
Open issues
30
Weekly downloads
510
Last commit
Oct 16, 2026 (12 days ago)
Last release
Oct 10, 2026 (18 days ago)
Last package publish
Oct 10, 2026 (18 days ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.codefuturist/email-mcp
Version
0.6.0
Auth
No auth
License
LGPL-3.0
First seen
Oct 24, 2026
Last checked
Oct 25, 2026
Cite this page

Email MCP. Agent Mart. https://agentmart.dev/connectors/codefuturist-email-mcp (last updated 2026-10-25)