ZeptoMail Templates MCP
ZeptoMail Templates MCP
Un servidor MCP que permite a un agente de IA (opencode, Claude Desktop, Cursor, ...) inspeccionar y gestionar plantillas de correo electrónico en todos los Agentes de ZeptoMail de tu cuenta de Zoho.
Intencionadamente no envía correos electrónicos, no crea/elimina Agentes, no expone Tokens de Envío de Correo ni gestiona dominios. Solo lee la lista de Agentes y gestiona plantillas.
Inicio rápido (local, ~5 minutos)
1. Instala el servidor
npm i -g zeptomail-mcpEsto te da un comando zeptomail-mcp en tu PATH. Omite esto si prefieres ejecutarlo desde un clon local de el repositorio (node /path/to/zeptomail-mcp/dist/src/server.js).
2. Crea una aplicación OAuth de Zoho
Abre la Consola de API de Zoho.
Crea una Aplicación basada en servidor:
Nombre del cliente:
zeptomailmcp(sin guiones — Zoho los rechaza)URL de página de inicio: cualquier cosa, p. ej.
https://github.com/P4rthPat3l/zeptomail-mcpURI de redirección autorizada:
http://localhost:4567/callback
Anota el ID de cliente y el Secreto de cliente.
Un Self Client también funciona. No tiene campo de URI de redirección, así que en lugar del paso 2 usa su pestaña Generate Code (consulta Configuración de Self Client más abajo).
3. Obtén un token de actualización
ZOHO_CLIENT_ID=<your-client-id> ZOHO_CLIENT_SECRET=<your-secret> zeptomail-mcp-loginTu navegador abre la pantalla de consentimiento de Zoho para los ámbitos Zeptomail.MailAgents.READ + Zeptomail.MailTemplates.All. Después de que lo apruebes, el script imprime un token de actualización.
Si estás ejecutando desde un clon local en lugar de una instalación global, este mismo comando es
npm run login.
4. Configura tu host MCP
Puedes pasar las credenciales de Zoho en línea en la configuración del host, o cargarlas desde un archivo .env para que el archivo de configuración en sí mismo no contenga secretos. Ambas opciones funcionan; elige una.
Opción A — cargar desde un archivo .env (recomendado)
Pon los secretos en un archivo .env (añádelo a .gitignore — es una credencial):
# .env
ZOHO_CLIENT_ID=<your-client-id>
ZOHO_CLIENT_SECRET=<your-secret>
ZOHO_REFRESH_TOKEN=<your-refresh-token>
ZOHO_ACCOUNTS_URL=https://accounts.zoho.comLuego apunta el servidor a él con --env-file. La ruta se resuelve relativa al directorio de trabajo del host; usa una ruta absoluta si no estás seguro.
opencode — opencode.json (o .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"]
}
}
}Opción B — en línea en la configuración del host
opencode — opencode.json (o .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"
}
}
}
}Ejecutar desde un clon local en lugar de una instalación global
Ejecuta el lanzador compilado directamente con node. Analiza --env-file de la misma manera que el comando global zeptomail-mcp, así que la bandera va después del script:
opencode (Opción A archivo-env):
["node", "/absolute/path/to/zeptomail-mcp/dist/src/cli.js", "--env-file=/absolute/path/to/.env"]opencode (Opción B en línea):
["node", "/absolute/path/to/zeptomail-mcp/dist/src/cli.js"]+ el bloqueenvironmentClaude Desktop:
"command": "node","args": [".../dist/src/cli.js", "--env-file=..."](o solo[".../dist/src/cli.js"]con el bloqueenv)
5. Úsalo
Pide a tu agente que llame a las herramientas:
"lista mis agentes de ZeptoMail"
"encuentra la plantilla con alias
team_invite""muéstrame la plantilla OTP en el agente sandbox"
Related MCP server: Zoho Mail MCP Server
Configuración de Self Client
Un Self Client no tiene URI de redirección, así que zeptomail-mcp-login no puede capturar su callback. En su lugar:
Consola de API → Self Client → Generate Code.
Ámbito:
Zeptomail.MailAgents.READ,Zeptomail.MailTemplates.All→ CREATE.Copia el código generado y cámbialo:
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/"La respuesta JSON contiene refresh_token.
Herramientas
Herramienta MCP | Propósito | Modifica datos |
| Lista los Agentes accesibles y las claves/alias exactos de Agente | No |
| Lista las plantillas en un Agente explícito | No |
| Busca en un Agente o en todos por nombre/alias/asunto | No |
| Lee una plantilla completa de un Agente | No |
| Crea una plantilla en un Agente explícito | Sí |
| Actualización parcial con protección contra escrituras obsoletas | Sí |
| Eliminación permanente con comprobaciones de Agente/nombre/marca de tiempo | Sí |
Las herramientas de escritura requieren ambas:
ZEPTOMAIL_MCP_ALLOW_WRITES=trueen el entorno del servidor.confirm=trueen la llamada individual a la herramienta.
Cada escritura también requiere la agentKey exacta y el expectedAgentName de una llamada reciente a zeptomail_list_agents. La actualización/eliminación además requieren los valores de seguridad actuales de la plantilla (expectedModifiedTime, expectedTemplateName), de modo que una lectura obsoleta nunca pueda sobrescribir una edición más reciente.
Referencia de configuración
Variable | Obligatoria | Predeterminado | Propósito |
| sí | — | ID de cliente de la aplicación OAuth de Zoho |
| sí | — | Secreto de cliente de la aplicación OAuth de Zoho |
| sí (stdio) | — | Token de larga duración; el servidor genera tokens de acceso de 1 hora a partir de él |
| no |
| Centro de datos de Zoho ( |
| no |
| URL base de la API de ZeptoMail |
| no |
| Establece |
| no | todos los agentes | Lista de permitidos |
| no |
|
|
Todas las variables pueden proporcionarse como variables de entorno del proceso (establecidas por la configuración del host) o mediante un argumento --env-file=<ruta> al servidor (consulta Configura tu host MCP más arriba). Las variables de proceso tienen prioridad; el archivo solo completa las variables que no están establecidas.
Modo alojado (remoto) con OAuth 2.0 + PKCE
Para un endpoint MCP compartido/público, ejecuta con ZEPTOMAIL_MCP_TRANSPORT=http. El servidor se convierte en un servidor de autorización OAuth que actúa como proxy hacia Zoho como servidor de autorización ascendente:
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.jsLos clientes descubren metadatos en
/.well-known/oauth-protected-resourcey/.well-known/oauth-authorization-server, se registran dinámicamente y dan su consentimiento en el navegador.El servidor redirige a Zoho con el desafío PKCE S256 del cliente y
access_type=offline, intercambia el código con el secreto de cliente de Zoho del servidor y almacena un token de actualización de Zoho por cliente que nunca sale del servidor.Las herramientas de cada usuario operan en su propia cuenta de ZeptoMail.
Configuración del host (opencode):
{
"mcp": {
"zeptomail": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": {}
}
}
}Requisitos para el modo alojado: HTTPS (el SDK rechaza URLs de emisor no HTTPS excepto localhost), la URI de callback de Zoho registrada en la consola de API (https://mcp.example.com/callback) y un almacén de tokens persistente. Reiniciar el servidor invalida los tokens emitidos — los clientes vuelven a dar su consentimiento una vez.
Desarrollo
npm install
npm run typecheck
npm test
npm run buildNotas de seguridad
El descubrimiento de Agentes es de solo lectura; no hay herramientas para crear Agentes, generar claves de API o acceder a Tokens de Envío de Correo.
El MCP nunca envía correos electrónicos.
ZEPTOMAIL_MCP_ALLOWED_AGENT_KEYSrestringe qué Agentes puede tocar el MCP incluso cuando la cuenta OAuth puede ver más.El token de actualización es una credencial de larga duración: mantenlo en el lado del servidor, trátalo como una contraseña y revócalo en la consola de Zoho si alguna vez se filtra.
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