Ironbrain / Toolbox
Ironbrain MailCal
MailCal connects bots and scripts to email and calendar on your own servers—over IMAP, SMTP, and CalDAV. There is a CLI for shell and cron, and an MCP server for Cursor and similar clients. Both share the same configuration.
Why MailCal?
Bots often need mailbox and calendar access—but the data lives on self-hosted servers (for example SOGo), not behind a cloud mail API. MailCal is the tool for that: multi-account, read and write commands, and an SMTP send gate so personal or read-only accounts do not send by accident.
What MailCal does
Protocols you already run—multiple accounts, multiple calendars.
- 1
IMAP, SMTP & CalDAV
Multiple accounts against your servers. No requirement to use hosted mail APIs—infrastructure and data stay with you.
- 2
List and filter calendars
Discover, select, and filter calendars—including shared ones. Tested with SOGo (User-Agent and trailing slash where needed).
- 3
SMTP send gate
Per account you control whether sending is allowed. For personal or read-only accounts set
Email.Smtp.Enabled: falseso bots cannot send as you. - 4
CLI and MCP, one config
Two surfaces, the same
mailcal.json. Details below; setup steps on the install page.
CLI or MCP?
Both read the same file at ~/.config/ironbrain/mailcal.json (accounts, calendars, send gate). Which you use depends on how the bot is wired—not on different capabilities.
CLI
ironbrain-mailcal
For scripts, cron, CI, and bots that shell out. Typical use: list mail, fetch messages, query calendars—without a chat client.
MCP
ironbrain-mailcal-mcp
For Cursor and other MCP clients that want tools in chat. Same config and accounts—only the transport is stdio MCP instead of the command line.
Install
You need the .NET 10 SDK. The tools come from nuget.org—no PAT. The install page covers config path, multi-account, the SMTP gate, and smoke commands.
dotnet tool install -g Ironbrain.MailCal.Cli
dotnet tool install -g Ironbrain.MailCal.Mcp
ironbrain-mailcal --versionPart of the Ironbrain toolbox
Questions about MailCal or fitting it into your stack? Get in touch—or follow updates at kern.services.