Thunderbird Cli

io.github.vitalio-shPublished by GitHub account vitalio-shv1.0.2Updated Oct 24, 2026

Give AI agents full read/write email access via Mozilla Thunderbird. Zero credentials.

Overview

AI-generated overview

Lets an AI assistant read, search and write email through a locally running Mozilla Thunderbird, using Thunderbird's existing accounts instead of new IMAP or SM

What you can do
Search and read messages across Thunderbird accounts, with field selection and body truncation to limit tokens. Check account statistics such as unread counts. Compose, reply and forward messages, saved as drafts by default. Manage folders and move messages in bulk, including archiving by sender and age. Download attachments to local files.
When to use it
Useful when you already keep your mail in Thunderbird and want an assistant to triage, search or draft replies without handing over IMAP or SMTP credentials. Suits multi-account inboxes and bulk cleanup of old mail.
Requirements
Runs locally on a desktop with Node.js: the CLI and bridge packages from npm, the signed Thunderbird extension, and Thunderbird 128 or newer. The bridge daemon must be running; TB_BRIDGE_HOST and TB_BRIDGE_PORT point the MCP server at it, defaulting to 127.0.0.1 and port 7700.
Before you install
The server gives read and write access to all mail in the connected Thunderbird accounts, so an assistant can move, archive or delete messages and create drafts. Permanent deletion is described as requiring an explicit confirmation flag, and compose, reply and forward save as drafts rather than sending. Mail content is exposed to the model, which carries prompt-injection risk from message bodies and links. The bridge listens on localhost only.

Installation

In SourceWeft

  1. Open Thunderbird Cli in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

thunderbird-cli

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

[tests] [License: MIT] [Node] [Thunderbird] [MCP]

[thunderbird-cli demo — Claude answering an email-overview question via MCP]

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

bash
# 1. Install CLI + bridge from npmnpm 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 ittb healthtb stats

Full setup guide (including background service, Docker, troubleshooting): docs/SETUP.md

Usage

bash
# How many unread across all accounts?tb stats
# Find invoices from AWS in the last 30 daystb 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 attachmenttb attachment-download 11 1.2 --output invoice.pdf
# Bulk archive old newsletterstb 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):

json
{  "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/:

bash
# Claude Codecp -r skills/thunderbird-cli ~/.claude/skills/
# Claude.ai — zip and upload via Settings → Capabilities → Skillscd 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

[thunderbird-cli architecture — clients → npm entrypoints → bridge daemon → Thunderbird]

ComponentRole
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

ToolCredentialsAI-agent readyCompose / sendMulti-accountRuntime
thunderbird-clistay in Thunderbird✅ CLI + MCP, JSON out✅ draft / open / send✅ any Thunderbird accountNode.js
Raw IMAP libs (imapflow, imaplib)you manage themyou wire it yourselfSMTP, separatemanual per accountvaries
notmuchvia your MUACLI only, text output❌ reader onlyvia configC
mu / mu4evia your MUACLI only, sexp/text❌ reader onlyvia configC
himalayain config files✅ CLI, JSON out✅✅Rust
mutt / neomuttin muttrc❌ interactive TUI✅via configC

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

DocWhat's inside
docs/SETUP.mdInstallation, background service, Docker, troubleshooting
docs/COMMANDS.mdFull reference for all 38 CLI commands
docs/CLAUDE.mdAI-agent-focused quick reference + security rules
skills/thunderbird-cli/SKILL.mdCompanion Claude Skill — recipes, safety defaults, token patterns
mcp/README.mdClaude Desktop integration guide
AGENTS.mdGuide for AI agents editing this codebase
SPEC.mdFull technical specification
SECURITY.mdThreat model, prompt-injection defenses
CONTRIBUTING.mdDev setup, code style, PR process
CHANGELOG.mdRelease notes

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

Source: README.md at commit 465613d

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.2LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts