基于 Model Context Protocol 的多用户邮件服务器,支持 163.com、Gmail、Outlook、QQ、iCloud、阿里云等 IMAP/SMTP 邮件服务。
- 🔐 多用户支持:每个邮箱配置独立 API 密钥,安全隔离
- 📧 多邮箱服务商:支持 163、126、Yeah、QQ、Gmail、Outlook、iCloud、阿里云及自定义 IMAP/SMTP
- 🛠️ Web 配置界面:可视化管理邮箱配置和测试连接
- 🔍 连接测试:实时测试 IMAP/SMTP 连接状态
- 📊 邮件列表:支持按类型筛选(未读/已读/已标记等)
- 📎 附件支持:自动下载附件到本地目录
- 🚀 流式 HTTP 传输:基于 FastMCP 的高性能 MCP 服务器
Email MCP Server 采用一体化服务器架构:
┌─────────────────────────────────────────────────────────┐
│ Email MCP Server (Port 8001) │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ MCP 协议层 │ │
│ │ • /mcp - MCP 协议端点 (需要 API Key) │ │
│ │ • email_list_messages - 列出邮件 │ │
│ │ • email_send_message - 发送邮件 │ │
│ └─────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────┴──────────────────────────┐ │
│ │ 配置管理层 (/api) │ │
│ │ • GET /api/configs - 获取邮箱配置 │ │
│ │ • POST /api/configs - 创建邮箱配置 │ │
│ │ • PUT /api/configs/{id} - 更新配置 │ │
│ │ • DELETE /api/configs/{id} - 删除配置 │ │
│ │ • POST /api/configs/{id}/test - 测试连接 │ │
│ │ • GET /api/providers - 获取服务商列表 │ │
│ └───────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────┴──────────────────────────┐ │
│ │ Web 界面层 (/config-ui) │ │
│ │ • 可视化邮箱配置管理 │ │
│ │ • API 密钥生成与管理 │ │
│ │ • 连接测试 │ │
│ └───────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────┐ │
│ │ SQLite 数据库 │ │
│ │ • 多用户邮箱配置存储 │ │
│ │ • API 密钥管理 │ │
│ └───────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
pip install -r requirements.txt./start.sh服务器启动后,你将看到:
============================================================
Email MCP Server - All-in-One Mode
============================================================
Host: 127.0.0.1
Port: 8001
MCP Endpoint: http://127.0.0.1:8001/mcp
Config API: http://127.0.0.1:8001/api
Config UI: http://127.0.0.1:8001/config-ui/index.html
Log Level: INFO
============================================================
Press Ctrl+C to stop the server
打开浏览器访问:http://127.0.0.1:8001/config-ui/index.html
配置界面功能:
-
邮箱配置管理
- 支持的邮箱提供商:
- 163 网易邮箱
- 126 网易邮箱
- Yeah 网易邮箱
- QQ 邮箱
- Gmail
- Outlook
- iCloud
- 阿里云邮箱
- 自定义 IMAP/SMTP 服务器
- 支持的邮箱提供商:
-
连通性测试
- IMAP 连接测试
- SMTP 连接测试
- 详细的错误信息和状态反馈
-
配置操作
- 创建、编辑、删除邮箱配置
- 激活/停用配置
- 查看测试历史记录
- 自动生成并复制 API 密钥
配置步骤:
- 点击"添加邮箱配置"
- 选择邮箱服务商
- 填写邮箱地址和授权码(注意:使用授权码,不是登录密码)
- 点击"测试连接"验证配置
- 保存后会自动生成 API 密钥
- 复制 API 密钥用于 MCP 客户端配置
在 Claude Desktop 或其他 MCP 客户端配置中使用生成的 API 密钥:
{
"mcpServers": {
"email-work": {
"url": "http://localhost:8001/mcp",
"transport": "streamable-http",
"headers": {
"X-API-Key": "your-generated-api-key-here"
}
},
"email-personal": {
"url": "http://localhost:8001/mcp",
"transport": "streamable-http",
"headers": {
"X-API-Key": "another-api-key"
}
}
}
}email-mcp/
├── src/email_mcp/ # 💻 源代码
│ ├── server.py # MCP 服务器(端口 8001)
│ ├── api_server.py # 配置管理 API(端口 8002)
│ ├── client.py # IMAP/SMTP 客户端
│ ├── models.py # MCP 工具输入模型
│ ├── schemas.py # API 请求/响应模型
│ ├── database.py # 数据库模型
│ ├── connectivity.py # 连接测试工具
│ ├── utils.py # 工具函数
│ └── logging_config.py # 日志配置
├── data/
│ └── email_mcp.db # SQLite 数据库(自动创建)
├── .well-known/mcp/ # MCP 管理发现
│ └── server-management.json
├── start.sh # 🚀 MCP 服务器启动脚本
├── requirements.txt # 📦 依赖
├── CLAUDE.md # 📖 Claude Code 开发指南
└── README.md # 📖 本文档
| 工具 | 说明 |
|---|---|
email_list_messages |
列出邮件(支持过滤、分页) |
email_send_message |
发送邮件(支持附件) |
所有服务运行在同一个端口(默认 8001):
POST /mcp- MCP 协议端点(需要X-API-Key请求头)- 支持 MCP 协议操作:
initialize,tools/list,tools/call,resources/list,resources/read
GET /api/configs- 获取所有邮箱配置POST /api/configs- 创建新的邮箱配置(自动生成 API Key)GET /api/configs/{id}- 获取指定配置详情PUT /api/configs/{id}- 更新邮箱配置DELETE /api/configs/{id}- 删除邮箱配置POST /api/configs/{id}/test- 测试邮箱连通性GET /api/providers- 获取支持的邮箱提供商列表GET /api/health- 健康检查
GET /- 重定向到配置界面GET /config-ui/index.html- 配置管理界面GET /.well-known/mcp/server-management.json- Server Management Discovery
项目使用 SQLite 存储多用户配置(生产环境建议使用 PostgreSQL 或 MySQL)。
CREATE TABLE email_configs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
api_key VARCHAR(64) UNIQUE NOT NULL, -- API 密钥
name VARCHAR(100) NOT NULL, -- 配置名称
provider VARCHAR(50) NOT NULL, -- 邮箱提供商
imap_server VARCHAR(255) NOT NULL, -- IMAP 服务器
imap_port INTEGER DEFAULT 993 NOT NULL, -- IMAP 端口
username VARCHAR(255) NOT NULL, -- 邮箱用户名
password VARCHAR(255) NOT NULL, -- 邮箱密码/授权码
smtp_server VARCHAR(255) NOT NULL, -- SMTP 服务器
smtp_port INTEGER DEFAULT 465 NOT NULL, -- SMTP 端口
is_active BOOLEAN DEFAULT TRUE NOT NULL, -- 是否激活
last_tested DATETIME, -- 最后测试时间
last_test_status VARCHAR(20), -- 最后测试状态
created_at DATETIME NOT NULL, -- 创建时间
updated_at DATETIME NOT NULL -- 更新时间
);索引:api_key 字段有唯一索引,确保查询性能。
| 变量 | 必需 | 默认值 | 说明 |
|---|---|---|---|
MCP_HOST |
❌ | 127.0.0.1 |
MCP 服务器监听地址 |
MCP_PORT |
❌ | 8001 |
MCP 服务器端口 |
MCP_LOG_LEVEL |
❌ | INFO |
日志级别(DEBUG/INFO/WARNING/ERROR) |
注意:邮箱配置不再使用环境变量,而是通过 Web 配置界面管理。
# 自定义端口
python src/email_mcp/server.py --port 9000
# 自定义主机和端口
python src/email_mcp/server.py --host 0.0.0.0 --port 8001
# 设置日志级别
export MCP_LOG_LEVEL=DEBUG
./start.sh如果需要独立运行配置 API(不推荐,仅用于开发调试):
python -m email_mcp.api_server| 级别 | 用途 |
|---|---|
DEBUG |
详细调试信息(连接、消息ID、附件、API 密钥) |
INFO |
一般操作信息(工具调用、认证、结果) |
WARNING |
警告信息(跳过的消息) |
ERROR |
错误信息(认证失败、连接失败) |
⚠️ 永远不要将 API 密钥分享给他人⚠️ 永远不要提交data/email_mcp.db到版本控制⚠️ 永远不要在代码中硬编码密码或 API 密钥- ✅ 使用邮箱授权码而不是登录密码
- ✅ 定期更换授权码和 API 密钥
- ✅ 生产环境建议使用 PostgreSQL 或 MySQL 替代 SQLite
- ✅ 配置 API 服务器不应暴露到公网
CLAUDE.md- Claude Code 开发指南(架构详解).well-known/mcp/server-management.json- MCP 管理发现配置
# 检查端口占用
lsof -i :8001
# 查看详细日志
export MCP_LOG_LEVEL=DEBUG
./start.sh- 原因:缺少或无效的
X-API-Key请求头 - 解决:确保 MCP 客户端配置中包含正确的 API 密钥
- 获取密钥:访问 http://127.0.0.1:8001/config-ui/index.html 查看或生成 API 密钥
- 使用授权码,不是登录密码
- 确认 IMAP/SMTP 服务已开启
- 检查防火墙设置
- 在配置界面点击"测试连接"验证配置
# 测试 MCP 端点(需要 API 密钥)
curl -H "X-API-Key: your-api-key" http://localhost:8001/mcp
# 检查服务器状态
lsof -i :8001
# 测试配置 API
curl http://localhost:8001/api/health
# 测试配置界面
curl http://localhost:8001/# 重置数据库(会删除所有配置)
rm data/email_mcp.db
# 检查数据库权限
ls -la data/email_mcp.db- 登录网页版邮箱
- 设置 → POP3/SMTP/IMAP
- 开启 IMAP/SMTP 服务
- 生成授权码
- 使用授权码作为密码
- 登录网页版邮箱
- 设置 → 账户
- 开启 IMAP/SMTP 服务
- 生成授权码
- 使用授权码作为密码
- 启用两步验证
- 账户安全 → 应用专用密码
- 生成应用密码
- 使用应用密码作为密码
- 账户安全 → 应用密码
- 生成应用密码
- 使用应用密码作为密码
欢迎提交 Issue 和 Pull Request!
- 邮箱密码加密存储
- OAuth2 支持 (Gmail, Outlook)
- 配置导入/导出功能
- 使用统计和日志记录
- Webhook 通知支持
- PostgreSQL/MySQL 支持
- 多语言支持
# 测试配置 API 健康状态
curl http://localhost:8001/api/health
# 获取支持的邮箱提供商列表
curl http://localhost:8001/api/providers
# 创建新的邮箱配置
curl -X POST http://localhost:8001/api/configs \
-H "Content-Type: application/json" \
-d '{
"name": "我的工作邮箱",
"provider": "163",
"username": "your@email.com",
"password": "your-auth-code"
}'
# 测试邮箱连通性
curl -X POST http://localhost:8001/api/configs/1/test \
-H "Content-Type: application/json"
# 使用 MCP 工具(需要 API Key)
curl -X POST http://localhost:8001/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "email_list_messages",
"arguments": {
"count": 5,
"message_type": "UNSEEN"
}
}
}'MIT License