thunderbird-cli
Give Claude (and other AI agents) full access to your email through Mozilla Thunderbird.

Why
IMAP libraries force you to manage credentials, OAuth flows, and sync state β dangerous in an AI-agent context. Thunderbird already solves all of that. This tool treats Thunderbird as the source of truth and exposes every capability as a CLI command or MCP tool, so AI agents can read, search, and write email without ever touching a password.
Tested at scale: 22 accounts, 249,000+ messages, 86,000+ unread β all managed live through a single CLI.
Features
- π Zero credential exposure β all IMAP/SMTP stays in Thunderbird
- π€ Claude Desktop ready β 12 MCP tools, one-line config
- π¨ 38 CLI commands β read, search, compose, reply, bulk ops, folder CRUD, attachments
- π‘οΈ Safe by default β compose/reply/forward save as drafts; permanent delete requires
--confirm
- π― Token-optimized β
--fields selection, --compact mode, --max-body truncation
- π Localhost-only β no cloud, no telemetry, nothing leaves your machine
- β
Thunderbird 128+ β signed and approved on addons.thunderbird.net
- π§ͺ 80 tests β 46 CLI/bridge + 34 MCP integration tests
Quick Start
npm install -g thunderbird-cli thunderbird-cli-bridge
tb-bridge
tb health
tb stats
Full setup guide (including background service, Docker, troubleshooting): docs/SETUP.md
Usage
tb stats
tb search "invoice" --from aws --since 30d --fields id,author,subject,date
tb read 89900 --max-body 500
tb reply 89900 --body "Thanks, I'll review tomorrow"
tb attachment-download 11 1.2 --output invoice.pdf
tb bulk move "account1://INBOX" "account1://Archive" \
--from "newsletter@" --older-than 30
Full command reference: docs/COMMANDS.md
Use with Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"thunderbird": {
"command": "npx",
"args": ["-y", "thunderbird-cli-mcp"]
}
}
}
Restart Claude Desktop. Now ask:
"How many unread emails do I have?"
"Find invoices from AWS last month"
"Reply to message 118 saying I'll attend β save as draft"
"Download the PDF attachment from message 245"
Full MCP guide: mcp/README.md
Companion skill for Claude
A Claude Skill ships alongside the MCP server. It teaches Claude how to use the 12 email tools well β token-efficient field selection, draft-by-default safety, trust-metadata checking before acting on links, recipes for common workflows. Install it from skills/thunderbird-cli/:
cp -r skills/thunderbird-cli ~/.claude/skills/
cd skills && zip -r thunderbird-cli.zip thunderbird-cli
Without the skill, the MCP still works. With it, Claude automatically uses the safest defaults and most efficient response shapes.
How It Works
| Component | Role |
|---|
Extension (extension/) | Thunderbird WebExtension. Calls messenger.* APIs. 43 route handlers. |
Bridge (bridge/) | Stateless HTTPβWebSocket proxy daemon. No business logic. |
CLI (cli/) | tb command β 38 commands. Thin HTTP client. JSON output. |
MCP (mcp/) | tb-mcp server β 12 curated tools for Claude Desktop. |
Thunderbird is the source of truth. The CLI never caches or stores email data.
How this compares
| Tool | Credentials | AI-agent ready | Compose / send | Multi-account | Runtime |
|---|
| thunderbird-cli | stay in Thunderbird | β
CLI + MCP, JSON out | β
draft / open / send | β
any Thunderbird account | Node.js |
| Raw IMAP libs (imapflow, imaplib) | you manage them | you wire it yourself | SMTP, separate | manual per account | varies |
| notmuch | via your MUA | CLI only, text output | β reader only | via config | C |
| mu / mu4e | via your MUA | CLI only, sexp/text | β reader only | via config | C |
| himalaya | in config files | β
CLI, JSON out | β
| β
| Rust |
| mutt / neomutt | in muttrc | β interactive TUI | β
| via config | C |
The niche: you already trust Thunderbird with your credentials and account state. This tool surfaces that as a machine-readable API without asking you to re-configure IMAP/SMTP anywhere else.
Documentation
Contributing
Contributions welcome. Please open an issue first to discuss non-trivial changes. See CONTRIBUTING.md for local dev setup and the 80-test suite.
License
MIT β see LICENSE