| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Read and search Thunderbird email through a CLI, with optional MCP and configurable action permissions.
This fork adds configurable access rights, plus the correctness and transport fixes listed in Unreleased changes. Reading/searching are always available. Attachment downloads and unsent draft preparation default to enabled; sending and changes to existing mail default to disabled. Copy access.example.json, customize it, and build your own add-on. Run tb access to check what the installed add-on permits. MCP is optional. Deletion and emptying Trash are not implemented and cannot be enabled. Use the move command with a Trash folder ID to move mail to Trash. Upstream signed binaries linked below do not contain this fork's changes.
For one authenticated CLI-only installation, use local setup. It includes the bridge service, private XPI builder, attachments on new drafts and replies, native quotation preservation, sender/recipient selection and draft inspection.
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.
# 1. Install CLI + bridge from npm
npm install -g thunderbird-cli thunderbird-cli-bridge
# 2. Install the signed Thunderbird extension
# Download: https://github.com/vitalio-sh/thunderbird-cli/releases/latest
# Thunderbird → Add-ons → ⚙ → Install Add-on From File… → thunderbird_ai_bridge-*.xpi
# 3. Start the bridge daemon (keep running)
tb-bridge
# 4. Try it
tb health
tb statsFull setup guide (including background service, Docker, troubleshooting): docs/SETUP.md
# How many unread across all accounts?
tb stats
# Find invoices from AWS in the last 30 days
tb search "invoice" --from aws --since 30d --fields id,author,subject,date
# Read a message (token-efficient — headers + text only, max 500 chars)
tb read 89900 --max-body 500
# Reply as draft (never auto-sends)
tb reply 89900 --body "Thanks, I'll review tomorrow"
# Download a PDF attachment
tb attachment-download 11 1.2 --output invoice.pdf
# Bulk archive old newsletters
tb bulk move "account1://INBOX" "account1://Archive" \
--from "newsletter@" --older-than 30Full command reference: docs/COMMANDS.md
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
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/:
# Claude Code
cp -r skills/thunderbird-cli ~/.claude/skills/
# Claude.ai — zip and upload via Settings → Capabilities → Skills
cd skills && zip -r thunderbird-cli.zip thunderbird-cliWithout the skill, the MCP still works. With it, Claude automatically uses the safest defaults and most efficient response shapes.
| 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.
| 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.
| Doc | What's inside |
|---|---|
| docs/SETUP.md | Installation, background service, Docker, troubleshooting |
| docs/COMMANDS.md | Full reference for all 38 CLI commands |
| docs/CLAUDE.md | AI-agent-focused quick reference + security rules |
| skills/thunderbird-cli/SKILL.md | Companion Claude Skill — recipes, safety defaults, token patterns |
| mcp/README.md | Claude Desktop integration guide |
| AGENTS.md | Guide for AI agents editing this codebase |
| SPEC.md | Full technical specification |
| SECURITY.md | Threat model, prompt-injection defenses |
| CONTRIBUTING.md | Dev setup, code style, PR process |
| CHANGELOG.md | Release notes |
Contributions welcome. Please open an issue first to discuss non-trivial changes. See CONTRIBUTING.md for local dev setup and the 80-test suite.
MIT — see LICENSE
| Back | FazBrowse Home | New Git URL |