productivitycommunication

Email (IMAP/SMTP)

by yunfeizhu

Securely access and manage your emails domains with IMAP Apple and SMTP. Enjoy reliable email delivery with IMAP/SMTP su

Provides IMAP/SMTP email access for reading messages and sending emails with secure connection support and environment-based credential management.

github stars

19

Secure TLS/SSL connection supportEnvironment-based credential managementNatural language email commands

best for

  • / AI-assisted email management and organization
  • / Automated email responses and workflows
  • / Quick email searches and summaries through chat

capabilities

  • / Search and read emails from any mailbox
  • / Send HTML and text emails with attachments
  • / Browse multiple mailboxes (Inbox, Sent, custom folders)
  • / Download and save email attachments
  • / Manage email operations with natural language commands

what it does

Connects your AI assistant to email accounts via IMAP/SMTP to read, search, and send emails directly from chat.

about

Email (IMAP/SMTP) is a community-built MCP server published by yunfeizhu that provides AI assistants with tools and capabilities via the Model Context Protocol. Securely access and manage your emails domains with IMAP Apple and SMTP. Enjoy reliable email delivery with IMAP/SMTP su It is categorized under productivity, communication.

how to install

You can install Email (IMAP/SMTP) in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.

license

MIT

Email (IMAP/SMTP) is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.

readme

MCP Mail Server

NPM Version License: MIT

Language: English | 中文

A Model Context Protocol server for IMAP/SMTP email operations with Claude, Cursor, and other AI assistants.

Features

  • IMAP Operations: Search, read, and manage emails across mailboxes
  • SMTP Support: Send emails with HTML/text content and attachments
  • Attachment Management: View attachment metadata and save attachments to local files
  • Secure Configuration: Environment-based setup with TLS/SSL support
  • AI-Friendly: Natural language commands for email operations
  • Auto Connection Management: Automatic IMAP/SMTP connection handling
  • Multi-Mailbox Support: Access INBOX, Sent, and custom folders

Quick Start

  1. Install: npm install -g mcp-mail-server
  2. Configure environment variables (see Configuration)
  3. Add to your MCP client configuration
  4. Use natural language: "Show me unread emails from today"

Installation

<details> <summary>Claude Desktop</summary>

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}
</details> <details> <summary>Cursor</summary>

Add to your Cursor MCP settings:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}
</details> <details> <summary>Claude Code</summary>

Add using the claude mcp add command:

claude mcp add mcp-mail-server \
  -e IMAP_HOST=your-imap-server.com \
  -e IMAP_PORT=993 \
  -e IMAP_SECURE=true \
  -e SMTP_HOST=your-smtp-server.com \
  -e SMTP_PORT=465 \
  -e SMTP_SECURE=true \
  -e EMAIL_USER=your-email@domain.com \
  -e EMAIL_PASS=your-password \
  -- npx -y mcp-mail-server

Or manually add to .claude/settings.json:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}
</details> <details> <summary>OpenAI Codex</summary>

Add to codex.json in your project root:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}
</details> <details> <summary>Other MCP Clients</summary>

Other MCP clients can be configured similarly. The core configuration is:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}

Refer to your specific client's documentation for the appropriate configuration file location.

</details>

Available Tools

ToolDescription
connect_allConnect to both IMAP and SMTP servers
get_connection_statusCheck connection status and server info
disconnect_allDisconnect from all servers
open_mailboxOpen specific mailbox/folder
list_mailboxesList available mail folders
get_message_countGet total message count in current mailbox
get_unseen_messagesGet all unread emails
get_recent_messagesGet recent emails
search_by_senderFind emails from specific sender
search_by_subjectSearch by subject keywords
search_by_recipientFind emails sent to specific recipient
search_by_bodySearch message body content
search_since_dateFind emails since date
search_unread_from_senderFind unread emails from specific sender
search_unreplied_from_senderFind unreplied emails from specific sender
search_with_keywordSearch emails by keyword/flag
search_all_messagesSearch all messages with optional date range and limit
get_messageRetrieve email by UID
get_messagesRetrieve multiple emails
delete_messageDelete email by UID
send_emailSend email via SMTP (with optional attachments)
reply_to_emailReply to specific email
get_attachmentsGet attachment metadata for an email
save_attachmentDownload and save attachments to local files
<details> <summary>Detailed Tool Parameters</summary>

Connection Management

  • connect_all: No parameters required
  • get_connection_status: No parameters required
  • disconnect_all: No parameters required

Mailbox Operations

  • open_mailbox: mailboxName (string, default: "INBOX"), readOnly (boolean)
  • list_mailboxes: No parameters required

Search Operations

  • search_by_sender: sender (string, email address), startDate (string, optional), endDate (string, optional)
  • search_by_subject: subject (string, keywords), startDate (string, optional), endDate (string, optional)
  • search_by_recipient: recipient (string, email address), startDate (string, optional), endDate (string, optional)
  • search_by_body: text (string, search text), startDate (string, optional), endDate (string, optional)
  • search_since_date: date (string, date format)
  • search_unread_from_sender: sender (string, email address), startDate (string, optional), endDate (string, optional)
  • search_unreplied_from_sender: sender (string, email address), startDate (string, optional), endDate (string, optional), limit (number, optional)
  • search_with_keyword: keyword (string, keyword), startDate (string, optional), endDate (string, optional)
  • search_all_messages: startDate (string, optional), endDate (string, optional), limit (number, optional, default: 50)

Message Operations

  • get_message_count: No parameters required
  • get_unseen_messages: No parameters required
  • get_recent_messages: No parameters required
  • get_message: uid (number), markSeen (boolean, optional)
  • get_messages: uids (array), markSeen (boolean, optional)
  • delete_message: uid (number)

Email Sending

  • send_email: to (string), subject (string), text (string, optional), html (string, optional), cc (string, optional), bcc (string, optional), attachments (string[], optional, absolute file paths)
  • reply_to_email: originalUid (number), text (string), html (string, optional), replyToAll (boolean, optional), includeOriginal (boolean, optional)

Attachment Operations

  • get_attachments: uid (number) — Returns metadata: filename, contentType, size, index
  • save_attachment: uid (number), savePath (string, absolute path), attachmentIndex (number, optional, 0-based), returnBase64 (boolean, optional, default: false)
</details>

Usage Examples

Use natural language commands with your AI assistant:

Basic Operations

  • "Connect to my email servers"
  • "Show me all unread emails"
  • "Search for emails from boss@company.com"
  • "Send an email to team@company.com about the meeting"
  • "Reply to email with UID 123"

Advanced Searches

  • "Find emails with 'urgent' in the subject from last week"
  • "Show me unreplied emails from boss@company.com"
  • "Search emails sent to team@company.com"
  • "Get all emails from the Sales folder"
  • "Show unread emails from boss@company.com"
  • "Show me all emails from the last 7 days"
  • "List all messages, limit to 20"

Email Management

  • "Delete the email with UID 123"
  • "Mark recent emails as read"
  • "List all my email folders"

Attachment Operations

  • "Show me the attachments of email UID 456"
  • "Save all attachments from email UID 456 to D:/Downloads"
  • "Download the first attachment from email UID 789"
  • "Send an email to team@company.com with attachment D:/report.pdf"

Configuration

Environment Variables

⚠️ All variables are required

VariableDescriptionExample
IMAP_HOSTIMAP server addressimap.gmail.com
IMAP_PORTIMAP port number993
IMAP_SECUREEnable TLStrue
SMTP_HOSTSMTP server addresssmtp.gmail.com
SMTP_PORTSMTP port number465
SMTP_SECUREEnable SSLtrue
EMAIL_USEREmail usernameyour-email@gmail.com
EMAIL_PASSEmail password/app passwordyour-app-password

Common Email Providers

<details> <summary>Gmail Configuration</