JMAP Email について
JMAP Email は、JMAP メールサービスを操作するための MCP サーバーです。メールボックス、メール、送信者 ID、Sieve スクリプトの操作を提供し、送信とスクリプト管理はオプションで有効にできます。
主な機能
- 01メールの検索・取得と下書き作成
- 02メールの移動・フラグ設定・削除
- 03メールボックスの表示と管理
- 04送信者 ID の一覧表示
- 05Sieve スクリプトの検証と管理
- 06オプションでのメール送信有効化
活用シーン
- 01条件を指定したメールの検索と確認
- 02メールの整理とフラグ管理
- 03下書き作成と必要に応じた送信
- 04メール振り分けスクリプトの確認や更新
MCP 対応
JMAP のメールおよび Sieve スクリプト操作をツールとして MCP クライアントに提供します。メール送信と Sieve ツールは機能フラグで有効化できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e JMAP_SESSION_URL -e JMAP_AUTH_TOKEN ghcr.io/mikluko/jmap-mcp:0.10.0JMAP_SESSION_URLJMAP session endpoint URL (e.g. https://api.fastmail.com/jmap/session)JMAP_AUTH_TOKENシークレットJMAP bearer token for authenticationローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/mikluko/jmap-mcp:0.10.0stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
jmap-mcp
JMAP のメールおよび Sieve スクリプト操作をツールとして公開する MCP サーバーです。
Go MCP SDK(go-sdk)と go-jmap ライブラリを使用して構築されています。
ツール
ツールは JMAP メソッドにほぼそのまま対応しています。メールの変更ツールでは、Email/set のパッチを扱いやすくする構造化されたラッパーを提供します。
メールボックス(RFC 8621)
| ツール | JMAP メソッド | 説明 |
|---|---|---|
mailbox_get | Mailbox/get | ID を指定してメールボックスを取得するか、すべて一覧表示します |
mailbox_set | Mailbox/set | メールボックスを作成、更新、または削除します |
メール(RFC 8621)
| ツール | JMAP メソッド | 説明 |
|---|---|---|
email_query | Email/query | フィルターを使ってメールを検索し、ID と合計件数を返します |
email_get | Email/get | ID を指定してメールの全文を取得します |
email_create | Email/set | Drafts メールボックスに新しいメールの下書きを作成します |
email_move | Email/set | メールを別のメールボックスに移動します |
email_flag | Email/set | フラグ(既読、フラグ付き、返信済み、下書き)を設定または解除します |
email_delete | Email/set | メールを削除します(Trash に移動するか、完全に削除します) |
email_attachment_url | Blob download | 添付ファイルをストリーミングする署名付き URL。30 秒で有効期限が切れます(HTTP モードのみ) |
ID
| ツール | JMAP メソッド | 説明 |
|---|---|---|
identity_get | Identity/get | 送信者の ID(メールアドレス)を一覧表示します |
送信(機能フラグで有効化)
| ツール | JMAP メソッド | 説明 |
|---|---|---|
email_submission_set | EmailSubmission/set | 下書きを送信します(-enable-send が必要です) |
Sieve スクリプト(RFC 9661、機能フラグで有効化)
| ツール | JMAP メソッド | 説明 |
|---|---|---|
sieve_get | SieveScript/get | すべてのスクリプトを一覧表示するか、全文を指定して 1 つ取得します(-enable-sieve が必要です) |
sieve_set | SieveScript/set | Sieve スクリプトを作成、更新、または削除します(-enable-sieve が必要です) |
sieve_validate | SieveScript/validate | 保存せずに Sieve スクリプトを検証します(-enable-sieve が必要です) |
設定
| 環境変数 | 必須 | 説明 |
|---|---|---|
JMAP_SESSION_URL | 常に | JMAP セッションエンドポイント(例:https://api.fastmail.com/jmap/session) |
JMAP_AUTH_TOKEN | stdio モード | JMAP 認証用のベアラートークン |
ATTACHMENT_URL_SECRET | いいえ | 署名付き添付ファイル URL をシールするシークレット。複数レプリカのデプロイでは設定してください(デフォルト:プロセスごとにランダムなキー) |
| フラグ | デフォルト | 説明 |
|---|---|---|
-mode | stdio | サーバーモード:stdio または http |
-listen | :8080 | HTTP のリッスンアドレス(http モードのみ) |
-enable-send | false | email_submission_set ツールを有効にします(デフォルトでは無効) |
-enable-sieve | false | Sieve スクリプトツールを有効にします(デフォルトでは無効。JMAP サーバーのサポートが必要です) |
-external-url | 派生 | 署名付き添付ファイルリンク用の外部ベース URL。デフォルトではリクエストから派生します(X-Forwarded-Proto/X-Forwarded-Host に対応) |
HTTP モードでは、Authorization: Bearer <token> ヘッダーまたは jmap_token クエリパラメーターでリクエストごとにトークンを渡せます(クエリパラメーターが優先されます)。
HTTP モードでは、email_attachment_url は /attachments/ から配信されるリンクを返します。このリンクは発行から 30 秒後に有効期限が切れます。リンクは AES-GCM でシールされたケイパビリティで、JMAP トークン、アカウント、blob ID を含みます。そのため、エンドポイントは追加の認証なしで JMAP サーバーから添付ファイルをストリーミング配信し、ディスクには何も保存しません。
インストール
Kubernetes(Helm)
helm install jmap-mcp oci://ghcr.io/mikluko/helm-charts/jmap-mcp \
--version 0.1.0 \
--set jmap.sessionURL="https://api.fastmail.com/jmap/session"
HTTP モードでは、JMAP 認証トークンは Authorization: Bearer ヘッダーまたは ?jmap_token= クエリパラメーターを使ってリクエストごとに渡します。クラスターに静的トークンが保存されることはありません。
バイナリ
go install github.com/mikluko/jmap-mcp@latest
ソースから
git clone https://github.com/mikluko/jmap-mcp.git
cd jmap-mcp
make install
使い方
# stdio mode (default)
export JMAP_SESSION_URL=https://api.fastmail.com/jmap/session
export JMAP_AUTH_TOKEN=your-token
./jmap-mcp
# HTTP mode
./jmap-mcp -mode http -listen :8080
ビルド
make build # Build and push container image + Helm chart
make image # Build and push container image with ko
make package # Package and push Helm chart to OCI registry
make test # Run tests
make install # Install binary locally
参考資料
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。