Email Smtp Imap Mcp

io.github.samihalawa由 GitHub 账号 samihalawa 发布v2.2.2更新于 Nov 1, 2026

Multi-account SMTP/IMAP email tools: search, read, send, reply, forward, flags and folders.

已验证STDIO仅桌面效率与工作流沟通与协作

概览

AI 生成的概览

本地 MCP 服务器,通过 SMTP/IMAP 让助手在多个邮箱账户中搜索、读取、发送、回复、转发和整理邮件。

可以做什么
  • 列出已配置的账户及默认账户,并列出文件夹及可选的总数与未读数
  • 按文本、发件人、收件人、主题、日期、已读或标记状态、附件搜索收件箱邮件,可选返回正文与附件
  • 发送纯文本或 HTML 邮件,支持抄送、密送、发件人别名和 base64 附件
  • 按邮件 UID 回复、全部回复或转发,保留会话线索并可附带原附件
  • 将邮件标记为已读或未读、加标记或取消标记,并在文件夹之间移动邮件
适用场景
适合希望助手直接操作真实邮箱的场景:整理收件箱、查找特定邮件、撰写并发送回复,或用同一个服务器处理多个工作与个人账户。
运行要求
通过 npx 以 stdio 在本地运行(需要 Node.js)。需要为每个账户提供 SMTP 与 IMAP 的主机、端口、TLS 和凭据,可通过 EMAIL_ACCOUNTS_JSON 密钥或单账户的 SMTP_/IMAP_ 变量提供,也可放在由 EMAIL_ENV_FILE 指向的 .env 文件中。DEFAULT_EMAIL_ACCOUNT 为可选项。需要能访问邮件服务器的网络,并要求 TLS 1.2 或更高版本。
安装前请注意
EMAIL_ACCOUNTS_JSON 以明文保存各账户的邮箱密码或应用专用密码,应私密存放且不要提交到仓库。该服务器可以发送、回复、转发、移动、加标记和标记已读,会改动真实邮箱并可能触达他人,让助手执行前应先确认。邮件正文与附件会进入助手上下文,且邮件服务器必须支持带有效证书的 TLS。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Email Smtp Imap Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[One MCP server connecting multiple email accounts]

Email SMTP/IMAP MCP

One local MCP server for every inbox: search, read, send, reply, forward, and organize email across multiple accounts.

[release] [npm] [downloads] [CI] [OpenSSF Best Practices] [OpenSSF Baseline] [Node.js] [stars] [license]

Why this server

For third-party notices, licence enquiries and the version 2.2.2 supplement, see the open source licence compliance programme.

  • No account-count cap — add work, personal, support, or client inboxes and switch with account_name.
  • SMTP + IMAP together — send and receive through one small MCP server.
  • Complete everyday workflow — search, read, reply, forward, attach files, flag, archive, move, and list folders.
  • Provider-agnostic — works with Gmail, iCloud Mail, Fastmail, Outlook, self-hosted mail, and other standard SMTP/IMAP providers.
  • Local stdio transport — no hosted relay and no separate control panel.

[Search, send, respond, organize, and browse folders across accounts]

Quick start

1. Create your .env

Copy .env.example to a private location and add as many named accounts as you need:

dotenv
EMAIL_ACCOUNTS_JSON='{  "work": {    "smtp": {      "host": "smtp.gmail.com",      "port": 587,      "secure": false,      "user": "[email protected]",      "password": "app-password"    },    "imap": {      "host": "imap.gmail.com",      "port": 993,      "secure": true,      "user": "[email protected]",      "password": "app-password"    },    "default_from_name": "Your Name",    "sender_emails": ["[email protected]", "[email protected]"]  },  "personal": {    "smtp": {      "host": "smtp.mail.me.com",      "port": 587,      "secure": false,      "user": "[email protected]",      "password": "app-password"    },    "imap": {      "host": "imap.mail.me.com",      "port": 993,      "secure": true,      "user": "[email protected]",      "password": "app-password"    }  }}'
DEFAULT_EMAIL_ACCOUNT="work"

The server loads .env from its working directory automatically. EMAIL_ENV_FILE lets an MCP client use an .env stored anywhere.

2. Add the MCP server

For Claude Desktop, edit:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
json
{  "mcpServers": {    "email": {      "command": "npx",      "args": ["-y", "email-smtp-imap-mcp"],      "env": {        "EMAIL_ENV_FILE": "/absolute/path/to/your/.env"      }    }  }}

Use an absolute path, restart your MCP client, then ask: “List my configured email accounts.”

Pass account JSON directly from the MCP client

You can skip the .env file and set EMAIL_ACCOUNTS_JSON plus DEFAULT_EMAIL_ACCOUNT directly in the MCP client’s env object. The JSON must be escaped into a single string.

json
{  "env": {    "EMAIL_ACCOUNTS_JSON": "{\"work\":{\"smtp\":{\"host\":\"smtp.gmail.com\",\"port\":587,\"user\":\"[email protected]\",\"password\":\"app-password\"},\"imap\":{\"host\":\"imap.gmail.com\",\"port\":993,\"user\":\"[email protected]\",\"password\":\"app-password\"}}}",    "DEFAULT_EMAIL_ACCOUNT": "work"  }}
Single-account `.env` variables

Use SMTP_HOST, SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASS, IMAP_HOST, IMAP_PORT, IMAP_SECURE, IMAP_USER, and IMAP_PASS instead of EMAIL_ACCOUNTS_JSON.

SMTP_USERNAME/SMTP_PASSWORD and IMAP_USERNAME/IMAP_PASSWORD are accepted aliases. IMAP credentials default to the SMTP credentials when omitted. Use SENDER_EMAILS as a comma-separated allowlist for optional from_email selection.

Tools

See the tool reference for every input, default, response field and error format.

ToolWhat it does
accounts_listList every configured account and identify the default without exposing credentials.
emails_findSearch by text, sender, recipient, subject, date, read state, flag state, or attachments. Optionally return bodies and attachments.
email_sendSend plain-text or HTML email with CC, BCC, sender aliases, and base64 attachments.
email_respondReply, reply-all, or forward by email UID with threading and optional original attachments.
emails_modifyMark read/unread, flag/unflag, or move messages to another folder.
folders_listList folders with optional total and unread counts.

All tools except accounts_list accept an optional account_name. Without it, the server uses DEFAULT_EMAIL_ACCOUNT or the first configured account. There is no application-level account-count limit.

Verify your setup

After restarting the MCP client, try these in order:

  1. “List my configured email accounts.”
  2. “List folders for my work account.”
  3. “Find the five newest unread emails in my personal account.”
  4. “Send a plain-text email from my work account.”

Provider settings

ProviderSMTPIMAPCredential
Gmailsmtp.gmail.com:587imap.gmail.com:993App password
iCloud Mailsmtp.mail.me.com:587imap.mail.me.com:993App-specific password
Other providersUse the provider's SMTP hostUse the provider's IMAP hostProvider password or app password

Use secure: true for implicit TLS ports such as 465/993. Port 587 normally uses secure: false and upgrades with STARTTLS. Both SMTP and IMAP require TLS 1.2 or newer and a valid server certificate. With secure: false, STARTTLS is mandatory before authentication; servers without STARTTLS are rejected. Plaintext-only relays are not supported.

Development

bash
git clone https://github.com/samihalawa/email-smtp-imap-mcp.gitcd email-smtp-imap-mcpnpm cinpm test

Run the compiled stdio server with npm start. Build a production container with docker build -t email-smtp-imap-mcp ..

Contributing

Issues and focused pull requests are welcome. See CONTRIBUTING.md for the development workflow and SECURITY.md for vulnerability reports.

License

MIT © Sami Halawa

Security and release assurance

Report vulnerabilities through the private route in SECURITY.md. The security assurance programme and source-bound review describe the controls, evidence and publication boundaries for this project. They do not claim an external ISO certificate or completed OpenChain conformance.

Maintainers can run npm run assurance to build the package, run security checks, archive pinned component inputs and verify an offline recovery. The generated release assets include platform-specific build inputs and are intended for durable release retention.

来源:README.md,提交 dc32584

工具

6

accounts_list

List every configured email account and show which account is the default. Use this before other tools when multiple SMTP/IMAP accounts are configured.

无需输入参数。

emails_find

Search for emails in your inbox with flexible filters. Optionally get full email content and attachments. Use this to find specific emails, check for unread messages, or browse your inbox.

输入参数limitqueryfiltersaccount_nameinclude_contentinclude_attachments

emails_modify

Change email states like read/unread, flagged, or move between folders. Use this to organize your inbox, mark emails as read, archive messages, or flag important emails.

输入参数flagunflagemail_ids必填mark_readmark_unreadaccount_namemove_to_folder

email_send

Send a new email with HTML support and file attachments. Use this to send messages, project updates, or any new email conversation.

输入参数ccto必填bccbody必填subject必填body_typefrom_emailattachmentsaccount_name

email_respond

Reply to or forward an existing email. Use this to continue email conversations, respond to messages, or forward information to others.

输入参数tobody必填email_id必填body_typeaccount_nameresponse_typeinclude_originalinclude_attachmentsadditional_attachments

folders_list

List all available email folders/labels in your account. Use this to see your folder structure and organize emails.

输入参数account_nameinclude_counts

版本历史

1
  1. v2.2.2最新Nov 1, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分