内容
# zoho-mail-mcp
一款适用于Zoho Mail的[模型上下文协议](https://modelcontextprotocol.io)服务器。允许Claude(或任何MCP客户端)在无需浏览器自动化的情况下,从Zoho Mail账户读取、搜索和发送电子邮件。
官方MCP注册表中没有等效的替代品——本项目填补了这一空白。
## 工具
| 工具 | 描述 |
|------|-------------|
| `list_inbox` | 列出最近的收件箱消息 — 返回发件人、主题、日期、消息ID、文件夹ID |
| `search_emails` | 按关键词、发件人邮箱或主题片段搜索 |
| `read_email` | 读取给定消息ID和文件夹ID的完整电子邮件正文 |
| `send_email` | 从配置的发件人地址发送电子邮件 |
## 前置条件
- 一个[Zoho Mail](https://mail.zoho.com)账户
- Node.js 18+
## 设置
### 1. 创建Zoho OAuth应用
1. 访问[Zoho API 控制台](https://api-console.zoho.com/)
2. 创建一个**自有客户端**应用
3. 在**生成代码**下,添加以下作用域:
```
ZohoMail.messages.READ,ZohoMail.messages.CREATE,ZohoMail.folders.READ,ZohoMail.accounts.READ
```
4. 将过期时间设置为**10分钟**,添加描述,点击**创建**
5. 复制生成的`client_id`、`client_secret`和授权码`grant code`
### 2. 交换授权码以获取刷新令牌
立即运行(授权码10分钟后过期):
```bash
curl -X POST https://accounts.zoho.com/oauth/v2/token \
-d "grant_type=authorization_code" \
-d "client_id=您的客户端ID" \
-d "client_secret=您的客户端密钥" \
-d "code=您的授权码"
```
保存响应中的`refresh_token` — 它不会过期。
### 3. 获取账户ID
```bash
curl -X GET https://mail.zoho.com/api/accounts \
-H "Authorization: Zoho-oauthtoken 您的访问令牌"
```
使用`data[]`中第一个对象的`accountId`值。
### 4. 安装
```bash
git clone https://github.com/SirGreed808/zoho-mail-mcp
cd zoho-mail-mcp
npm install
```
### 5. 添加到Claude代码
```bash
claude mcp add --scope user \
-e "ZOHO_CLIENT_ID=..." \
-e "ZOHO_CLIENT_SECRET=..." \
-e "ZOHO_REFRESH_TOKEN=..." \
-e "ZOHO_ACCOUNT_ID=..." \
-e "ZOHO_SENDER=您@您的域名.com" \
zoho-mail -- node /绝对路径/to/zoho-mail-mcp/index.js
```
`ZOHO_SENDER`必须是账户中已验证的地址或别名。
## 环境变量
| 变量 | 描述 |
|----------|-------------|
| `ZOHO_CLIENT_ID` | OAuth应用客户端ID |
| `ZOHO_CLIENT_SECRET` | OAuth应用客户端密钥 |
| `ZOHO_REFRESH_TOKEN` | 长效刷新令牌(来自步骤2) |
| `ZOHO_ACCOUNT_ID` | Zoho Mail账户ID(来自步骤3) |
| `ZOHO_SENDER` | 发送邮件的电子邮件地址 |
## 注意
- 访问令牌会自动刷新 — 无需手动干预
- `read_email`需要`messageId`和`folderId`,两者均由`list_inbox`和`search_emails`返回
- 仅支持REST API — 不支持IMAP/SMTP
## 许可证
MIT