雷鸟MCP服务器
MCP(模型上下文协议)服务器,允许AI代理访问Thunderbird电子邮件、联系人和日历。适用于任何兼容MCP的客户端——Claude、OpenClaw或自定义集成。
建筑
MCP Client (stdio JSON-RPC 2.0)
↓
mcp-bridge.cjs (Node.js) ← reads ~/.thunderbird-mcp-token
↓ HTTP POST localhost:8765 (Bearer token auth + Host validation)
Thunderbird Extension
↓ Thunderbird APIs
Email / Contacts / Calendars先决条件
- 雷鸟 102+
- Node.js 18+
- 压缩文件 命令(用于构建扩展)
设置
1.构建扩展
./scripts/build.sh创建 dist/thunderbird-mcp.xpi.
2.安装到Thunderbird
./scripts/install.sh自动检测您的Thunderbird配置文件并复制扩展。安装后重新启动Thunderbird。
替代方案(手动安装): 打开雷鸟→ 工具→ 附加组件和主题→ 齿轮图标→ 从文件安装附加组件→ 选择 dist/thunderbird-mcp.xpi.
3.验证
检查Thunderbird控制台(工具→ 开发者工具→ 错误控制台)用于:
Thunderbird MCP server listening on port 87654.配置您的MCP客户端
添加到MCP客户端配置中:
{
"mcpServers": {
"thunderbird": {
"command": "node",
"args": ["/path/to/thunderbird-mcp/mcp-bridge.cjs"]
}
}
}5.测试
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node mcp-bridge.cjs应归还所有10个工具。
工具
list帐户
列出所有已配置的电子邮件帐户及其身份。
{ "name": "listAccounts", "arguments": {} }search消息
使用过滤功能搜索邮件标题。适用于按发件人、主题、日期范围查找电子邮件。
{
"name": "searchMessages",
"arguments": {
"query": "invoice",
"startDate": "2025-01-01",
"endDate": "2025-12-31",
"maxResults": 20,
"sortOrder": "desc"
}
}fullTextSearch
使用Thunderbird的Gloda索引在消息正文中进行全文搜索。身体内容更快。
{ "name": "fullTextSearch", "arguments": { "query": "project deadline" } }getMessage
按ID和文件夹路径(从搜索结果中)读取完整的电子邮件内容。
{
"name": "getMessage",
"arguments": {
"messageId": "abc123@example.com",
"folderPath": "mailbox://user@imap.example.com/INBOX"
}
}发送邮件
在发送之前,打开一个撰写窗口供用户审阅。界面与 composeMail.
{
"name": "sendMail",
"arguments": {
"to": "recipient@example.com",
"subject": "Hello",
"body": "Message body here",
"cc": "cc@example.com",
"bcc": "bcc@example.com"
}
}合成邮件
在发送之前,打开一个撰写窗口供用户审阅。
{
"name": "composeMail",
"arguments": {
"to": "recipient@example.com",
"subject": "Draft for review",
"body": "Please review before sending"
}
}replyToMessage
用引用的原始和正确的线程回复消息。
{
"name": "replyToMessage",
"arguments": {
"messageId": "abc123@example.com",
"folderPath": "mailbox://user@imap.example.com/INBOX",
"body": "Thanks for your message!",
"replyAll": true
}
}转发消息
转发保留原始附件的邮件。
{
"name": "forwardMessage",
"arguments": {
"messageId": "abc123@example.com",
"folderPath": "mailbox://user@imap.example.com/INBOX",
"to": "forward-to@example.com",
"body": "FYI - see below"
}
}搜索联系人
在所有通讯簿中按姓名或电子邮件搜索联系人。
{ "name": "searchContacts", "arguments": { "query": "john" } }list日历
列出所有已配置的日历。
{ "name": "listCalendars", "arguments": {} }安全
- 承载令牌身份验证:启动时,扩展生成一个随机的64个字符的十六进制令牌并将其写入
~/.thunderbird-mcp-token(模式0600)。所有HTTP请求都必须包含Authorization: Bearer头球网桥在每次请求时自动读取此文件。 - DNS重新绑定保护:HTTP服务器验证
Hostheader,只接受来自的请求localhost,127.0.0.1,或[::1].具有任何其他Host标头的请求都会收到403 Forbidden回应。 - 无自动发送:两者都有
sendMail和composeMail打开一个撰写窗口供用户审阅。未经用户确认,绝不会发送电子邮件。
已知限制
- IMAP文件夹可能已过时:Thunderbird并不总是在后台同步IMAP文件夹。单击UI中的文件夹以强制同步,否则扩展程序将尝试
updateFolder()作为最大的努力。 - 编写窗口工具 (
sendMail,composeMail,replyToMessage,forwardMessage)打开一个窗口——用户必须手动单击“发送”。 - 端口8765 是硬编码的。如果其他服务使用此端口,则扩展将不会启动。
故障排除
| 问题 | 解决方案 |
|---|---|
| 来自网桥的“连接失败” | Thunderbird未运行或未加载扩展 |
| 扩展未出现 | 检查Thunderbird配置中是否启用了实验API |
| “端口8765正在使用中” | 另一个服务正在使用该端口;停止或修改 MCP_PORT 在 server/api.js |
| 搜索未返回任何结果 | Gloda索引可能尚未构建——请等待Thunderbird为您的邮件建立索引 |
| 表情符号/unicode乱码 | 确保Thunderbird和Node.js都使用UTF-8 |
OpenClaw集成
将其与OpenClaw结合使用?有两个指南可供选择:
- OPENCLAW-SETUP.md --快速设置:安装扩展,配置MCPorter,将其连接起来
- OPENCLAW-AGENT-GUIDE.md --完整的代理构建:工作区布局、AGENTS.md、SOUL.md、USER.md、openclaw.json配置、示例对话和故障排除
学分
通过结合以下方法构建:
- TKasperczyk/雷鸟mcp --丰富的工具实现
- bb1/雷鸟mcp --干净的模块化架构+Gloda搜索
许可证
麻省理工学院
