ZeptoMail Templates MCP
ZeptoMail Templates MCP
MCP-сервер, который позволяет ИИ-агенту (opencode, Claude Desktop, Cursor и т. д.) просматривать и управлять шаблонами электронной почты во всех агентах ZeptoMail в вашем аккаунте Zoho.
Он намеренно не отправляет электронные письма, не создаёт/удаляет агентов, не раскрывает токены отправки почты и не управляет доменами. Он только читает список агентов и управляет шаблонами.
Быстрый старт (локально, ~5 минут)
1. Установите сервер
npm i -g zeptomail-mcpЭто даёт вам команду zeptomail-mcp в PATH. Пропустите этот шаг, если предпочитаете запускать из локального клона репозитория (node /path/to/zeptomail-mcp/dist/src/server.js).
2. Создайте приложение Zoho OAuth
Откройте консоль API Zoho.
Создайте серверное приложение:
Имя клиента:
zeptomailmcp(без дефисов — Zoho их отклоняет)URL домашней страницы: любой, например
https://github.com/P4rthPat3l/zeptomail-mcpАвторизованный URI перенаправления:
http://localhost:4567/callback
Запишите Client ID и Client Secret.
Self Client также работает. У него нет поля redirect URI, поэтому вместо шага 2 используйте его вкладку Generate Code (см. Настройка Self Client ниже).
3. Получите refresh-токен
ZOHO_CLIENT_ID=<your-client-id> ZOHO_CLIENT_SECRET=<your-secret> zeptomail-mcp-loginВаш браузер откроет экран согласия Zoho для областей Zeptomail.MailAgents.READ + Zeptomail.MailTemplates.All. После одобрения скрипт выведет refresh-токен.
Если вы запускаете из локального клона вместо глобальной установки, эта же команда —
npm run login.
4. Настройте ваш MCP-хост
Вы можете передать учётные данные Zoho напрямую в конфигурации хоста или загрузить их из файла .env, чтобы сам конфигурационный файл оставался без секретов. Оба способа работают; выберите один.
Вариант A — загрузка из файла .env (рекомендуется)
Поместите секреты в файл .env (добавьте его в .gitignore — это учётные данные):
# .env
ZOHO_CLIENT_ID=<your-client-id>
ZOHO_CLIENT_SECRET=<your-secret>
ZOHO_REFRESH_TOKEN=<your-refresh-token>
ZOHO_ACCOUNTS_URL=https://accounts.zoho.comЗатем укажите серверу на этот файл с помощью --env-file. Путь разрешается относительно рабочего каталога хоста; если сомневаетесь, используйте абсолютный путь.
opencode — opencode.json (или .opencode/opencode.json):
{
"mcp": {
"zeptomail": {
"type": "local",
"command": ["zeptomail-mcp", "--env-file=/absolute/path/to/.env"],
"enabled": true
}
}
}Claude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"zeptomail": {
"command": "zeptomail-mcp",
"args": ["--env-file=/absolute/path/to/.env"]
}
}
}Вариант B — напрямую в конфигурации хоста
opencode — opencode.json (или .opencode/opencode.json):
{
"mcp": {
"zeptomail": {
"type": "local",
"command": ["zeptomail-mcp"],
"enabled": true,
"environment": {
"ZOHO_CLIENT_ID": "...",
"ZOHO_CLIENT_SECRET": "...",
"ZOHO_REFRESH_TOKEN": "...",
"ZOHO_ACCOUNTS_URL": "https://accounts.zoho.com"
}
}
}
}Claude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"zeptomail": {
"command": "zeptomail-mcp",
"env": {
"ZOHO_CLIENT_ID": "...",
"ZOHO_CLIENT_SECRET": "...",
"ZOHO_REFRESH_TOKEN": "...",
"ZOHO_ACCOUNTS_URL": "https://accounts.zoho.com"
}
}
}
}Запуск из локального клона вместо глобальной установки
Запустите встроенный лаунчер напрямую с помощью node. Он разбирает --env-file так же, как глобальная команда zeptomail-mcp, поэтому флаг идёт после скрипта:
opencode (Вариант A с env-file):
["node", "/absolute/path/to/zeptomail-mcp/dist/src/cli.js", "--env-file=/absolute/path/to/.env"]opencode (Вариант B, напрямую):
["node", "/absolute/path/to/zeptomail-mcp/dist/src/cli.js"]+ блокenvironmentClaude Desktop:
"command": "node","args": [".../dist/src/cli.js", "--env-file=..."](или просто[".../dist/src/cli.js"]с блокомenv)
5. Используйте это
Попросите вашего агента вызвать инструменты:
"список моих агентов ZeptoMail"
"найти шаблон с псевдонимом
team_invite""показать шаблон OTP в песочнице агента"
Related MCP server: Zoho Mail MCP Server
Настройка Self Client
У Self Client нет redirect URI, поэтому zeptomail-mcp-login не может перехватить его callback. Вместо этого:
Консоль API → Self Client → Generate Code.
Область:
Zeptomail.MailAgents.READ,Zeptomail.MailTemplates.All→ CREATE.Скопируйте сгенерированный код и обменяйте его:
curl -X POST https://accounts.zoho.com/oauth/v2/token \
-d "code=<generated code>" \
-d "client_id=<client id>" \
-d "client_secret=<client secret>" \
-d "grant_type=authorization_code" \
-d "redirect_uri=https://api-console.zoho.com/"Ответ JSON содержит refresh_token.
Инструменты
Инструмент MCP | Назначение | Изменяет данные |
| Перечисляет доступных агентов и точные ключи/псевдонимы агентов | Нет |
| Перечисляет шаблоны в одном явном агенте | Нет |
| Поиск по одному агенту или всем агентам по имени/псевдониму/теме | Нет |
| Чтение одного полного шаблона из одного агента | Нет |
| Создание шаблона в одном явном агенте | Да |
| Частичное обновление с защитой от устаревшей записи | Да |
| Полное удаление с проверками агента/имени/времени | Да |
Инструменты записи требуют обоих условий:
ZEPTOMAIL_MCP_ALLOW_WRITES=trueв окружении сервера.confirm=trueв вызове отдельного инструмента.
Каждая запись также требует точных значений agentKey и expectedAgentName из нового вызова zeptomail_list_agents. Обновление/удаление дополнительно требует текущих значений безопасности шаблона (expectedModifiedTime, expectedTemplateName), поэтому устаревшее чтение никогда не перезапишет более новое изменение.
Справочник конфигурации
Переменная | Обязательная | По умолчанию | Назначение |
| да | — | ID клиента приложения Zoho OAuth |
| да | — | Секрет клиента приложения Zoho OAuth |
| да (stdio) | — | Долгоживущий токен; сервер создаёт из него часовые токены доступа |
| нет |
| Центр обработки данных Zoho ( |
| нет |
| Базовый URL API ZeptoMail |
| нет |
| Установите |
| нет | все агенты | Разрешённый список |
| нет |
|
|
Все переменные могут быть переданы либо как переменные окружения процесса (задаются конфигурацией хоста), либо через аргумент --env-file=<path> к серверу (см. Настройка MCP-хоста выше). Переменные процесса имеют приоритет; файл заполняет только неустановленные переменные.
Размещённый (удалённый) режим с OAuth 2.0 + PKCE
Для общего/публичного MCP-конечной точки запустите с ZEPTOMAIL_MCP_TRANSPORT=http. Сервер становится сервером авторизации OAuth, который проксирует к Zoho как вышестоящему серверу авторизации:
MCP client ⇄ this MCP server (OAuth AS + resource server) ⇄ Zoho (upstream AS) ⇄ ZeptoMail APIZEPTOMAIL_MCP_TRANSPORT=http \
ZEPTOMAIL_MCP_SERVER_URL=https://mcp.example.com \
ZEPTOMAIL_MCP_PORT=3006 \
ZEPTOMAIL_MCP_TOKEN_STORE=/var/lib/zeptomail-mcp/tokens.json \
node dist/src/server.jsКлиенты обнаруживают метаданные по адресам
/.well-known/oauth-protected-resourceи/.well-known/oauth-authorization-server, динамически регистрируются и дают согласие в браузере.Сервер перенаправляет на Zoho с PKCE S256 challenge клиента и
access_type=offline, обменивает код на секрет клиента Zoho сервера и сохраняет индивидуальный refresh-токен Zoho для каждого клиента, который никогда не покидает сервер.Инструменты каждого пользователя работают с его собственным аккаунтом ZeptoMail.
Конфигурация хоста (opencode):
{
"mcp": {
"zeptomail": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": {}
}
}
}Требования для размещённого режима: HTTPS (SDK отклоняет не-HTTPS URL эмитента, кроме localhost), URI обратного вызова Zoho, зарегистрированный в консоли API (https://mcp.example.com/callback), и постоянное хранилище токенов. Перезапуск сервера делает выпущенные токены недействительными — клиенты повторно дают согласие один раз.
Разработка
npm install
npm run typecheck
npm test
npm run buildЗамечания по безопасности
Обнаружение агентов доступно только для чтения; нет инструментов для создания агентов, генерации API-ключей или доступа к токенам отправки почты.
MCP никогда не отправляет электронные письма.
ZEPTOMAIL_MCP_ALLOWED_AGENT_KEYSограничивает, к каким агентам MCP может обращаться, даже если учётная запись OAuth видит больше.Refresh-токен — это долгоживущее учётное данное: храните его на стороне сервера, относитесь к нему как к паролю и отзывайте его в консоли Zoho, если он когда-либо утечёт.
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to read, search, send, and reply to Zoho Mail via IMAP/SMTP using an application-specific password.1MIT
- AlicenseNot gradedqualityDmaintenanceProvides full access to Zoho Mail accounts, enabling email search, read, send, reply, thread management, folder/label operations, and more via 14 tools.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with email accounts via IMAP and SMTP, supporting mailbox listing, email search, retrieval, sending, and management.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to read, send, search, reply to, and delete emails directly from a Zoho Mail account.5MIT
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.
AI agents read & send email, manage mailboxes, domains and webhooks via the QMailing API.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/P4rthPat3l/zeptomail-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server