thunderbird-mcp
让AI助手通过MCP协议直接操控Thunderbird邮件、日历和通讯录的扩展服务器
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让AI助手通过MCP协议直接操控Thunderbird邮件、日历和通讯录的扩展服务器
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:周一早上,你的收件箱堆满了 300 封邮件,其中有 5 封是客户上周发来的紧急需求,12 封是需要及时回复的工作协调邮件。你一边喝着咖啡,一边对着 AI 说:"帮我把上周客户发的所有邮件都标记为重要,并按发件人汇总一份清单"。30 秒后,清单出现在你眼前,客户邮件无一遗漏。
这不是科幻,而是 thunderbird-mcp 正在做的事。
电子邮件是互联网最古老的通信协议之一,大多数邮件客户端(Outlook、Thunderbird)并不提供开放的 API 供外部程序调用。即便是 Mozilla 旗下的开源邮件客户端 Thunderbird,也长期缺乏一个标准化的扩展机制,能够让 AI 助手"读懂"用户的邮件、日历和联系人。
MCP(Model Context Protocol)的出现改变了一切——它就像 AI 世界的 USB-C 接口,让 AI 应用可以标准化地连接各种数据源和工具。thunderbird-mcp 正是这个思路的产物:它将 Thunderbird 的邮件能力通过 MCP 协议暴露出来,使得任何兼容 MCP 的 AI(Claude、GPT、本地模型)都能像人一样操控 Thunderbird。
thunderbird-mcp 通过 Thunderbird WebExtension 嵌入了一个本地 HTTP 服务器(端口 8765),再通过 Node.js 编写的 mcp-bridge.cjs 将 HTTP 协议转换为 MCP 客户端期望的 stdio JSON-RPC 格式。暴露的工具按功能分为以下几类:
邮件读写与搜索:
searchMessages / searchBody — 按关键词、发件人、日期范围搜索邮件,IMAP 账户需要启用离线同步才能搜索正文内容getMessage / getFullMessage — 获取邮件详情,包括 MIME 头部解码和 HTML 转纯文本moveMessage / deleteMessage / toggleMessageTag — 邮件的移动、删除、打标签操作rawSource — 获取邮件原始源码(需离线副本)邮件撰写与转发:
composeMail — 起草新邮件,默认打开 Thunderbird 撰写窗口等待用户审核后发送(skipReview: true 可跳过审核直接发送)replyToMessage / forwardMessage — 回复和转发,同样需要用户确认过滤器自动化:
createFilter / listFilters / updateFilter / deleteFilter — 创建、列出、修改和删除 Thunderbird 邮件过滤器,支持按发件人、主题、正文内容匹配,自动执行移动/删除/标签操作日历与任务:
listCalendars / listEvents / createEvent / updateEvent / deleteEvent — 日历 CRUD 操作,支持循环事件(但操作粒度是整个系列而非单次发生)listTasks / updateTask — 任务待办事项管理通讯录:
listContacts / getContact / createContact / updateContact / deleteContact — 联系人管理thunderbird-mcp 的架构非常清晰,分为四层,每层各司其职:
MCP Client (Claude Desktop等)
↓ stdio JSON-RPC
mcp-bridge.cjs (Node.js CJS)
↓ HTTP POST (localhost:8765)
Thunderbird Extension (WebExtension)
↓ XPCOM / messenger.* APIs
Thunderbird Core (邮件/日历/通讯录引擎)
第一层:Thunderbird WebExtension 扩展。 这是一个签名扩展(Signed Add-on),运行在 Thunderbird 的 chrome 上下文,拥有 XPCOM 权限。它包含两部分:
httpd.sys.mjs:Mozilla 官方嵌入式 HTTP 服务器,运行在 Thunderbird 进程内mcp_server/api.js:核心业务逻辑,定义了全部 36 个 MCP 工具,处理 MCP JSON-RPC 请求并调用 Thunderbird 原生 API第二层:mcp-bridge.cjs。 这个 Node.js 脚本是 MCP 客户端与扩展之间的"翻译官":
connection.json 文件中读取动态分配的端口号(8765-8774)和 Bearer Token多平台连接发现机制。 mcp-bridge.cjs 实现了跨平台(原生安装/Snap/Flatpak/macOS)的 connection.json 文件自动发现,支持通过 THUNDERBIRD_MCP_CONNECTION_FILE 环境变量强制指定路径。
thunderbird-mcp 的安装分为两步:先安装 Thunderbird 扩展(XPI 文件),再配置 Node.js bridge。
安装扩展时,从 GitHub 下载预编译的 dist/thunderbird-mcp.xpi,在 Thunderbird 中通过 Tools > Add-ons > Install from File 加载即可。v0.7.3 之后的版本支持通过 Thunderbird 内置的扩展更新机制自动升级,不再需要手动重复安装。
配置 MCP 客户端(如 Claude Desktop)时,只需在 JSON 配置中加入一条 server 配置,指向 mcp-bridge.cjs 的绝对路径:
{
"mcpServers": {
"thunderbird-mail": {
"command": "node",
"args": ["/path/to/thunderbird-mcp/mcp-bridge.cjs"]
}
}
}
安全设计是本项目的亮点之一。thunderbird-mcp 实现了五层安全防护:HTTP 服务器默认只监听 localhost(非 0.0.0.0);通信使用会话级 Bearer Token 认证(connection.json 文件权限 0600);连接端口动态分配(8765-8774);用户可通过设置页面控制哪些邮件账户对 MCP 可见;可按工具粒度禁用危险操作(如直接发送不审核)。
撰写类工具(composeMail/replyToMessage/forwardMessage)默认强制打开 Thunderbird 撰写窗口,用户必须手动点击发送,AI 无法静默发件——这从根本上防止了 AI 误发邮件的风险。
项目文档坦诚列出了多个已知限制:IMAP 文件夹的 Gloda 索引可能过期,需要手动点击文件夹触发同步;HTML 纯文本邮件转换会丢失原始格式;循环日历事件的操作粒度是整个系列而非单次发生;IMAP 账户的 searchBody 搜索正文需要启用离线同步;rawSource 获取原始源码同样需要离线副本。
thunderbird-mcp 的出现填补了一个重要空白:此前,AI 邮件助手要么是基于云端 API(隐私顾虑),要么是特定厂商封闭实现(不可扩展)。thunderbird-mcp 代表了一种新的可能性——在用户自己的设备上,让开源邮件客户端与开源 AI 模型协同工作,数据完全不离开本地。
从 MCP 生态角度看,thunderbird-mcp 是目前覆盖工具最全面的邮件类 MCP 服务器之一(36个工具),同时也是少数深度集成桌面应用原生地狱(Windows/macOS/Linux 不同沙箱机制)的开源 MCP 实现。随着 MCP 协议的普及,类似 thunderbird-mcp 的本地数据源适配器将成为 AI 时代重要的基础设施组件。