邮件协议服务器

Mail MCP Server是一个基于SMTP和IMAP协议的邮件处理服务器,支持AI助手发送、读取邮件,管理邮箱及安全配置。

  • by martinzarfl
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 martinzarfl/mail-mcp

使用说明

邮件MCP服务器

用于基于SMTP和IMAP的电子邮件处理的模型上下文协议(MCP)服务器。该服务器使AI助手能够安全地发送和阅读电子邮件、管理邮箱和处理电子邮件配置。

特性

发送电子邮件(SMTP)

  • 发送电子邮件:发送包含HTML/纯文本内容、附件和CC/BCC支持的电子邮件
  • 连接验证:测试SMTP连接和身份验证
  • 配置测试:在不修改服务器设置的情况下测试自定义SMTP配置

阅读电子邮件(IMAP)

  • 获取电子邮件:使用筛选选项从任何邮箱检索电子邮件
  • 搜索电子邮件:按主题、发件人或内容进行简单搜索
  • 高级搜索:具有多个条件(发件人、收件人、日期范围、大小、标志)的复杂查询
  • 列出邮箱:浏览所有可用文件夹/邮箱
  • 标记电子邮件:将电子邮件标记为已读/未读或标记/未标记

电子邮件组织

  • 创建/删除邮箱:管理文件夹结构
  • 移动邮件:在文件夹之间组织电子邮件
  • 复制邮件:将电子邮件复制到多个文件夹
  • 保存草稿:存储电子邮件草稿以供以后编辑

高级功能

  • 线程视图:按时间顺序获取整个对话线索
  • 下载附件:使用base64编码检索特定附件
  • 消息关系:通过消息ID、In reply To和References标头跟踪回复链

安全

  • 安全:通过环境变量管理的所有凭据
  • TLS支持:SMTP和IMAP的加密连接

安装

npm install
npm run build

配置

所需的环境变量

# SMTP Configuration (for sending emails)
export SMTP_HOST="smtp.gmail.com"          # SMTP server hostname
export SMTP_PORT="587"                      # SMTP server port (587 or 465)
export SMTP_USER="your-email@gmail.com"    # SMTP username
export SMTP_PASS="your-app-password"       # SMTP password
export SMTP_FROM="your-email@gmail.com"    # (Optional) Default sender address
export SMTP_SECURE="false"                 # (Optional) Use TLS (true for port 465)

可选IMAP配置(用于阅读电子邮件)

如果未提供,IMAP设置默认为SMTP值:

export IMAP_HOST="imap.gmail.com"          # IMAP server (defaults to SMTP_HOST)
export IMAP_PORT="993"                      # IMAP port (default: 993)
export IMAP_USER="your-email@gmail.com"    # IMAP username (defaults to SMTP_USER)
export IMAP_PASS="your-app-password"       # IMAP password (defaults to SMTP_PASS)
export IMAP_TLS="true"                     # Use TLS (default: true)

用法

运行服务器

标准传输(默认)

用于Claude Desktop或其他基于stdio的客户端:

# Without .env
npm run dev

# With .env file
npm run dev:env

SSE传输(HTTP/服务器发送事件)

对于基于web的客户端或远程连接:

# Start SSE server on port 3000
TRANSPORT=sse npm run dev:sse:env

# Or custom port
TRANSPORT=sse PORT=8080 npm run dev:sse:env

服务器将在以下位置可用:

  • MCP端点: http://localhost:3000/mcp
  • SSE端点: http://localhost:3000/sse

SSE的环境变量:

  • TRANSPORT=sse -启用SSE传输
  • PORT=3000 -HTTP服务器端口(默认值:3000)
  • SSE_PATH=/sse -SSE端点路径(默认值:/SSE)

使用克劳德桌面(Stdio)

添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "mail": {
      "command": "npx",
      "args": ["-y", "martinzarfl/mail-mcp"],
      "env": {
        "SMTP_HOST": "smtp.provider.com",
        "SMTP_PORT": "587",
        "SMTP_USER": "your-email@provider.com",
        "SMTP_PASS": "your-mail-password",
        "SMTP_FROM": "your-email@provider.com",
        "IMAP_HOST": "imap.provider.com",
        "IMAP_PORT": "993",
        "IMAP_USER": "your-email@provider.com",
        "IMAP_PASS": "your-mail-password"
      }
    }
  }
}

可用工具

SMTP工具(发送电子邮件)

send_邮件

通过SMTP发送电子邮件。

参数:

  • to (必填):收件人电子邮件地址
  • subject (必填):电子邮件主题行
  • text (可选):纯文本电子邮件正文
  • html (可选):HTML电子邮件正文
  • from (可选):发件人电子邮件地址(如果未提供,则使用SMTP_FROM)
  • cc (可选):抄送收件人电子邮件地址
  • bcc (可选):BCC收件人电子邮件地址
  • attachments (可选):附件数组 filename, content,以及 encoding (base64或utf-8)

例子:

{
  "to": "recipient@example.com",
  "subject": "Hello from MCP",
  "text": "This is a test email",
  "html": "<h1>This is a test email</h1>"
}

验证连接

使用配置的凭据验证SMTP连接和身份验证。

参数: 无

test_smtp_config

在不修改服务器配置的情况下,使用自定义凭据测试SMTP配置。

参数:

  • host (必需):SMTP服务器主机名
  • port (必需):SMTP服务器端口
  • user (必填):SMTP身份验证用户名
  • password (必需):SMTP身份验证密码
  • secure (可选):使用TLS(默认:端口465为true)

get_smtp_info

获取有关当前SMTP配置的信息(不透露凭据)。

参数: 无

IMAP工具(阅读电子邮件)

列表_邮箱

列出IMAP帐户中所有可用的邮箱/文件夹。

参数: 无

示例响应:

{
  "success": true,
  "mailboxes": [
    {"name": "INBOX", "delimiter": "/", "children": 0},
    {"name": "Sent", "delimiter": "/", "children": 0},
    {"name": "Drafts", "delimiter": "/", "children": 0}
  ],
  "count": 3
}

fetch_邮件

使用可选过滤器从特定邮箱获取电子邮件。

参数:

  • mailbox (可选):邮箱名称(默认:“收件箱”)
  • limit (可选):可获取的最大电子邮件数,1-100(默认值:10)
  • unseen (可选):仅获取未读电子邮件(默认值:false)
  • since (可选):仅获取自日期以来的电子邮件(ISO 8601格式)

例子:

{
  "mailbox": "INBOX",
  "limit": 5,
  "unseen": true
}

搜索邮件

按主题、发件人或内容在邮箱中搜索电子邮件。

参数:

  • mailbox (可选):邮箱名称(默认:“收件箱”)
  • query (必填):搜索查询字符串
  • limit (可选):最大结果,1-100(默认值:10)

例子:

{
  "query": "meeting",
  "limit": 10
}

mark_电子邮件

用特定标志标记电子邮件。

参数:

  • mailbox (可选):邮箱名称(默认:“收件箱”)
  • uid (必填):通过电子邮件发送UID进行标记
  • flag (必填):要设置的标记(“已读”、“未读”、”已标记“、”未标记“)

例子:

{
  "uid": 123,
  "flag": "read"
}

高级IMAP工具

创建邮箱

在您的电子邮件帐户中创建新邮箱/文件夹。

参数:

  • name (必填):要创建的邮箱名称

例子:

{
  "name": "Projects"
}

删除邮箱

从您的电子邮件帐户中删除邮箱/文件夹。

参数:

  • name (必填):要删除的邮箱名称

例子:

{
  "name": "OldFolder"
}

move_message

将电子邮件从一个邮箱移动到另一个邮箱。

参数:

  • sourceMailbox (可选):源邮箱(默认:“收件箱”)
  • targetMailbox (必填):目标邮箱名称
  • uid (必填):通过电子邮件发送要移动的UID

例子:

{
  "sourceMailbox": "INBOX",
  "targetMailbox": "Archive",
  "uid": 123
}

copy_message

将电子邮件从一个邮箱复制到另一个邮箱。

参数:

  • sourceMailbox (可选):源邮箱(默认:“收件箱”)
  • targetMailbox (必填):目标邮箱名称
  • uid (必填):通过电子邮件发送UID进行复制

例子:

{
  "targetMailbox": "Important",
  "uid": 456
}

高级搜索

使用多种条件搜索电子邮件,包括发件人、收件人、主题、正文、日期范围、大小和标志。

参数:

  • mailbox (可选):邮箱名称(默认:“收件箱”)
  • criteria (必填):带字段的搜索条件对象:
    • from:按发件人搜索
    • to:按收件人搜索
    • subject:按主题文本搜索
    • body:按正文搜索
    • since:日期过滤器(ISO 8601)
    • before:日期过滤器(ISO 8601)
    • unseen:仅未读电子邮件(布尔值)
    • flagged:仅标记电子邮件(布尔值)
    • larger:最小大小(字节)
    • smaller:最大大小(字节)
  • limit (可选):最大结果,1-100(默认值:10)

例子:

{
  "criteria": {
    "from": "boss@company.com",
    "since": "2025-01-01",
    "unseen": true
  },
  "limit": 20
}

保存草稿

在“草稿”文件夹中将电子邮件另存为草稿,而不发送。

参数:

  • to (必填):收件人电子邮件地址
  • subject (必填):电子邮件主题
  • text (可选):纯文本正文
  • html (可选):HTML正文
  • from (可选):发件人地址
  • cc (可选):CC收件人
  • bcc (可选):BCC收件人

例子:

{
  "to": "colleague@company.com",
  "subject": "Draft: Project Update",
  "text": "This is a draft email..."
}

get_thread

根据邮件ID获取对话线程中的所有电子邮件。返回按时间顺序排列的电子邮件,并显示回复关系。

参数:

  • mailbox (可选):邮箱名称(默认:“收件箱”)
  • messageId (必填):用于查找线程的消息ID

例子:

{
  "messageId": "<abc123@mail.example.com>"
}

答复包括:

  • messageId:唯一消息标识符
  • inReplyTo:父消息ID
  • references:所有相关邮件ID
  • 按日期排序的完整电子邮件内容

下载_附件

从电子邮件中下载特定附件。将附件内容作为base64编码数据返回。

参数:

  • mailbox (可选):邮箱名称(默认:“收件箱”)
  • uid (必填):电子邮件UID
  • attachmentIndex (必填):附件索引(从0开始)

例子:

{
  "uid": 789,
  "attachmentIndex": 0
}

答复:

{
  "success": true,
  "filename": "report.pdf",
  "contentType": "application/pdf",
  "size": 102400,
  "content": "JVBERi0xLjQKJeLjz9MKM...",
  "encoding": "base64"
}

发展

# Build the project
npm run build

# Watch for changes
npm run watch

# Run in development mode
npm run dev

安全说明

  • 从不将凭据提交到版本控制
  • 对敏感数据使用环境变量
  • 考虑使用应用程序密码而不是常规密码
  • 使用TLS/SSL进行安全连接(端口465或587上的STARTTLS)

常见电子邮件提供商

提供程序 SMTP主机 SMTP端口 IMAP主机 IMAP端口
Gmail smtp.Gmail.com 587/465 imap.Gmail.com 993
Outlook smtp-mail.Outlook.com 587 Outlook.office365.com 993
雅虎 smtp.mail.Yahoo.com 587 imap.mail.Yahoo.com 993
iCloud smtp.mail.me.com 587 imap.mail.me.com 993
SendGrid.smtp.SendGrid.net.587不适用。不适用。

笔记:

  • 端口587:与STARTTLS(设置)一起使用 SMTP_SECURE="false")
  • 端口465:与SSL/TLS一起使用(设置 SMTP_SECURE="true")
  • 端口993:基于SSL/TLS的标准IMAP

许可证

麻省理工学院