花开彼岸天

鱼跃此时海

Thunberbird MCP 加持的 Hermes

Thunderbird MCP + Hermes

最近想把Thunderbird接到Hermes里面,主要是为了直接让Hermes帮我搜邮件、看邮件、查日历什么的。之前虽然也能用其他方式处理邮箱,但是总觉得不够顺手, 特别是用imap-mcp 访问阿里云邮箱时,总是有很多限制,既然Thunderbird这边已经有MCP了,那就接上试一下。

这个东西其实不复杂,主要就是两部分:

  1. Thunderbird container;
  2. Hermes里面配置一个HTTP MCP。

基本流程如下。

Thunderbird container

我这里不是单独起一个MCP container,而是在Thunderbird的container里面提供MCP服务。用的是jlesage/thunderbird

现在的配置大概是这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
services:
thunderbird:
container_name: thunderbird
image: jlesage/thunderbird
ports:
- "5800:5800"
- "8765:8765"
environment:
- LANG=zh_CN.UTF-8
- TZ=America/Vancouver
- ENABLE_CJK_FONT=1
- KEEP_APP_RUNNING=1
- WEB_FILE_MANAGER=1
- WEB_FILE_MANAGER_ALLOWED_PATHS="/tmp"
- WEB_TERMINAL=1
volumes:
- ./thunderbird:/config:rw

这里5800是Thunderbird的web界面,8765是MCP的HTTP端口。/config一定要挂载出来,不然container重建以后,Thunderbird里面的配置和扩展就没了。

TZ设置成温哥华,主要是为了邮件和日历时间看起来不要乱。ENABLE_CJK_FONT是中文字体。Web file manager和Web terminal我也开了,不过这个东西只适合放在自己的内网里面,没必要暴露到公网。

Hermes里面添加MCP

Thunderbird MCP的地址是:http://XXX.XXX.XXX.XXX:8765/

认证方式是Bearer token。Hermes会把真正的凭据放到:

~/.hermes/.env

然后在~/.hermes/config.yaml里面保存MCP的基本设置和环境变量引用。逻辑上大概是这样:

1
2
3
4
5
6
7
mcp_servers:
thunderbird:
url: "http://192.168.1.213:8765/"
connect_timeout: 10
headers:
Authorization: "Bearer ${MCP_TOKEN_ENV_VAR}"
enabled: true

这里的环境变量名称让Hermes自己管理就好,不需要自己猜。总之就是:配置放config,密码放.env

5800和8765不要搞混

5800是Web界面,8765才是MCP。

如果只是想让Hermes调用Thunderbird,不需要把5800填到Hermes里面。

配置目录不要删

宿主机的:

/opt/stacks/thunderbird/thunderbird

里面是Thunderbird的配置、账户状态和扩展数据。以后重建container之前,最好先备份一下这个目录。

最后

整体上这次还是比较顺利的。之前觉得Thunderbird MCP可能要折腾半天,结果真正麻烦的地方主要就是container启动顺序和网关重载,其他基本就是一条命令的事情。

现在Hermes可以直接操作Thunderbird了,后面查邮件、整理客户往来、看日历都方便很多。

⬅️ Go back