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 クライアントに返され、そのクライアントが使用するモデルに渡されることがあります。ローカルモデルまたはセルフホスト型モデルを使用する場合、クライアントの設定によっては、ご自身が管理するインフラストラクチャ内で処理を完結できます。ホスト型サービスを使用する場合、選択したメールの内容がそのプロバイダーに送信されます。
たとえば、ホスト型の Claude または Codex モデルで Baryon を使用すると、要求したメールの内容はそれぞれ 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 の認証情報をループバックアドレス以外に送信することを拒否し、既定ではエクスポートされた TLS 証明書を使って Bridge を検証します。
開始する前に
以下が必要です。
- Proton Mail Bridge がインストールされ、サインイン済みで、実行されていること。
stdio経由でローカル MCP サーバーを起動できる MCP クライアント。- Bridge のメールボックス設定に表示される IMAP ユーザー名と生成されたパスワード。
- 接続を検証するための、Bridge からエクスポートした TLS 証明書。
通常の Proton アカウントのパスワードではなく、Bridge が生成したパスワードを使用してください。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 の認証情報を保存し、インストール済みの Claude Code と Codex の CLI に baryon を登録します。これらの CLI はバイナリを直接起動するため、ラッパースクリプトやクライアント設定ファイルへの認証情報の記載は不要です。Bridge のパスワードはシステムのキーリング(Linux では gnome-keyring、KWallet、KeePassXC のいずれかが実行中の場合は Secret Service、macOS では Login Keychain、Windows では Credential Manager)に保存されます。キーリングから応答がない場合は、~/.config/baryon-mcp 配下のアクセス権限が 600 に設定されたファイルに保存されます。
Linux でエクスポートされた証明書が見つからない場合、セットアップでは、procfs を通じてポートを所有するプロセスが、ユーザーと同じユーザー権限で実行されている Bridge 実行ファイルであることを確認したうえで、実行中の Bridge が提示している証明書を固定するかどうかを尋ねます。確認を求める前に、その証明書のフィンガープリントが表示されます。ヘッドレス環境にインストールされた Bridge(protonmail-bridge-core)には証明書をエクスポートする UI がないため、ここでの手順が想定された方法です。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 の stdio ストリームを変更せずに通過させ、終了コードも保持します。--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は env ファイルに保存し、実行時に指定してください。このファイルには Bridge のパスワードが平文で保存されるため、リポジトリの外に作成し、chmod 600を実行してください。認証情報をイメージに埋め込んだり、Compose ファイルにコミットしたりしないでください。1000:1000は、ご自身のid -uとid -gの値に置き換えてください。バインドマウントではホスト側の所有権が維持されるため、--userを指定しないと、コンテナは UID 65532 で実行され、モード 0600 の証明書を読み取れず、添付ファイル用ディレクトリにも書き込めません。save_attachmentはコンテナの実行 UID が所有するモード 0600 のファイルを作成するため、自分の UID で実行すれば読み取り可能な状態を保てます。BARYON_ATTACHMENT_ROOTSは、上記のようにマウントしたディレクトリを指すようにしてください。指定しない場合、サーバーはコンテナユーザーのホームディレクトリに添付ファイル用ディレクトリを作成します。通常、--userによる上書きではこのディレクトリに書き込めず、制限のないアクセスにフォールバックせずに起動が失敗します。- Docker デーモンにアクセスできる人は、実行中のコンテナの環境変数を読み取れます。デスクトップでは、認証情報をシステムのキーチェーンまたはモード 600 のファイルに保存する
baryon-mcp setupで設定したネイティブバイナリを優先してください。 - 両方の認証情報がない場合でも、イメージは起動してツールスキーマを提供するため、ディレクトリから確認できます。ただし、その後のすべてのツール呼び出しで設定がないことが報告されます。認証情報を片方だけ指定すると、起動時に失敗します。
セキュリティ境界
- Baryon は、ループバック以外のホストへの Bridge 認証情報の送信を拒否します。
- Bridge の TLS 証明書は、デフォルトでピン留めされています。証明書がない場合、明示的に非セキュアモードを有効にしない限り、Baryon は起動を拒否します。
- 読み取りツールはメールボックスを読み取り専用で選択し、メッセージを既読にしません。
- メールボックスを変更するツールは
save_draft、save_reply_draft、save_forward_draftのみで、変更は Drafts 内に限られます。送信、移動、一般的な削除、フラグ変更を行うツールはありません。 - ローカルディスクに書き込むツールは
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` | メタデータ、送信者/返信先/Bcc アドレス、プレーンテキスト/HTML 本文、添付ファイルのメタデータを読み取ります | | `get_thread` | いずれかのメッセージから会話全体を古い順に読み取ります。必要に応じて本文を短縮できます | | `list_attachments` | ダウンロードせずに添付ファイルのメタデータを一覧表示します | | `get_attachment` | デコード後最大 25 MB の添付ファイルを会話に取り込みます | | `save_attachment` | 添付ファイルをローカルファイルに書き込み、そのパスのみを返します | | `list_sender_identities` | 下書きの送信元として使用できるアドレスを一覧表示します | | `save_draft` | テキスト、HTML、Bcc の受信者、Base64 またはローカルファイルパスによる添付ファイルを指定して、下書きを作成または置き換えます | | `save_reply_draft` | 1 件のメッセージへの返信を新しい下書きとして保存します。受信者、件名、スレッド化ヘッダーを自動設定し、必要に応じて元のメッセージを引用します | | `save_forward_draft` | 1 件のメッセージの転送を新しい下書きとして保存します。本文全体、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 の 1 行で指定します。カンマを含む名前は引用符で囲んでください |
BARYON_ALLOW_UNCONFIGURED_INTROSPECTION | false | 認証情報がまったくなくてもツールスキーマを提供します。コンテナーイメージによって設定されます |
Baryon は起動時に、デフォルトの添付ファイルディレクトリをモード 0700 で作成し、作成できない場合は起動を拒否します。BARYON_ATTACHMENT_ROOTS を設定するとデフォルトは完全に置き換えられるため、指定したディレクトリはあらかじめ存在している必要があります。Windows では、ファイルを扱う 2 つのツールがどちらも実行を拒否するため、添付ファイルディレクトリはありません。
BARYON_ALLOWED_FOLDERS の名前は、INBOX(大文字と小文字を区別せず照合)を除き、Bridge の表記と完全に一致する必要があります。下書きの保存はこの制限の対象外なので、Drafts がリストに含まれていなくても返信を保存できます。
明示的に指定した証明書も自動検出された証明書もない場合、PROTON_BRIDGE_ALLOW_INSECURE=true が設定されていない限り、Baryon は起動を拒否します。非セキュアモードでは、別のローカルプロセスが Bridge に成りすまし、Bridge が生成したパスワードを傍受できる可能性があります。
BARYON_ALLOW_UNCONFIGURED_INTROSPECTION=true が適用されるのは、認証情報が両方とも存在しない場合のみです。これにより、公開イメージをメールボックスなしで起動し、内容を確認できます。その場合、すべてのツール呼び出しは設定エラーとなります。また、片方の認証情報だけが設定され、もう片方が欠けているサーバーは、引き続き起動を拒否します。
保存された認証情報と `baryon-mcp setup`
baryon-mcp setup は認証情報を保存します。サーバーは、対応する環境変数が設定されていない場合に、その認証情報を読み込みます。環境変数が設定されている場合は、常に環境変数が優先されます。${XDG_CONFIG_HOME:-~/.config}/baryon-mcp 以下の構成(モード 0700):
| 項目 | 場所 |
|---|---|
| Bridge のユーザー名 | bridge-username、mode-600 のファイル |
| Bridge のパスワード | 利用可能な場合は Secret Service キーリング、それ以外は bridge-password、mode-600 のファイル |
| Bridge の証明書 | cert.pem、mode-600 のファイル |
キーリングの項目は、サービス baryon-mcp-proton-bridge の下に Bridge のアドレスをユーザー名として保存されます。そのため、キーリングブラウザーでは '[email protected]' の 'baryon-mcp-proton-bridge' に対するパスワード と表示され、
secret-tool lookup service baryon-mcp-proton-bridge username [email protected]
で取得できます。セットアップの実行後に残るパスワードストアは、必ず1つだけです。キーリングに保存するとファイルが削除され、ファイルにフォールバックするとキーリングの項目が削除されます。キーリングから応答がない場合、またはロックされたまま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 を呼び出すのではなく、1回の呼び出しで行えます。プレビューで重要だとわかったメッセージは、引き続き get_email で全文を取得できます。本文がある場合はプレーンテキスト部分が使われ、ない場合は読み手に表示されるテキストに変換した HTML 部分が使われます。後者は body_from_html で示されます。短縮する前にタグを取り除くため、文字数の上限をマークアップではなく読みやすいテキストに使えます。また、本文が途中で切られた場合は body_truncated で示されます。get_email は引き続き、HTML を含め、送信時のままの両方の部分を返します。本文はエンベロープよりも大幅に大きいため、本文を含むページは10件までです。これを超える limit は黙って調整されず、拒否されます。省略した場合は10件が既定値になります。プレビューの取得も他の読み取りと同様に既読状態を変更しないため、未読メールのトリアージを行っても未読のままです。
次のページを取得するには、返された next_before_uid を uidvalidity とともに before_uid として渡します。これにより、2回の呼び出しの間にメールが届いても結果がずれたり、重複したりしません。通常の offset によるページングでは、これを保証できません。offset も引き続き使えますが、両方を同時に指定することはできません。また、uidvalidity が変わったメールボックスのページングは、呼び出しが失敗します。
添付ファイルは2通りの方法で取得できます。get_attachment はバイト列をインラインで返します。画像は画像コンテンツとして、それ以外のファイルは base64 として返され、会話に含まれます。save_attachment はデコードしたバイト列をパスに書き込み、パスのみを返すため、大きな添付ファイルがモデルのコンテキストに入ることはありません。
output_path は相対パスでも指定でき、その場合は添付ファイルディレクトリ内のパスとして解決されます。また、同ディレクトリ内の絶対パスも指定できます。親ディレクトリは事前に存在している必要があり、対象ファイルは存在していてはいけません。どちらの添付ファイル用ツールも、デコード後のサイズは最大25 MBです。そのため、save_attachment はコンテキストへの負荷をなくしますが、取得サイズの上限は変わりません。
返信
save_reply_draft は1件のメッセージに返信します。読み取り時に使った folder、uid、uidvalidity と本文を渡します。それ以外はすべてメッセージから導出されます。
- 宛先は、
Reply-To、なければFrom、それもなければSenderから取得します。自分のアドレスは除外され、重複はまとめられます。ほかに宛先が記載されていないメッセージ(自分宛てのもの、または自分のアドレスを偽装したもの)には、記載されているほかの宛先に返信せず、拒否します。宛先を自分で指定する場合はsave_draftを使用してください。 - **
reply_all**では、さらに元のToとCcも含めます。元のBccは引き継がれません。自分で指定したbccのみ保持されます。 - **
from**には、BARYON_SENDER_IDENTITIESのいずれかを指定する必要があります。list_sender_identitiesを呼び出すと確認できます。省略した場合、Baryonはメッセージの宛先になっているID、次に送信元のID、最後にデフォルトのIDを選びます。 - 件名に既存の
Re:接頭辞があれば、大文字・小文字にかかわらずそのまま使用し、なければ追加します。 - スレッドでは、
In-Reply-Toに親メッセージのMessage-IDを、Referencesに親のスレッド情報とそのMessage-IDを設定します。Message-IDのないメッセージは、正しくスレッド化できないため拒否されます。その場合もsave_draftは使用できます。
quote_originalを設定した場合に限り、元のメッセージを引用します。その場合、元のメッセージ全体が本文の下に「On , wrote:」という行とともにコピーされます。プレーンテキストでは各行に> が付き、HTMLでは<blockquote>で囲まれます。HTMLでインライン表示されている画像も一緒にコピーされます。それ以外の添付ファイルはコピーされません。応答には導出されたすべてのフィールドが含まれるため、Proton Mailから下書きを送信する前に宛先を確認できます。save_reply_draftが作成するのは下書きのみです。下書きの置き換えには引き続きsave_draftを使用します。
転送
save_forward_draftは、1件のメッセージを転送します。メッセージを読み取ったときの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で編集してください。 - Proton Mailは、HTML本文がある場合は下書きのHTML本文を保持します。また、Bridgeは下書きがどのメッセージを転送するのかをProton Mailに伝えないため、元のメッセージは転送済みとしてマークされません。
- 入れ子になった添付ファイルのコンテナーは個別のファイルになり、ファイル名のない添付ファイルには
part-1.2.pngなどの名前が生成されます。添付ファイルのContent-Typeパラメーター(カレンダー招待のmethodなど)は保持されます。ただし、UTF-8以外のcharsetの場合、そのテキストファイルのバイト列は保持されますが、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 文字までです。include_bodiesを指定してlist_emailsまたはsearch_emailsを呼び出す場合、1 ページあたり 10 件までです。指定しない場合は 100 件までです。get_threadが返す会話は 50 メッセージまでで、最新のものが保持されます。
下書きの制限:
- 書き込むプレーンテキスト本文と HTML 本文は、それぞれ 50,000 文字までです。転送または引用される元のメッセージは、本文ごとに最大 2 MiB まで、全体が保持されます。
- 通常の添付ファイルは 100 件までです。
in_reply_toとreferencesには、それぞれメッセージ識別子を 100 件まで指定できます。識別子 1 件あたり 512 バイトまでです。メッセージから読み取ったチェーンがこれより長い場合は、最新の識別子だけが残されます。- 添付ファイルは、デコード後のサイズが 1 件あたり 25 MB、両方のコンテンツソースを合わせて合計 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 テンプレートを埋めます。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。