Thunderbird Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Thunderbird Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Centralizes Thunderbird email operations as MCP tools: read, send, draft, search, attachments.
| Aspect | State |
|---|---|
| Core development | Complete |
| Unit tests | 5/5 PASS |
| Deployment | Active (opencode MCP) |
| Agent integration | communication-drafter (draft-only) |
| Tool | Description | Agent access |
|---|---|---|
tb_list_folders | List available Thunderbird mail folders | ✅ read |
tb_read_messages | Read messages from a folder with pagination | ✅ read |
tb_search_messages | Search messages by keyword | ✅ read |
tb_download_attachments | Download attachments from a message | ✅ read |
tb_draft_message | Create a draft email in Thunderbird | ✅ write |
tb_send_message | Send email via Thunderbird compose command | ❌ forbidden |
Environment variables:
THUNDERBIRD_PROFILE_DIR — Thunderbird profile directory (default: ~/.thunderbird)THUNDERBIRD_MAIL_DIR — Local mail data directory (default: ~/Downloads/thunderbird.tmp)THUNDERBIRD_SEND_COMMAND — Command to invoke Thunderbird (default: thunderbird)THUNDERBIRD_DEFAULT_ACCOUNT — Default account identifier (optional)THUNDERBIRD_DRAFT_FOLDER — Drafts folder name (default: Drafts)Due to PEP 668 restrictions, use PYTHONPATH approach:
export PYTHONPATH=src
python3 -m thunderbird_mcp_serverOr use the provided wrapper:
bash run.shDevelopment:
.venv/bin/pip install -e ".[dev]"bash run.sh
# or directly with PYTHONPATH:
PYTHONPATH=src python3 -m thunderbird_mcp_serverPYTHONPATH=src .venv/bin/pytest tests/ -vTest coverage:
test_list_folders — discovers mbox folders from temp mail dirtest_read_messages — parses mbox with verified subject/body extractiontest_search_messages — keyword search across folderstest_list_folders_uses_unique_relative_names — multi-account path deduptest_modified_utf7_folder_name_decoding — IMAP modified UTF-7 decoding (e.g. Chinese folder names)Registered in .opencode/opencode.json:
{
"mcp": {
"thunderbird-mcp-server": {
"type": "local",
"command": ["bash", "/home/gw/opt/thunderbird-mcp-server/run.sh"],
"enabled": true,
"environment": {
"THUNDERBIRD_PROFILE_DIR": "/home/gw/snap/thunderbird/common/.thunderbird/34p30y9x.default",
"THUNDERBIRD_MAIL_DIR": "/home/gw/snap/thunderbird/common/.thunderbird/34p30y9x.default/ImapMail",
"THUNDERBIRD_SEND_COMMAND": "/snap/bin/thunderbird"
}
}
}
}Agent integration: communication-drafter is the sole authorized agent, granted read/search/draft tools only. tb_send_message is forbidden at the static check level (scripts/check_agent_tool_budget.py). Sending remains a manual user action.
config.py — ThunderbirdConfig dataclass, reads from env varsclient.py — ThunderbirdClient: reads mbox folders, parses messages, sends via CLIserver.py — MCP Server with 6 tool definitions and stdio transporttools/ — Shared tool parameter schemaslimit and offset for pagination, or target smaller subfolders..msf indexes return placeholder messages.tb_send_message opens the Thunderbird compose window; it is not fully automated. This tool is explicitly denied to all agents — sending is a manual user action.[MSF index only — no message data] placeholder.pip install -e . is blocked; use PYTHONPATH=src approach.scripts/check_agent_tool_budget.py prevents any agent from being granted this tool.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.