Skip to main content
Glama
vasparshin

zoho-multi-mcp

by vasparshin

zoho-multi-mcp

一个 MCP (Model Context Protocol) 服务器,将 Claude 等 AI 助手连接到您的 Zoho Mail 账户。直接从您的 AI 工作流中读取、发送、搜索、回复和删除电子邮件——并从一个轻量级进程运行任意数量的 Zoho 邮箱,而不是每个邮箱一个进程。

这是 FujiwaraChoki/zoho-mail-mcp 的一个分支(MIT 许可,见 LICENSE),增加了多账户支持。原始单账户服务器的所有功劳归功于上游作者。

为什么存在这个分支

如果您通过 MCP 运行多个 Zoho 邮箱(一个团队、一组特定于项目的发件人等),自然的设置是每个邮箱一个服务器进程。这可行,但每个进程都承担相同的固定 Bun/V8 运行时内存开销——大约 75-85MB RSS——无论邮箱多小或多空闲。三个邮箱的成本是该基线的三倍,却没有好处,因为实际的每账户状态(一个 OAuth 令牌、一个文件夹缓存)很小。

这个分支增加了一个可选的多账户模式:一个进程可以服务多个 Zoho 账户,既可以作为一个端点,由调用方指定每次调用的账户,也可以——对于现有设置更安全的选择——作为多个监听器,各自绑定自己的固定端口,每个监听器的行为与普通的单账户服务器完全一致。在生产环境中测量:3 个独立的单账户进程合计约 ~230MB RSS,合并为一个进程后约 ~90MB RSS,服务相同的 3 个邮箱。如果只需要一个邮箱,下面“多账户模式”部分之前的所有内容与上游完全一致,并且一如既往地工作。

Related MCP server: Mailing Manager MCP

工具

Tool

Description

list_folders

列出所有邮件文件夹

list_emails

列出文件夹中的邮件,支持过滤和分页

read_email

读取特定邮件的完整内容

search_emails

在所有文件夹中按关键字搜索邮件

send_email

发送新邮件

reply_email

回复现有邮件(回复 / 全部回复)

delete_email

删除邮件(移至垃圾箱或永久删除)

设置

1. 创建 Zoho API 客户端

  1. 前往 Zoho API 控制台(美国数据中心使用 .com)

  2. 点击 添加客户端 > 自客户端

  3. 记下您的 客户端 ID 和 客户端密钥

2. 生成刷新令牌

运行交互式设置助手:

bun run setup.ts

或手动操作:

  1. 在自客户端中,使用以下范围生成授权代码:

    ZohoMail.accounts.READ,ZohoMail.folders.READ,ZohoMail.messages.READ,ZohoMail.messages.CREATE,ZohoMail.messages.DELETE
  2. 将持续时间设置为 10 分钟,添加描述,然后点击 创建

  3. 复制生成的代码,并使用设置脚本进行交换

3. 验证凭据

ZOHO_CLIENT_ID=your_id ZOHO_CLIENT_SECRET=your_secret ZOHO_REFRESH_TOKEN=your_token bun run setup.ts --verify

4. 配置您的 MCP 客户端

单账户 — Claude Code (~/.claude.json)

{
  "mcpServers": {
    "zoho-mail": {
      "command": "bun",
      "args": ["run", "/path/to/zoho-multi-mcp/src/index.ts"],
      "env": {
        "ZOHO_CLIENT_ID": "your_client_id",
        "ZOHO_CLIENT_SECRET": "your_client_secret",
        "ZOHO_REFRESH_TOKEN": "your_refresh_token",
        "ZOHO_DATACENTER": "eu"
      }
    }
  }
}

Claude Desktop 的 claude_desktop_config.json 使用相同格式。

多账户模式

对于您想通过此服务器运行的每个 Zoho 账户,重复上述任何步骤一次,然后选择两种模式之一。

模式 A — 一个端点,调用方选择账户

将 ZOHO_ACCOUNTS_JSON 设置为账户的 JSON 数组,并像往常一样使用 ZOHO_HTTP_PORT(或 stdio)启动服务器。每个工具都会增加一个必需的 account 字段(您提供的 ID 的字符串枚举),每次调用都必须指明它针对哪个账户。

export ZOHO_ACCOUNTS_JSON='[
  {"id": "work", "clientId": "...", "clientSecret": "...", "refreshToken": "..."},
  {"id": "personal", "clientId": "...", "clientSecret": "...", "refreshToken": "..."}
]'
export ZOHO_HTTP_PORT=8010
bun run src/index.ts

当您的 MCP 客户端可以接受每次调用都带有显式 account 参数,并且您希望配置单个 URL 时,此模式很合适。

模式 B — 一个进程,多个固定账户监听器

如上设置 ZOHO_ACCOUNTS_JSON,并设置 ZOHO_MULTI_PORT_JSON 将每个账户绑定到其自己的端口。每个监听器的行为都像一个真正的单账户服务器——任何工具上都没有 account 字段,与该端口上的普通单账户设置字节级相同。

export ZOHO_ACCOUNTS_JSON='[
  {"id": "work", "clientId": "...", "clientSecret": "...", "refreshToken": "..."},
  {"id": "personal", "clientId": "...", "clientSecret": "...", "refreshToken": "..."}
]'
export ZOHO_MULTI_PORT_JSON='[
  {"id": "work", "port": 8010, "name": "zoho-mail-work"},
  {"id": "personal", "port": 8011, "name": "zoho-mail-personal"}
]'
bun run src/index.ts

这是在迁移现有多进程设置时使用的模式:将您的 MCP 客户端配置指向它已经使用的相同端口,启动这一个进程而不是您过去运行的几个进程,其他一切都不需要更改。name 是可选的,仅影响日志行标签。

两种模式都不是必需的——省略 ZOHO_ACCOUNTS_JSON 和 ZOHO_MULTI_PORT_JSON,服务器行为与原始单账户上游项目完全一致,直接读取 ZOHO_CLIENT_ID/ZOHO_CLIENT_SECRET/ZOHO_REFRESH_TOKEN。

环境变量

Variable

Required

Description

ZOHO_CLIENT_ID

仅单账户模式

来自 Zoho API 控制台的 OAuth2 客户端 ID

ZOHO_CLIENT_SECRET

仅单账户模式

OAuth2 客户端密钥

ZOHO_REFRESH_TOKEN

仅单账户模式

OAuth2 刷新令牌(通过设置生成)

ZOHO_DATACENTER

否

Zoho 数据中心:eu(默认)、us、in、au、jp

ZOHO_ACCOUNTS_JSON

仅多账户模式

{id, clientId, clientSecret, refreshToken, datacenter?} 的 JSON 数组

ZOHO_MULTI_PORT_JSON

仅多端口模式

{id, port, name?} 的 JSON 数组;每个 id 必须出现在 ZOHO_ACCOUNTS_JSON 中

ZOHO_HTTP_PORT

否

在此端口上作为 HTTP 服务器运行,而不是 stdio

ZOHO_SERVER_NAME

否

stdio / 单端口 HTTP 模式的日志行标签

功能

  • 带自动刷新的 OAuth2 - 令牌自动刷新,无需手动干预,在多账户模式下按账户缓存

  • 速率限制 - 内置滑动窗口速率限制器(30 次/分钟),以保持在 Zoho API 限制内

  • 401 重试 - 自动刷新令牌并在认证失败时重试

  • HTML 转纯文本 - 邮件内容转换为干净的纯文本,供 AI 使用

  • 多账户、低内存 - 参见上文“为什么存在这个分支”

要求

  • Bun 运行时

  • 一个或多个具有 API 访问权限的 Zoho Mail 账户

许可证

MIT (c) 2026 Sami Hindi — 见 LICENSE。此分支中的多账户/多端口新增功能在相同许可证下发布。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects AI assistants to email accounts via IMAP/SMTP, enabling reading, searching, sending, and organizing emails with features like smart drafts, scheduling, and attachment handling.
    95 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to read, search, send, and reply to Zoho Mail via IMAP/SMTP using an application-specific password.
    1
    MIT