Skip to main content
Glama
vasparshin

zoho-multi-mcp

by vasparshin

zoho-multi-mcp

Сервер MCP (Model Context Protocol), который подключает AI-ассистентов, таких как Claude, к вашим аккаунтам Zoho Mail. Читайте, отправляйте, ищите, отвечайте на письма и удаляйте их прямо из вашего AI-рабочего процесса — и запускайте сколько угодно почтовых ящиков Zoho в одном лёгком процессе, вместо того чтобы запускать отдельный процесс для каждого ящика.

Это форк проекта [FujiwaraChoki/zoho-mail-mcp](https://github.com/Fuj63? create? Wait, need exact URL. Original has https://github.com/FujiwaraChoki/zoho-mail-mcp . I accidentally typed? Let's fix: https://github.com/FujiwaraChoki/zoho-mail-mcp. (лицензия MIT, см. LICENSE) с добавленной поддержкой нескольких аккаунтов. Вся заслуга по созданию оригинального сервера для одного аккуунта принадлежит автору апстрима.

Зачем существует этот форк

Если вы запускаете несколько почтовых ящиков Zoho через MCP (например, для команды или набора отправителей по проектам), естественная конфигурация — один сервер на каждый ящик. Это работает, но каждый процесс несёт одни и те же фиксированные накладные расходы памяти Bun/V8 — примерно 75–85 МБ RSS, независимо от того, насколько маленьким или неактивным является ящик. Три ящика обходятся в три раза этого базового уровня безо всякой выгоды, ведь фактическое состояние на каждый аккаунт (OAuth-токен и кэш папок) совсем мало.

Этот форк добавляет опциональный режим работы с несколькими аккаунтами: один процесс может обслуживать несколько аккаунтов Zoho — либо как одну конечную точку, где вызывающая сторона указывает аккаунт при каждом вызове, либо (более безопасный вариант для существуюides настройки) как несколько слушателей на собственных фиксированных портах, каждый из которых ведёт себя в точности как обычный однопоточный сервер. По замерам в проде: 3 отдельные монопольные процесса давали суммарно около 230 МБ RSS, а объединение их в один процесс снизило потребление до ~90 МБ RSS при обслуживании тех же 3 ящиков. Всё, что находится ниже раздела «Режим нескольких аккаунтов», не изменялось относительно оригинального проекта и работает ровно как раньше, если вам нужен один почтовый ящик.

Related MCP server: Mailing Manager MCP

Инструменты

Инструмент

Описение

list_folders

Список всех почтовых папок

list_emails

Список писем в папке с фильтрацией и пагинацией

read_email

Чтение полного содержимого конкретного письма

search_emails

Поиск писем по ключевому слову по всем папкам

send_email

Отправка нового письма

reply_email

Ответ на существующее письмо (ответ / ответ всем)

delete_email

Удаление письма (в корзину или окончательно)

Установка

1. Создайте API-клиент Zoho

  1. Перейдите в Zoho API Console (для датацентра в США используйте .com)

  2. Нажмите Add Client > Self Client

  3. Сохраните ваш Client ID и Client Secret

2. Сгенерируйте refresh-токен

Запустите интерактивный помощник настройки:

bun run setup.ts

Или вручную:

  1. В разделе Self Client сгенерируйте grant code со следующими областми доступа:

    ZohoMail.accounts.READ,ZohoMail.folders.READ,ZohoMail.messages.READ,ZohoMail.messages.CREATE,ZohoMail.messages.DELETE
  2. Установите срок действия 10 минут, добавьте описание и нажмите Create

  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_config.json в Claude Desktop.

Режим нескольких аккаунтов

Повторите любой из шагов выше один раз для каждого аккаунта 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, и его ответ побайтов соответствует обычested серверу одного аккаунта на этом порту.

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 напрямую.

Переменные окружения

Переменная

Обязательность

Описание

ZOHO_CLIENT_ID

Только для одного аккаунта

OAuth2 Client ID из Zoho API Console

ZOHO_CLIENT_SECRET

Только для одного аккаунта

OAuth2 Client Secret

ZOHO_REFRESH_TOKEN

Только для одного аккаунта

OAuth2 Refresh Token (сгенерирован при настройке)

ZOHO_DATACENTER

Нет

Датацентр Zoho: eu (по умолчанию), us, in, au, jp

ZOHO_ACCOUNTS_JSON

Только для нескольких аккаунтов

JSON-массив вида {id, clientId, clientSecret, refreshToken, datacenter?}

ZOHO_MULTI_PORT_JSON

Только для многопортового режима

JSON-массив вида {id, port, name?}; каждый id должен присутствовать в ZOHO_ACCOUNTS_JSON

ZOHO_HTTP_PORT

Нет

Запуск в качестве HTTP-сервера на этом порту вместо stdio

ZOHO_SERVER_NAME

Нет

Метка в лог-строках для stdio / однопортового HTTP-режима

Возможности

  • Прочает OAuth2 с автоматическим обновлением — токены обновляются автоматически, без ручного, и кэширование ведётся отдельно для каждого аккаунта в многопользовательском подключении

  • Rate limiting — встроен скользящий ограничитель частоты (30 запросов/мин), чтобы не выйти за лимиты Zoho API

  • Retry при 401 — автоматически обновляет токен и повторяет запрос при сбои аутентификации

  • HTML в plain text — содержимое писем превращается в чистый обычный текст для ИИ

  • Multi-account и низкое потребление памяти — см. раздел «Зачем существует этот фор»

Требования

  • Среда выполнения Bun

  • Один или более аккаунтов Zoho Mail с API-доступом

Лицензия

MIT (c) 2026 Sami Hindi — см. LICENSE. Дополнения многопользовательского/многопортового режима в этом фореке выпущены под той же лицензией.”

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    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.
    265
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to read, search, send, and reply to Zoho Mail via IMAP/SMTP using an application-specific password.
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Email for AI agents — send, receive as a webhook, manage domains, templates, routing.

  • Email for AI agents: send mail, manage contacts, automations & webhooks. Zero-DNS first send.

  • Give an AI agent its own inbox — receive email as a webhook, send over a verified domain.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vasparshin/zoho-multi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server