关于 Baryon — Proton Mail via Bridge
Baryon 是连接 Proton Mail Bridge 与 MCP 客户端的本地服务,供 AI 助手搜索和阅读邮件、处理附件并保存草稿。它限制写入权限,不提供发送、移动或删除普通邮件的功能。
主要功能
- 01按文本、发件人、主题和日期搜索邮件
- 02读取邮件及完整对话
- 03查看、获取并保存附件
- 04创建新邮件、回复和转发草稿
- 05可限制可读取的邮件文件夹
适用场景
- 01查找并总结近期收到的邮件
- 02阅读对话并准备回复草稿
- 03保存邮件中的发票附件
- 04整理支持对话中的未解决问题
MCP 相关
作为本地 MCP 服务,通过 Proton Mail Bridge 访问邮箱,并向 MCP 客户端提供邮件搜索、读取、附件和草稿工具。邮件内容会返回给客户端及其使用的模型。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Baryon MCP
Proton Mail 与你选择的 AI 之间的本地权限受限桥接工具
Baryon 通过本地的 Proton Mail Bridge,将兼容 MCP 的 AI 助手连接到 Proton Mail。
它能让你的助手搜索和阅读邮件、理解对话、处理附件,并为你准备草稿供你审核。Baryon 无法发送邮件、移动或删除普通邮件,也无法将邮件标记为已读。
Baryon 不提供托管服务。你可以决定由哪个 MCP 客户端和 AI 模型接收你的邮件内容。
重要
Baryon 和 Proton Mail Bridge 在本地运行,但你的 AI 未必如此。
通过 Baryon 请求的邮件内容会返回给你的 MCP 客户端,并可能传递给它使用的模型。如果使用本地或自托管模型,具体取决于客户端配置,处理过程可以留在你控制的基础设施上。如果使用托管服务,所选邮件内容会发送给该服务提供商。
例如,使用 Baryon 搭配托管的 Claude 或 Codex 模型时,请求的邮件内容会分别发送到 Anthropic 或 OpenAI 的基础设施。在将客户端连接到邮箱之前,请查看客户端和服务提供商的隐私与数据保留条款。
你可以做什么
- 按文本、发件人、收件人、主题、日期或未读状态查找邮件。
- 阅读邮件或整个对话。
- 检查、获取和保存附件。
- 将新邮件准备为 Proton Mail 草稿。
- 将邮件转发为草稿,并附上其附件和嵌入图片。
- 在 Proton Mail 中自行审核、编辑和发送这些草稿。
例如,你可以这样询问助手:
找出我本月收到的续订通知,并总结价格变化。
阅读我与 Alice 的对话,并准备一份礼貌的后续跟进草稿。
找出 Acme 最新邮件中的 PDF 发票附件,并将其保存在本地。
总结这条支持对话,并起草一份涵盖未解决问题的回复。
实用访问权限,审慎设限
| 功能 | 是否可用 |
|---|---|
| 搜索和阅读邮件 | 是 |
| 阅读完整对话 | 是 |
| 列出和获取附件 | 是 |
| 在本地保存附件 | 是,支持 macOS 和 Linux |
| 创建和替换草稿 | 是 |
| 保存整理后的回复草稿 | 是 |
| 保存附带原邮件附件的转发草稿 | 是 |
| 限制读取范围为选定文件夹 | 可选 |
| 发送邮件 | 否 |
| 移动普通邮件 | 否 |
| 删除普通邮件 | 否 |
| 将邮件标记为已读或更改标记 | 否 |
替换现有草稿时,Baryon 会先保存替代草稿,再移除之前的草稿副本。Baryon 没有用于删除普通已收或已发邮件的工具。
工作原理
Proton Mail
│
▼
Proton Mail Bridge local
│
▼
Baryon local
│
▼
Your MCP client
│
├── Local model can stay on infrastructure you control
│
└── Hosted model content is sent to its provider
Baryon 只与计算机上的 Proton Mail Bridge 通信。它不会将 Bridge 凭据发送到非环回地址,并且默认使用 Bridge 导出的 TLS 证书验证 Bridge。
开始之前
你需要:
- 安装、登录并运行 Proton Mail Bridge。
- 能够通过
stdio启动本地 MCP 服务的 MCP 客户端。 - Bridge 邮箱设置中显示的 IMAP 用户名和生成的密码。
- Bridge 导出的 TLS 证书,以建立经过验证的连接。
请使用 Bridge 生成的密码,而不是你的 Proton 账户常规密码。在 Proton Mail Bridge 中,通过 Settings → Advanced settings → Export TLS certificates 导出 cert.pem。
安装
1. 安装二进制文件
macOS:
brew install --cask combor/tap/baryon-mcp
Windows,使用 Scoop:
scoop bucket add combor https://github.com/combor/scoop-bucket
scoop install combor/baryon-mcp
Nix,从软件包仓库安装:
nix-env -f https://github.com/combor/nur/archive/main.tar.gz -iA baryon-mcp
Arch Linux — 来自 AUR 的 baryon-mcp-bin:
yay -S baryon-mcp-bin
基于 Debian 的 Linux 发行版(amd64 和 arm64):
sudo apt install ./baryon-mcp_*.deb
基于 RPM 的 Linux 发行版(amd64 和 arm64):
sudo rpm --install ./baryon-mcp_*.rpm
其他平台,请从最新版本下载适用于你平台的压缩包,并将 baryon-mcp 解压到 PATH 中。版本发布提供适用于 amd64 和 arm64 的 macOS、Linux、FreeBSD 和 OpenBSD 构建版本,适用于 Windows amd64 的构建版本,以及适用于 Linux amd64 和 arm64 的 DEB 和 RPM 软件包,另附 SHA256SUMS 文件。计算下载文件的哈希值,并与该文件中对应的条目进行比较:
sha256sum baryon-mcp_*.tar.gz # Linux archive
sha256sum baryon-mcp_*.deb # Linux DEB
sha256sum baryon-mcp_*.rpm # Linux RPM
shasum -a 256 baryon-mcp_*.tar.gz # macOS
sha256 baryon-mcp_*.tar.gz # FreeBSD and OpenBSD
Get-FileHash baryon-mcp_*.zip -Algorithm SHA256 # Windows
2. 运行设置程序
baryon-mcp setup
设置程序会固定 Bridge 的 TLS 证书、存储你的 Bridge 凭据,并将 baryon 注册到已安装的 Claude Code 和 Codex CLI。之后,这些 CLI 会直接启动二进制文件——无需包装脚本,也无需在客户端配置文件中保存凭据。Bridge 密码会存入系统密钥环(Linux 上运行 gnome-keyring、KWallet 或 KeePassXC 时使用 Secret Service;macOS 上使用 Login Keychain;Windows 上使用 Credential Manager);如果没有密钥环响应,则存入 ~/.config/baryon-mcp 下权限为 600 的文件中。
在 Linux 上,如果找不到已导出的证书,设置程序会在验证占用该端口的进程是以你的身份运行的 Bridge 可执行文件后,提供固定当前运行中的 Bridge 所用证书的选项,并在询问前显示其指纹。以无头方式安装的 Bridge(protonmail-bridge-core)没有证书导出界面,因此在这种情况下这是预期的操作路径。baryon-mcp setup --help 会列出各项选项,包括 --reset-credentials、--tls-cert 和 --client。
手动配置客户端
baryon-mcp setup 可以配置 Claude Code 和 Codex。对于其他任何 MCP 客户端,请自行将其指向 baryon-mcp 二进制文件。各客户端的配置格式有所不同,但服务条目如下所示:
{
"mcpServers": {
"baryon": {
"command": "/absolute/path/to/baryon-mcp",
"env": {
"PROTON_BRIDGE_USERNAME": "[email protected]",
"PROTON_BRIDGE_PASSWORD": "bridge-generated-password",
"PROTON_BRIDGE_TLS_CERT": "/absolute/path/to/cert.pem"
}
}
}
}
这种基本配置可能会以明文形式存储 Bridge 凭据。建议使用 baryon-mcp setup,让凭据完全不出现在客户端配置中;或者使用客户端的安全密钥存储。此处设置的任何变量都优先于已存储的凭据,因此两者可以混用——客户端条目可以覆盖端点,同时将密码保留在密钥环中。
Proton Pass CLI
如果你将 Bridge 密码保存在 Proton Pass 中,pass-cli run 可以在启动时解析密码,让客户端配置保存引用,而不是密码:
claude mcp add --transport stdio --scope user baryon \
-e [email protected] \
-e "PROTON_BRIDGE_PASSWORD=pass://Personal/Proton Bridge/password" \
-- pass-cli run --no-masking -- /usr/bin/baryon-mcp
pass-cli run 会原样传递 MCP 标准输入输出流,并保留退出代码。--no-masking 很重要:默认情况下,pass-cli 会重写子进程输出中解析出的密钥的任何出现位置;如果某个工具结果的邮箱内容恰好包含 Bridge 密码,就会因此遭到破坏。Proton Pass 会话过期或无法解析引用时,服务器启动前会在标准错误中报告错误,这会显示在客户端的 MCP 日志中。
托管式 AI 客户端
注意
以下安装方式会将 Baryon 连接到托管式 AI 产品。客户端将通过 Baryon 检索到的邮件内容提供给模型时,这些内容会发送给相应的服务提供商。
Claude Desktop
从最新版本下载适用于你平台的 .mcpb 软件包,打开后按提示输入 Bridge 设置。
Claude Code 和 Codex
安装二进制文件并运行 baryon-mcp setup,如上所述。它会注册在 PATH 中找到的两个 CLI;--client claude 或 --client codex 只配置其中一个,已有的 baryon 条目会保持不变,除非指定 --force-client-config。
Linux 上的 Docker
ghcr.io/combor/baryon-mcp 已为 linux/amd64 和 linux/arm64 发布。它旨在让 MCP 目录启动服务并读取其工具架构,也让 Linux 用户能够在容器中运行 Baryon。在 macOS 和 Windows 上,请使用原生二进制文件:Docker Desktop 不会共享 Bridge 监听的主机环回接口。
Baryon 使用 stdio 通信,因此客户端会启动容器,而不是连接端口:
{
"mcpServers": {
"baryon": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--network=host",
"--user", "1000:1000",
"--env-file", "/absolute/path/to/baryon.env",
"-v", "/absolute/path/to/cert.pem:/run/secrets/bridge-cert.pem:ro",
"-v", "/absolute/path/to/attachments:/attachments",
"-e", "PROTON_BRIDGE_TLS_CERT=/run/secrets/bridge-cert.pem",
"-e", "BARYON_ATTACHMENT_ROOTS=/attachments",
"ghcr.io/combor/baryon-mcp:latest"
]
}
}
}
- 必须使用
--network=host。Bridge 监听主机的环回接口,Baryon 不会向任何其他地址发送凭据。 - 将
PROTON_BRIDGE_USERNAME和PROTON_BRIDGE_PASSWORD保存在环境文件中,并在运行时提供。该文件以纯文本保存 Bridge 密码,因此请在仓库之外创建文件,并执行chmod 600。切勿将凭据烘焙进镜像或提交到 Compose 文件中。 - 将
1000:1000替换为你自己的id -u和id -g。绑定挂载会保留主机上的所有权,因此不使用--user时,容器会以 UID 65532 运行,无法读取权限模式为 0600 的证书,也无法写入附件目录。save_attachment创建的文件权限模式为 0600,所有者是容器运行时使用的 UID,因此以你自己的身份运行可确保文件可读。 - 按照上面的示例,将
BARYON_ATTACHMENT_ROOTS指向挂载目录。如果不设置,服务会在容器用户的主目录下创建附件目录,而--user覆盖通常无法写入该目录,因此启动会失败,而不会退回到不受限制的访问模式。 - 任何能够访问 Docker 守护进程的人都可以读取运行中容器的环境变量。在桌面设备上,建议使用通过
baryon-mcp setup配置的原生二进制文件,这样凭据会保存在系统密钥环或权限模式为 600 的文件中。 - 如果两项凭据均未提供,镜像仍会启动并提供工具架构,供目录检查;但随后每次工具调用都会报告缺少配置。只提供一项凭据则会导致启动失败。
安全边界
- Baryon 不会向非环回主机发送 Bridge 凭据。
- 默认情况下,Bridge 的 TLS 证书会被固定。未提供证书时,除非明确启用不安全模式,否则 Baryon 不会启动。
- 读取工具会以只读方式选择邮箱,不会将邮件标记为已读。
save_draft、save_reply_draft和save_forward_draft是仅有的会更改邮箱的工具,且只会在“草稿”文件夹内操作。没有发送、移动、常规删除或更改标记的工具。save_attachment是唯一会写入本地磁盘的工具。它绝不会覆盖已有文件,也不会创建缺失的父目录。- 默认情况下,本地附件的读写仅限于受管理的文件夹;也可通过
BARYON_ATTACHMENT_ROOTS指定目录。 - 可通过
BARYON_ALLOWED_FOLDERS将读取范围限制为允许列表中的文件夹。若文件夹不在列表中,系统会在打开邮箱前拒绝请求,且该文件夹不会出现在list_folders中。 - 回复只能从
BARYON_SENDER_IDENTITIES中的地址发送,且绝不会包含原始邮件的 Bcc 收件人。 - 返回邮件内容时,都会标记为
content_trust: "untrusted_email",并使用不可猜测的分隔符括起来,以供仅读取文本块的客户端使用。 - MCP 客户端可以访问你请求的邮件内容和附件。请仅连接你信任的客户端和模型。
进阶参考
可用的 MCP 工具
| 工具 | 描述 | |---|---| | `list_folders` | 列出此服务可读取的邮箱文件夹 | | `list_emails` | 列出文件夹中的邮件,按时间从新到旧排序,支持游标分页,并可选择返回缩短后的邮件正文 | | `search_emails` | 按文本、发件人、收件人、主题、日期或未读状态搜索,并可选择返回缩短后的邮件正文 | | `get_email` | 读取元数据、Sender/Reply-To/Bcc 地址、纯文本/HTML 正文和附件元数据 | | `get_thread` | 从其中一封邮件读取整段对话,按时间从旧到新排序,并可选择返回缩短后的邮件正文 | | `list_attachments` | 列出附件元数据,不下载内容 | | `get_attachment` | 将一个附件提取到对话中,解码后最大为 25 MB | | `save_attachment` | 将一个附件写入本地文件,并仅返回其路径 | | `list_sender_identities` | 列出草稿可使用的发件地址 | | `save_draft` | 创建或替换草稿,支持文本、HTML、密送收件人,以及来自 base64 或本地文件路径的附件 | | `save_reply_draft` | 将对一封邮件的回复保存为新草稿,自动生成收件人、主题和线程标头,并可选择引用原邮件 | | `save_forward_draft` | 将一封邮件的转发保存为新草稿,保留其全部文本、HTML、附件和内嵌图片 |配置选项
| 环境变量 | 默认值 | 描述 |
|---|---|---|
PROTON_BRIDGE_USERNAME | — | 必填的 Bridge IMAP 用户名 |
PROTON_BRIDGE_PASSWORD | — | 必填的 Bridge 生成的密码 |
PROTON_BRIDGE_HOST | 127.0.0.1 | Bridge 主机;仅限环回地址 |
PROTON_BRIDGE_IMAP_PORT | 1143 | Bridge IMAP 端口 |
PROTON_BRIDGE_IMAP_SECURITY | starttls | starttls 或 tls |
PROTON_BRIDGE_TLS_CERT | 自动检测 | Bridge 导出的证书路径 |
PROTON_BRIDGE_ALLOW_INSECURE | false | 禁用证书验证;请参阅下方警告 |
BARYON_ATTACHMENT_ROOTS | ${XDG_CONFIG_HOME:-~/.config}/baryon-mcp/attachments | 由路径列表分隔的目录;save_draft 可从中读取,save_attachment 可写入 |
BARYON_SENDER_IDENTITIES | Bridge 用户名 | 以逗号分隔的 RFC 5322 地址,草稿可从这些地址发送;第一个为默认地址 |
BARYON_ALLOWED_FOLDERS | 所有文件夹 | 一行 CSV 格式的文件夹名称,限制读取工具可访问的范围;包含逗号的名称需加引号 |
BARYON_ALLOW_UNCONFIGURED_INTROSPECTION | false | 无需任何凭据即可提供工具架构;由容器镜像设置 |
Baryon 启动时会以 0700 权限创建默认附件目录,如果无法创建则拒绝启动。设置 BARYON_ATTACHMENT_ROOTS 会完全替换该默认值——这些目录必须已存在。在 Windows 上不会创建附件目录,因为两个涉及文件操作的工具都拒绝在该平台运行。
BARYON_ALLOWED_FOLDERS 中的名称必须与 Bridge 的拼写完全一致,但 INBOX 除外,它不区分大小写。保存草稿不受此范围限制,因此即使 Drafts 不在列表中,仍可保存回复。
如果没有显式指定或自动发现证书,除非设置 PROTON_BRIDGE_ALLOW_INSECURE=true,否则 Baryon 会拒绝启动。不安全模式会允许其他本地进程冒充 Bridge 并窃取其生成的密码。
BARYON_ALLOW_UNCONFIGURED_INTROSPECTION=true 仅在两个凭据均缺失时生效;这样,已发布的镜像就可以在没有邮箱的情况下启动并接受检查。此时所有工具调用都会因配置错误而失败;如果只设置了一个凭据、另一个缺失,服务仍会拒绝启动。
已存储的凭据和 `baryon-mcp setup`
baryon-mcp setup 会存储凭据;服务器在相应环境变量未设置时加载这些凭据。只要设置了环境变量,就始终以环境变量为准。${XDG_CONFIG_HOME:-~/.config}/baryon-mcp 下的目录结构(权限为 0700):
密钥环条目存储在服务 baryon-mcp-proton-bridge 下,用户名为 Bridge 地址,因此密钥环浏览器会将其显示为 Password for '[email protected]' on 'baryon-mcp-proton-bridge',并且
secret-tool lookup service baryon-mcp-proton-bridge username [email protected]
会检索该条目。每次设置运行后只会保留一种密码存储方式:保存到密钥环会删除文件,回退到文件则会删除密钥环条目。若密钥环不再响应,或锁定时间超过 10 秒,它会被视为“没有已存储的凭据”,而不会报错,因此容器和无头机器也能正常工作。
读取邮件和附件
读取邮件:
- 调用
list_folders。 - 调用
list_emails或search_emails。 - 将返回的
folder、uid和uidvalidity传给get_email或附件工具。
每条摘要都包含邮件的 message_id,可用于关联不同文件夹中的同一封邮件——All Mail 中的副本与 INBOX 中的副本共享该 ID,但它们的 UID 不同。
list_emails 和 search_emails 接受 include_bodies,启用后会在当前页面的每条摘要中附加缩短后的正文。这样,分类处理只需调用一次——例如“我的未读邮件中哪些需要关注”,而不必为每封邮件分别调用一次 get_email;如果预览显示邮件值得关注,也只需再调用一次 get_email 即可获取完整邮件。若邮件包含纯文本部分,则正文取自该部分;否则取自 HTML 部分,并转换为读者实际可见的文本,同时通过 body_from_html 标记来源。缩短正文前会先去除标记,因此字符数预算用于可读文本,而非标记;若正文被截断,则会标记 body_truncated。get_email 仍会返回原样发送的两个部分,包括 HTML。由于正文远大于邮件信封,包含正文的页面最多只能有 10 封邮件:若 limit 大于此值,调用会被拒绝,而不会静默缩减;若省略 limit,则默认值为 10。预览与其他读取操作一样采用窥视方式,因此分类处理未读邮件不会将其标记为已读。
获取下一页时,将返回的 next_before_uid 作为 before_uid 传回,并同时传入 uidvalidity。这样,两次调用之间到达的邮件不会导致结果偏移或重复,这是普通的 offset 分页无法保证的。offset 仍可使用,但不能与 before_uid 同时使用;若邮箱的 uidvalidity 已更改,调用会失败,而不会继续分页。
附件有两种返回方式。get_attachment 会直接返回字节内容——图片以图片内容返回,其他文件以 base64 返回——因此会将其放入对话中。save_attachment 会将解码后的字节写入路径,只返回该路径,因此大型附件不会进入模型上下文。
output_path 可以是相对路径,此时会在附件目录内解析;也可以是位于附件目录内的绝对路径。父目录必须已存在,目标文件不得已存在。两个附件工具处理的解码后文件大小均不超过 25 MB,因此 save_attachment 省去的是上下文开销,而不是获取大小上限。
回复
save_reply_draft 用于回复一封邮件。传入读取邮件时使用的 folder、uid 和 uidvalidity,以及正文;其他内容均根据邮件自动生成:
只有在设置 quote_original 时才会引用原邮件。此时,原邮件会完整复制到你的正文下方,并附上 "On , wrote:" 行;纯文本中每行前缀为 > ,HTML 中则使用 <blockquote>,同时包含其 HTML 中以内嵌方式显示的图片。其他附件不会复制。响应会回显所有派生字段,因此你可以在从 Proton Mail 发送草稿前检查收件人。save_reply_draft 只会创建草稿;替换草稿仍应使用 save_draft。
转发
save_forward_draft 用于转发一封邮件。传入读取邮件时使用的 folder、uid 和 uidvalidity,以及收件人;还可以选择在 text_body 或 html_body 中添加备注。Baryon 会自行读取原邮件并撰写草稿,因此邮件及其附件不会经过对话,也不会接触本地磁盘:
- 正文由你的备注、一个列出原邮件 From、Date、Subject、To 和 Cc 的
---------- Forwarded message ----------区块,以及完整复制的原邮件纯文本和 HTML 组成。纯文本原邮件配上纯文本备注转发时,仍会保持纯文本格式。 - 附件会全部随邮件转发。原邮件 HTML 中通过
cid:链接显示的图片会保持内嵌;其他内容则作为普通附件。 - 主题会保留已有的
Fwd:或Fw:前缀(不区分大小写),否则会添加Fwd:。 from的选择方式与回复相同。收件人可以省略,并可在发送前于 Proton Mail 中添加。
草稿不会包含 In-Reply-To 或 References,因此对收件人来说会开启新的会话。如果原邮件正文超过 2 MiB,或附件超过 100 个文件或 25 MB,系统会拒绝处理,而不会截断内容。warning 会报告无法准确解码的文本,以及编码已损坏的附件;这类附件只会保留可读取的内容。
关于转发以及引用原邮件的回复,需注意以下事项:
- 草稿超过 50,000 个字符时,无法通过
save_draft忠实替换,因为该工具读取草稿时会截断内容,且替换后会丢失内嵌图片。请改在 Proton Mail 中编辑此类草稿。 - 如果草稿包含 HTML 正文,Proton Mail 会保留该正文;Bridge 不会告知 Proton Mail 草稿转发的是哪封邮件,因此原邮件不会被标记为已转发。
- 嵌套附件容器会变成单独的文件;没有文件名的附件会获得自动生成的名称,例如
part-1.2.png。附件会保留其 Content-Type 参数,例如日历邀请的 method;但 charset 为 UTF-8 以外的情况除外:此类文本文件会保留字节内容,但会丢失 charset 标签。 - 原邮件的 HTML 会按发送时的内容嵌入,包括
<head>中的样式。
创建和替换草稿
创建草稿时,省略 uid 和 uidvalidity。替换现有草稿时,传入这两个值,并提交完整的目标状态。请先用 get_email 读取当前草稿,并获取所有附件,以便保留收件人、正文和文件。
每个附件必须且只能通过以下两种方式之一提供内容:
content_base64:内联字节,并且必须提供filename和content_type。content_path:指向运行 Baryon 的机器上的常规文件的路径,相对于附件目录,或是位于该目录内的绝对路径。filename默认为路径的基本名称,content_type根据扩展名推断。
所有附件都会在任何内容触及邮箱之前读取并验证,因此文件缺失或无法读取时,调用会失败,且不会创建或替换草稿。
save_reply_draft 会自动为你处理回复的线程关联。若要手动关联线程,请先用 get_email 读取要回复的邮件,然后将其 message_id 作为 in_reply_to 传入,并将其 references 后接同一个 message_id 作为 references 传入。如果父邮件没有报告 references,则按照 RFC 5322 第 3.6.4 节的规定,改用其 in_reply_to。
邮件标识符可以省略尖括号,但每个标识符都必须是格式正确的 id-left@id-right。Baryon 会拒绝任何无法读取回来的内容,并去除 Bridge 添加到 References 中的自引用,因此可以原样引用它报告的链。
替换草稿会获得新的 UID。Baryon 会先追加替换草稿,再移除之前的草稿;如果未能完成清理,则会返回警告。替换草稿会保留之前草稿的 Message-ID,以及本次调用中省略的 In-Reply-To 和 References 字段。省略其中一个字段会保留现有标头;传入空数组则会移除该字段,并使草稿脱离其线程。
限制和平台说明
读取限制:
get_email返回的纯文本和 HTML 正文各限 50,000 个字符。get_thread和列表工具中的缩短正文各限 2,000 个字符,按去除标记后的长度计算。- 调用
list_emails或search_emails并设置include_bodies时,每页 10 封邮件;不设置时为 100 封。 get_thread每个对话最多返回 50 封邮件,并保留最新的邮件。
草稿限制:
- 你撰写的纯文本和 HTML 正文各限 50,000 个字符。转发或引用的原始内容会完整保留,每种正文最多 2 MiB。
- 常规附件最多 100 个。
in_reply_to和references中的邮件标识符各最多 100 个,每个标识符最多 512 字节。从邮件中读取的更长链会截取最新的标识符。- 所有附件的解码后总大小最多 25 MB,涵盖两种内容来源。
- 生成的 RFC822/MIME 邮件须小于 70 MiB。
- 内联内容使用标准 base64。
save_draft无法添加内联 CID 图片;转发邮件和引用回复会保留原邮件中的图片。 - 附加的邮件(
message/rfc822和其他message/类型)会按 MIME 要求以未编码形式传输。如果邮件不符合 CRLF 格式、某行超过 998 字节或包含 NUL 字节,则会改为作为通用application/octet-stream文件附加,从而精确保留其字节及基于这些字节的任何签名。此规则同样适用于save_draft和转发。 - Windows 上无法使用
content_path和save_attachment。请改用content_base64和get_attachment。
Baryon 支持 MCP 2026-07-28,并会协商降至更早的修订版本,最低至 2024-11-05,因此较旧的客户端仍可正常工作。
本地文件保护详解
使用 content_path 的草稿工具会以服务的权限读取本地文件。解析符号链接后,它们只接受常规文件。save_attachment 不会覆盖文件,也不会创建目录。所有读取工具(包括 get_attachment)均标注为只读。
服务器启动时会根据身份锁定附件根目录。之后替换某个根目录(例如,将其重命名并在原位置放置符号链接)不会改变边界。如果所有根目录都无法访问,这两个工具都会拒绝所有路径,而不会退回到不受限制的访问模式。
**从不包含受管理目录的旧版本升级:**如果未设置 BARYON_ATTACHMENT_ROOTS,content_path 和 output_path 过去可以接受服务器账户能够访问的任意绝对路径。现在,它们仅限于受管理的目录。若要继续使用其他位置,请显式设置 BARYON_ATTACHMENT_ROOTS;上面的 Docker 示例已设置该变量,因此容器用户不受影响。
开发
从源代码构建需要 Go 1.27.2 或更高版本。
make build # build ./baryon-mcp
make test # formatting, shell script checks, vet, and race-enabled tests
make snapshot # local GoReleaser build and MCPB packaging into dist/
make snapshot 还需要 GoReleaser、jq 和 npx。
发布工作流会使用已发布 MCPB 包中的校验和填充 server.json 模板,然后将其发布到 MCP Registry。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。