Skip to main content

Model Context Protocol server for Mailcow — read/send mail and manage your Mailcow server from Claude

Project description

mcp-mailcow

PyPI npm License: MIT

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

  1. Use app passwords, not your main mailbox password. In Mailcow: mailbox → app passwords → create, scope to IMAP+SMTP only.

  2. Use a Read-Only API key for admin mode if you only need to query. (Set API_KEY_READ_ONLY instead of API_KEY in mailcow.conf.)

  3. Audit log review: tail ~/.local/state/mcp-mailcow/audit.log periodically.

  4. Destructive operations (mailbox_delete, alias_delete) require an explicit confirm: true parameter. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_mailcow-1.0.0.tar.gz (36.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_mailcow-1.0.0-py3-none-any.whl (36.6 kB view details)

Uploaded Python 3

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

Hashes for mcp_mailcow-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a4cffb6ba3b1c002b7234b493b9e337965f331988188024461bfae7f16a89b85
MD5 a1e94d964899933c18593269d0eda824
BLAKE2b-256 408315157aaa9af73e0d9a36ae34000c7a0b42a81ceeee533ee8d5a56552785f

See more details on using hashes here.

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

Hashes for mcp_mailcow-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 18c12fba9b6cbfc9bb2adad446e493a666859bc2ddbc75d927cfacdc8d27b4a5
MD5 8716fd75536e0334c3518584a41be8be
BLAKE2b-256 408a42c755f5cbd1a3094f45c9e743f52af84c92905a182247939f1c06511bdb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page