Model Context Protocol server for Mailcow — read/send mail and manage your Mailcow server from Claude
Project description
mcp-mailcow
Model Context Protocol server for Mailcow. Pilot your Mailcow instance from Claude (or any MCP-compatible client): read/send mail, manage mailboxes, aliases, domains, app passwords.
This is a BYOK (Bring Your Own Keys) package — install it on your own machine, point it at your Mailcow, use your credentials.
Features
User mode (mailbox operations)
- Read inbox, search messages, download attachments
- Send mail, reply to messages
- Mark read/unread/flagged, move, delete
Admin mode (server operations)
- Manage mailboxes (create / list / update / delete / quota)
- Manage aliases (create / list / delete)
- Manage domains (list / create)
- Manage app passwords (list / create / delete with protocol scoping)
- Quota reports, deliverability tests, server status
Install
Python (recommended)
# Zero-install with uvx (recommended)
uvx mcp-mailcow --mode user
# Or pip install
pip install mcp-mailcow
Node / TypeScript
npm install -g mcp-mailcow
# or use npx
npx mcp-mailcow --mode user
Configuration
Claude Desktop / Claude Code
Add to your claude_desktop_config.json:
{
"mcpServers": {
"mailcow-mailbox": {
"command": "uvx",
"args": ["mcp-mailcow", "--mode", "user"],
"env": {
"MAILCOW_HOST": "mail.example.com",
"MAILCOW_MAIL_USER": "you@example.com",
"MAILCOW_MAIL_PASS": "your-app-password"
}
},
"mailcow-admin": {
"command": "uvx",
"args": ["mcp-mailcow", "--mode", "admin"],
"env": {
"MAILCOW_ADMIN_URL": "https://mail.example.com",
"MAILCOW_ADMIN_API_KEY": "your-api-key"
}
}
}
}
You can run both modes simultaneously (each gets its own server entry).
Environment variables
User mode
| Variable | Required | Description |
|---|---|---|
MAILCOW_HOST |
yes | Mailcow hostname (e.g. mail.example.com) |
MAILCOW_MAIL_USER |
yes | Full email address (e.g. you@example.com) |
MAILCOW_MAIL_PASS |
yes | App password (recommended) or main password |
MAILCOW_IMAP_PORT |
no | Default 993 (IMAPS) |
MAILCOW_SMTP_PORT |
no | Default 587 (STARTTLS) |
Admin mode
| Variable | Required | Description |
|---|---|---|
MAILCOW_ADMIN_URL |
yes | Base URL (e.g. https://mail.example.com) |
MAILCOW_ADMIN_API_KEY |
yes | Mailcow API key (admin → Configuration → Access → API) |
Common
| Variable | Default | Description |
|---|---|---|
MCP_MAILCOW_AUDIT_LOG |
~/.local/state/mcp-mailcow/audit.log |
Audit log path (JSONL) |
MCP_MAILCOW_TLS_VERIFY |
true |
Set to false only for self-signed certs (not recommended) |
Security best practices
-
Use app passwords, not your main mailbox password. In Mailcow: mailbox → app passwords → create, scope to IMAP+SMTP only.
-
Use a Read-Only API key for admin mode if you only need to query. (Set
API_KEY_READ_ONLYinstead ofAPI_KEYinmailcow.conf.) -
Audit log review: tail
~/.local/state/mcp-mailcow/audit.logperiodically. -
Destructive operations (
mailbox_delete,alias_delete) require an explicitconfirm: trueparameter. The server refuses without it.
Development
This is a monorepo with parallel Python and TypeScript implementations.
Both share a common tool schema (tools-schema.yaml) as source of truth.
mcp-mailcow/
├── tools-schema.yaml ← source of truth (read by both impls at build time)
├── py/ ← Python implementation (PyPI)
├── node/ ← TypeScript implementation (npm)
└── shared/ ← shared mocks, integration tests
See CONTRIBUTING.md for setup and contribution guidelines.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_mailcow-1.0.0.tar.gz.
File metadata
- Download URL: mcp_mailcow-1.0.0.tar.gz
- Upload date:
- Size: 36.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4cffb6ba3b1c002b7234b493b9e337965f331988188024461bfae7f16a89b85
|
|
| MD5 |
a1e94d964899933c18593269d0eda824
|
|
| BLAKE2b-256 |
408315157aaa9af73e0d9a36ae34000c7a0b42a81ceeee533ee8d5a56552785f
|
File details
Details for the file mcp_mailcow-1.0.0-py3-none-any.whl.
File metadata
- Download URL: mcp_mailcow-1.0.0-py3-none-any.whl
- Upload date:
- Size: 36.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18c12fba9b6cbfc9bb2adad446e493a666859bc2ddbc75d927cfacdc8d27b4a5
|
|
| MD5 |
8716fd75536e0334c3518584a41be8be
|
|
| BLAKE2b-256 |
408a42c755f5cbd1a3094f45c9e743f52af84c92905a182247939f1c06511bdb
|