电子邮件MCP服务器
](https://go.dev/)  
一种模型上下文协议(MCP)服务器,通过IMAP和SMTP协议提供电子邮件功能。该服务器使AI助手能够与电子邮件帐户交互、阅读消息、发送电子邮件和管理邮箱。
特性
IMAP(阅读和管理电子邮件)
- 📬 列出邮箱/文件夹
- 🔍 使用高级条件(日期、发件人、主题、标记)搜索电子邮件
- 📧 阅读完整的电子邮件内容(文本、HTML、附件)
- ✅ 将电子邮件标记为已读/未读
- 📁 在文件夹之间移动/复制电子邮件
- 🗑️ 删除电子邮件
- 📎 下载附件
SMTP(发送电子邮件)
- ✉️ 发送纯文本和HTML电子邮件
- 📎 发送带有附件的电子邮件
- 👥 CC和BCC支持
- ↩️ 回复电子邮件
- ➡️ 转发电子邮件
安装
先决条件
- 达到1.22或更高
- 启用了IMAP/SMTP访问的电子邮件帐户
- 对于Gmail: 应用程序特定密码 或OAuth2凭据
从源代码安装
git clone https://github.com/EmadMokhtar/email-mcp-go.git
cd email-mcp-go
go build -o email-mcp ./cmd/email-mcp通过Go安装
go install github.com/EmadMokhtar/email-mcp-go/cmd/email-mcp@latest配置
环境变量
创建一个 .env 项目根目录中的文件:
cp .env.example .env编辑 .env 使用您的电子邮件凭据文件:
# IMAP Configuration
IMAP_HOST=imap.gmail.com
IMAP_PORT=993
IMAP_USERNAME=your-email@gmail.com
IMAP_PASSWORD=your-app-password
IMAP_TLS=true
# SMTP Configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=your-email@gmail.com
SMTP_PASSWORD=your-app-password
SMTP_TLS=true常见电子邮件提供商
Gmail
IMAP_HOST=imap.gmail.com
IMAP_PORT=993
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587注: 启用“不太安全的应用程序访问”或使用 应用程序密码
Outlook/Office 365
IMAP_HOST=outlook.office365.com
IMAP_PORT=993
SMTP_HOST=smtp.office365.com
SMTP_PORT=587邮件
IMAP_HOST=imap.mail.yahoo.com
IMAP_PORT=993
SMTP_HOST=smtp.mail.yahoo.com
SMTP_PORT=587ProtonMail桥
IMAP_HOST=127.0.0.1
IMAP_PORT=1143
SMTP_HOST=127.0.0.1
SMTP_PORT=1025
IMAP_TLS=false
SMTP_TLS=false用法
运行服务器
./email-mcp与Claude Desktop一起使用
添加到您的Claude Desktop配置文件中:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"email": {
"command": "/path/to/email-mcp",
"env": {
"IMAP_HOST": "imap.gmail.com",
"IMAP_PORT": "993",
"IMAP_USERNAME": "your-email@gmail.com",
"IMAP_PASSWORD": "your-app-password",
"IMAP_TLS": "true",
"SMTP_HOST": "smtp.gmail.com",
"SMTP_PORT": "587",
"SMTP_USERNAME": "your-email@gmail.com",
"SMTP_PASSWORD": "your-app-password",
"SMTP_TLS": "true"
}
}
}
}可用工具
list_mailboxes
列出电子邮件帐户中的所有可用邮箱/文件夹。
示例提示:
Show me all my email folderssearch_emails
根据各种条件搜索电子邮件。
参数:
from-按发件人电子邮件筛选to-按收件人电子邮件筛选subject-按主题关键字筛选since-此日期之后的电子邮件(RFC3339)before-在此日期之前的电子邮件(RFC3339)unseen-仅未读电子邮件(布尔值)folder-在特定文件夹中搜索(默认:“收件箱”)limit-最大结果数(默认值:50)
示例提示:
Find all unread emails from john@example.com
Show me emails from the last week about "project alpha"
Search for emails in the Sent folder from yesterdayget_email
按ID检索完整的电子邮件内容。
参数:
id-电子邮件序列号folder-邮箱名称(默认:“INBOX”)include_attachments-下载附件(布尔值)
示例提示:
Show me the full content of email ID 42
Get email 123 with attachmentssend_email
发送一封新电子邮件。
参数:
to-收件人电子邮件地址(数组)subject-电子邮件主题body-电子邮件正文内容is_html-以HTML格式发送(布尔值,默认值:false)cc-CC收件人(可选,数组)bcc-BCC收件人(可选,数组)attachments-文件附件(可选,数组)
示例提示:
Send an email to john@example.com with subject "Meeting" and body "Let's meet tomorrow"
Compose an HTML email to team@company.com about the quarterly reportreply_to_email
回复现有电子邮件。
参数:
email_id-要回复的电子邮件IDbody-回复消息正文reply_all-回复所有收件人(布尔值,默认值:false)is_html-以HTML格式发送(布尔值,默认值:false)
示例提示:
Reply to email 42 with "Thanks for the update!"
Reply all to the last email with confirmationforward_email
将电子邮件转发给其他收件人。
参数:
email_id-要转发的电子邮件IDto-转发收件人(数组)message-附加消息(可选)
示例提示:
Forward email 15 to sarah@example.commark_as_read / mark_as_unread
更改电子邮件的读取状态。
参数:
email_ids-电子邮件ID数组folder-邮箱名称(默认:“INBOX”)
示例提示:
Mark emails 1, 2, and 3 as read
Mark email 42 as unreadmove_email
将电子邮件移动到其他文件夹。
参数:
email_id-要移动的电子邮件IDfrom_folder-源文件夹to_folder-目标文件夹
示例提示:
Move email 42 from INBOX to Archivedelete_email
删除电子邮件。
参数:
email_id-要删除的电子邮件IDfolder-邮箱名称(默认:“INBOX”)permanent-永久删除vs移至垃圾桶(布尔值)
示例提示:
Delete email 42 permanently
Move email 15 to trash发展
项目结构
email-mcp-go/
├── cmd/
│ └── email-mcp/ # Main application entry point
├── internal/
│ ├── server/ # MCP server implementation
│ ├── imap/ # IMAP client and operations
│ ├── smtp/ # SMTP client and operations
│ ├── config/ # Configuration management
│ └── tools/ # MCP tool definitions
├── pkg/
│ └── models/ # Data models
├── go.mod
├── go.sum
└── README.md建筑
go build -o email-mcp ./cmd/email-mcp测试
go test ./...在发展中奔跑
go run ./cmd/email-mcp安全考虑
⚠️ 重要安全注意事项:
- 凭据存储:永远不要将凭据提交到版本控制。始终使用环境变量或安全凭据管理。
- 应用程序密码:对于Gmail和其他提供商,请使用特定于应用程序的密码,而不是您的主帐户密码。
- OAuth2:考虑将OAuth2用于Gmail和Microsoft帐户的生产环境。
- TLS/SSL:始终对IMAP和SMTP使用加密连接(TLS)。
- 速率限制:请注意电子邮件提供商的费率限制,以避免帐户被暂停。
- 权限:此MCP服务器可以完全访问您的电子邮件帐户。仅与值得信赖的AI助手一起使用。
故障排除
常见问题
“连接被拒绝”或“超时”
- 检查防火墙设置
- 验证IMAP/SMTP端口是否正确
- 确保TLS设置与提供程序要求匹配
“身份验证失败”
- 验证用户名和密码
- 对于Gmail:启用“不太安全的应用程序访问”或使用应用程序密码
- 检查是否启用了2FA并需要特定于应用程序的密码
“证书错误”
- 更新转到最新版本
- 检查系统证书是否为最新版本
- 对于自签名证书,您可能需要禁用TLS验证(不建议用于生产)
贡献
欢迎投稿!请随时提交拉取请求。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- 内置 mark3labs/mcp go
- 用途 再现/去imap 用于IMAP功能
- 用途 发邮件 SMTP功能
- 灵感源自于 模型上下文协议 规格
相关项目
支持
对于问题和疑问:
- 打开一个问题
- 检查现有问题的解决方案
路线图
- \[\]对Gmail和Microsoft的OAuth2支持
- \[\]电子邮件模板
- \[\]批量操作
- \[\]电子邮件过滤规则
- \[\]日历集成(CalDAV)
- \[\]联系人管理(CardDAV)
- \[\]电子邮件日程安排
- \[\]支持S/MIME和PGP加密
- \[\]新电子邮件的Webhook通知
______________________________________________________________________
由以下材料制成❤️ 通过 Emad Mokhtar
