雅虎邮件MCP服务器
MCP(模型上下文协议)服务器,用于与雅虎邮箱集成以获取电子邮件和日历,并支持未来发送电子邮件。
概述
此MCP服务器提供通过以下方式与雅虎邮箱服务交互的工具:
- 互联网邮件访问协议 用于获取电子邮件(使用OAuth2身份验证)
- CalDAV 用于获取日历事件(使用OAuth2身份验证)
- SMTP 用于发送电子邮件(第2阶段-未来)
先决条件
1.雅虎开发者访问
Yahoo Mail不提供直接的REST API。相反,您必须:
- 申请开发人员访问权限:https://senders.yahooinc.com/developer/developer-access/
- 获得IMAP/CalDAV访问的批准
- 证明遵守雅虎的安全和隐私政策
2.OAuth2证书
一旦获得批准,您将需要:
- 客户端ID -应用程序的客户端标识符
- 客户端密钥 -应用程序的客户端机密
- 重定向URI -OAuth授权后雅虎将重定向的URL
3.技术要求
- Node.js 18+或 python 3.10+
- OAuth2 身份验证流实现
- IMAP客户端库 (用于获取电子邮件)
- CalDAV客户端库 (用于日历提取)
- MCP服务器SDK (TypeScript:
@modelcontextprotocol/sdk或Python等效)
雅虎邮件服务器详细信息
IMAP(电子邮件提取)
- 服务器:
imap.mail.yahoo.com - 端口: 993
- 安全: SSL/TLS
- 身份验证: OAuth2(XOAUTH2)
CalDAV(日历提取)
- 网址:
https://caldav.calendar.yahoo.com - 身份验证: OAuth2
SMTP(发送电子邮件-第2阶段)
- 服务器:
smtp.mail.yahoo.com - 端口: 465(SSL)或587(TLS)
- 身份验证: OAuth2(XOAUTH2)
项目结构
Yahoo_mail_MCP/
├── src/
│ ├── server.ts # Main MCP server implementation
│ ├── oauth2.ts # OAuth2 authentication handling
│ ├── imap-client.ts # IMAP email fetching
│ ├── caldav-client.ts # CalDAV calendar fetching
│ └── types.ts # TypeScript type definitions
├── config/
│ └── config.example.ts # Example configuration
├── package.json
├── tsconfig.json
└── README.md实施步骤
第一阶段:电子邮件和日历获取
- 设置OAuth2流
- 实现授权URL生成 - 处理回拨和令牌交换 - 存储和刷新访问令牌
- 实现IMAP客户端
- 使用OAuth2连接到雅虎IMAP服务器 - 获取支持分页的电子邮件 - 支持过滤和搜索
- 实现CalDAV客户端
- 使用OAuth2连接到雅虎CalDAV服务器 - 获取日历事件 - 支持日期范围查询
- 创建MCP工具
- fetch_emails -列出/获取电子邮件 - fetch_calendar_events -列出/获取日历事件 - get_email -通过ID获取特定电子邮件 - search_emails -按条件搜索电子邮件
第二阶段:发送电子邮件(未来)
- 实现SMTP客户端
- 使用OAuth2连接到雅虎SMTP服务器 - 发送格式正确的电子邮件
- 添加MCP工具
- send_email -通过雅虎SMTP发送电子邮件
环境变量
创建一个 .env 文件(参见 .env.example):
YAHOO_CLIENT_ID=your_client_id
YAHOO_CLIENT_SECRET=your_client_secret
YAHOO_REDIRECT_URI=http://localhost:3000/callback
YAHOO_IMAP_HOST=imap.mail.yahoo.com
YAHOO_IMAP_PORT=993
YAHOO_CALDAV_URL=https://caldav.calendar.yahoo.com
YAHOO_SMTP_HOST=smtp.mail.yahoo.com
YAHOO_SMTP_PORT=587需要的关键库
Types/Node.js方法:
{
"@modelcontextprotocol/sdk": "^1.0.0",
"imap": "^0.8.19",
"mailparser": "^3.6.5",
"dav": "^1.11.0", // For CalDAV
"nodemailer": "^6.9.7", // For SMTP (Phase 2)
"oauth2": "latest",
"dotenv": "^16.3.1"
}Python方法:
mcp>=1.0.0
imaplib (built-in)
email (built-in)
caldav>=1.3.0
smtplib (built-in)
requests-oauthlib>=1.3.0
python-dotenv>=1.0.0OAuth2流
- 授权请求:将用户重定向到Yahoo OAuth授权端点
- 用户授权:用户授予权限
- 授权码:雅虎使用授权码重定向
- 代币交换:访问令牌和刷新令牌的交换代码
- API访问:使用访问令牌对IMAP/CalDAV请求进行身份验证
- 令牌刷新:访问令牌过期时使用刷新令牌
安全考虑
- 安全地存储OAuth令牌(加密)
- 永不承诺
.env文件或凭据 - 实施适当的令牌刷新逻辑
- 遵循雅虎的费率限制准则
- 遵守雅虎的隐私政策
- 对所有OAuth重定向使用HTTPS
测试
- 设置具有开发人员访问权限的测试雅虎帐户
- 测试OAuth2流
- 测试IMAP连接和电子邮件获取
- 测试CalDAV连接和日历提取
- 测试错误处理和边缘情况
资源
Docker部署
该项目包括Docker支持,便于部署。
Docker快速入门
- 使用Docker Compose (推荐):
# Copy example env file
cp .docker.env.example .env
# Edit .env with your credentials
# Then start the container
docker-compose up -d- 使用Docker CLI:
docker build -t yahoo-mail-mcp:latest .
docker run -d --name yahoo-mail-mcp --env-file .env yahoo-mail-mcp:latest有关Docker部署的详细说明,请参阅 医生.md.
Docker脚本
npm run docker:build # Build Docker image
npm run docker:up # Start with docker-compose
npm run docker:down # Stop containers
npm run docker:logs # View logs
npm run docker:dev # Development mode with hot reload许可证
麻省理工学院
