zimbra-mcp
Allows reading and sending emails via IMAP and SMTP protocols, with example configuration for Gmail accounts.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@zimbra-mcpshow my last 5 unread emails"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
zimbra-mcp
MCP server for IMAP (read) and SMTP (send), aimed at Zimbra and any standard mail host. stdio transport — works with Claude Desktop, Cursor, and other MCP clients.
npm: npmjs.com/package/zimbra-mcp · Source: github.com/TechGuyVN/zimbra-mcp
Requirements
Node.js ≥ 18
Mail with IMAP and SMTP enabled
Related MCP server: mail-mcp
Install (npm only)
npm install -g zimbra-mcpThis installs the zimbra-mcp command and the package under your global node_modules.
Entrypoint for MCP config
Use one of these in Claude/Cursor:
A — Global command (simplest if npm bin -g is on your PATH when the app starts):
{
"command": "zimbra-mcp",
"args": []
}B — node + absolute path to dist/index.js (most reliable):
Print the global package root:
npm root -gYour file is:
{that_output}/zimbra-mcp/dist/index.js
Example macOS/Linux:/usr/local/lib/node_modules/zimbra-mcp/dist/index.js
Example Windows (typical):C:\Users\You\AppData\Roaming\npm\node_modules\zimbra-mcp\dist\index.js
{
"command": "node",
"args": ["/absolute/path/to/node_modules/zimbra-mcp/dist/index.js"]
}Always use a real absolute path in args.
Claude Desktop + nvm: Claude prepends old Node versions to PATH (e.g. v13 first). Then /usr/bin/env node inside any shebang can pick Node 13, which breaks this package (Node ≥ 18 required). Fix: set command to an absolute Node 18+ binary and args to the script:
{
"mcpServers": {
"zimbra-mail": {
"command": "/Users/YOU/.nvm/versions/node/v20.19.5/bin/node",
"args": ["/usr/local/lib/node_modules/zimbra-mcp/dist/index.js"],
"env": {}
}
}
}Adjust paths with which node (after nvm use 20) and npm root -g. You can use .../zimbra-mcp/bin/zimbra-mcp.mjs instead of dist/index.js if you prefer the npm bin entry (same Node binary in command).
Environment variables
Set these in the MCP env object (all values as strings). The server does not read .env by itself.
Single mailbox (flat env)
Do not set ZIMBRA_MAILBOXES_PATH. One profile named default is used; omit profile on tools.
Variable | Required | Notes |
| Yes | IMAP host |
| No | Default |
| Yes | Usually full email |
| Yes | Password or app password |
| No | If unset: |
| Yes | SMTP host |
| No | Default |
| Yes | Often same as IMAP |
| Yes | Often same as IMAP |
| No | If unset: |
| No | Max messages per list call; default 200, hard cap 1000 |
Ports: IMAP 993 (TLS), SMTP 587 (STARTTLS, often ZIMBRA_SMTP_SECURE=false) or 465 (SSL).
Multiple mailboxes (one JSON file)
Create a JSON file (see example below).
chmod 600it.Set
ZIMBRA_MAILBOXES_PATHto its absolute path.Use tool
zimbra_list_profiles, then passprofileon other tools.
Variable | Required | Notes |
| Yes | Absolute path to the JSON file |
| No | Overrides list cap (max 1000) |
Minimal multi-profile JSON:
{
"defaultProfile": "work",
"maxListMessages": 200,
"profiles": [
{
"id": "work",
"imap": {
"host": "mail.company.com",
"port": 993,
"user": "you@company.com",
"pass": "secret"
},
"smtp": {
"host": "mail.company.com",
"port": 587,
"user": "you@company.com",
"pass": "secret"
}
},
{
"id": "personal",
"imap": {
"host": "imap.gmail.com",
"user": "you@gmail.com",
"pass": "app-password"
},
"smtp": {
"host": "smtp.gmail.com",
"user": "you@gmail.com",
"pass": "app-password"
}
}
]
}port / secure under imap/smtp are optional (defaults: IMAP 993, SMTP 587, with TLS rules same as flat env). More examples: mailboxes.example.json on GitHub.
Claude Desktop
Config file
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Single mailbox
{
"mcpServers": {
"zimbra-mail": {
"command": "zimbra-mcp",
"args": [],
"env": {
"ZIMBRA_IMAP_HOST": "mail.example.com",
"ZIMBRA_IMAP_PORT": "993",
"ZIMBRA_IMAP_USER": "you@example.com",
"ZIMBRA_IMAP_PASS": "your-secret",
"ZIMBRA_SMTP_HOST": "mail.example.com",
"ZIMBRA_SMTP_PORT": "587",
"ZIMBRA_SMTP_USER": "you@example.com",
"ZIMBRA_SMTP_PASS": "your-secret"
}
}
}
}Multiple mailboxes
{
"mcpServers": {
"zimbra-mail": {
"command": "zimbra-mcp",
"args": [],
"env": {
"ZIMBRA_MAILBOXES_PATH": "/Users/you/.config/zimbra-mcp/mailboxes.json"
}
}
}
}Restart Claude fully after edits.
Cursor
Settings → MCP (or mcp.json per Cursor docs). Use the same command / args / env shape as above, then reload MCP.
Tools
Tool | Purpose |
| List mailbox profiles ( |
| List IMAP folders. Optional |
| Last N messages in |
| Read by UID. Optional |
| Send mail. Optional |
UID is scoped to folder and profile.
Tips
One account, many folders:
zimbra_list_foldersthenzimbra_list_messagesper folder.Raise
ZIMBRA_LIST_MAXif you need longer lists (≤ 1000).Listing is “last N by sequence”; filter by
datein the model if you need “today’s mail”.
Troubleshooting
Issue | Check |
MCP won’t start |
|
Safer start | Use |
Auth errors | Host/port/TLS; app passwords; IMAP/SMTP enabled on server. |
Security
Never paste secrets into public chats; lock down JSON and Claude config files (
chmod 600where applicable).This MCP can read and send mail for every configured account.
Protocol & license
MCP · ISC — see package.json.
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.
Latest Blog Posts
- 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/TechGuyVN/zimbra-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server