使用说明
邮件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:父消息IDreferences:所有相关邮件ID- 按日期排序的完整电子邮件内容
下载_附件
从电子邮件中下载特定附件。将附件内容作为base64编码数据返回。
参数:
mailbox(可选):邮箱名称(默认:“收件箱”)uid(必填):电子邮件UIDattachmentIndex(必填):附件索引(从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
许可证
麻省理工学院
