mcpField
A
apple-mail-mcp

apple-mail-mcp

ローカル
github.com/parasxosコミュニケーション331 週間前に更新

apple-mail-mcp について

apple-mail-mcp は、macOS の Apple Mail 向けローカル MCP サーバーです。メールを検索、整理、送信するエージェントやクライアントを対象とし、ローカルインデックスで本文を検索します。一括整理は計画、確認、実行、検証の流れで行います。

主な機能

  1. 01差出人、日付、本文によるメール検索
  2. 02メール、スレッド、添付ファイルの読み取り
  3. 03メールの送信、返信、下書き、予約
  4. 04一括整理プランの確認と検証
  5. 05ローカル実行と診断ツール

活用シーン

  1. 01古いメール本文や関連スレッドの検索
  2. 02指定した差出人での送信や下書き作成
  3. 03メールの予約送信
  4. 04確認後のメール一括振り分け

MCP 対応

stdio MCP 経由で、ローカルクライアントに Apple Mail の検索、読み取り、送信、整理ツールを公開します。読み取り専用モードに加え、送信、予約、一括操作にも対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"parasxos-apple-mail": {
"command": "uvx",
"args": [
"apple-mailbox-mcp"
]
}
}
}
起動コマンドuvx apple-mailbox-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiapple-mailbox-mcp1.8.3

ツール

21

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
afteranyいいえこの ISO-8601 の日付またはタイムスタンプより後のメールのみを含めます。
limitintegerいいえ返す結果の最大数。
querystringいいえ件名、送信者、スニペット、またはインデックス化された本文で検索する語句。
beforeanyいいえこの ISO-8601 の日付またはタイムスタンプより前のメールのみを含めます。
offsetintegerいいえページネーションでスキップする一致結果の数。
accountanyいいえアカウント UUID。省略すると、設定済みのすべてのアカウントが対象になります。
mailboxanyいいえ検索するメールボックス名。例:INBOX または Archive。
to_addranyいいえ一致させる受信者の名前、アドレス、またはアドレスの一部。
from_addranyいいえ一致させる送信者の名前、アドレス、またはアドレスの一部。
unread_onlybooleanいいえtrue の場合、未読メッセージのみを含めます。
has_attachmentanyいいえ添付ファイルがあるメールは True、ないメールは false です。

詳細

✉️ apple-mail-mcp

あなたの Apple Mail を、エージェントが完全に操作可能に。

Mac 上でローカルに動作します。 Mail ストアを読み取り専用で開き、クライアントが要求したものだけを返し、クライアントが明示的に送信ツールを呼び出したときだけ送信します。サードパーティの中継も、あなたのメールのクラウドコピーもありません。

uvx apple-mailbox-mcp setup

30 万件のメッセージストアで計測: Mail 自身のインデックスを使った 1 件のメッセージのアドレッシングは 0.1 ms、一方 AppleScript の whose 句では 7〜10 秒。全文検索は p95 1 ms 未満。手法とスクリプト: docs/benchmarks.md。

Claude Code、Claude Desktop、Codex、Cursor、VS Code、または任意のローカル MCP クライアントを使って、Apple Mail 経由でメールを検索、閲覧、トリアージ、送信できます。あなたのメールボックスは、 質問し、検索し、委任できるものになります — 数秒で何でも見つけ、レビュー済みのプランで何百通ものメッセージを整理し、適切な Identity で洗練されたメールを送信し、Mac がスリープ中でも Exchange に予約メッセージを配信させることができます。

ci tools platform python mcp contract


demo: uvx install、status、および 29.8 万件のメッセージストアに対する Claude 検索

✨ できること

🔍 メールボックスに質問する。 「先週 Maria がメモについて送ってきたものは?」 検索はデータベースの速度で実行され — 送信者、メールボックス、日付、未読、添付ファイル — 会話全体を再構築します。

🕳️ Mail 自身では見つけられないものを見つける。 Mail の組み込み検索は、ほとんどのメッセージの最初の 1 行しかざっと見ません。apple-mail-mcp は Mac 上のすべてのメッセージ本文をインデックス化します — さらに Exchange アカウントでは、Mail がダウンロードしなかった本文さえ、サーバー上のあなた自身のメールボックスから直接取得します。何も返さなかったクエリが 20 件を返すようになります。

🎭 適切な「あなた」として送信する。 仕事のメールは仕事のレーンで、個人のメールは Gmail で — 1 つのパラメータが Identity を選びます。すべてのメッセージはゼロから、クリーンで標準に準拠したメールとして作成され、どこでも正しく表示されます、Outlook を含めて (Outlook で空白で届く AppleScript の作成パスこそ、このプロジェクトが存在する理由です)。

⏰ 「Send Later」のようにスケジュール、ただしスクリプト化可能。 予約メッセージは完全に凍結されます — 添付ファイル、Identity、正確なテキスト、そして 1.8.2 以降はスレッディングヘッダーも。そのため予約された返信は、それが返信する会話に届きます。Exchange は蓋を閉じたまま、指定された時刻にサーバー側で実行できます。他のプロバイダーはローカルのバックグラウンド送信機能を使い、次のパスで配信します (または Mac のスリープ解除直後)。

🗂️ 大規模なトリアージを、恐れずに。 「この 40 件のニュースレターを整理して」 はレビュー可能なプランになります。承認されるまで何も移動せず、触れる前にすべてのメッセージが再確認され、その後結果が Mail 自身の記録と照合されます。削除は Mail のゴミ箱を意味します — 何も完全に消去されることはありません。

📝 下書きは下書きのある場所で。 実際の Exchange の下書きフォルダに作成し、Outlook や OWA ですぐに開けます — 作成されるだけで、自動送信は決してされません。

⚡ 他とは違う理由

他のすべての Apple Mail 向け MCP は、検索と操作の両方で AppleScript を動かします。 これは違います — そしてその違いは明らかです:

操作AppleScript の whose 句apple-mailbox-mcp
🔍 30 万件のメッセージを検索数秒からタイムアウトミリ秒
🎯 7.1 万件のメールボックスで 1 件のメッセージを特定7〜10 秒(実測値)0.1 ms 未満
✉️ メールを送信本文が Outlook で空白表示になるどこでも表示、プレーンテキスト+HTML
⏰ メールを予約送信—Exchange ではサーバー側で、それ以外ではどこでも信頼性の高いローカルキュー
🗂️ 一括トリアージメッセージごとに 1 回の呼び出し、投げっぱなしレビュー済みの 1 つのプラン、1 回の適用、検証済み

上記の数値はすべて、稼働中の約 30 万件のメッセージストアで実測したものです。 スクリプトと完全な手法は docs/benchmarks.md にあります。

これらのベンチマークがあなたのメールボックスでも成り立つなら、⭐ が他の人の発見につながります。

🛡️ 信頼されるために作られています

  • ✅ プラン → レビュー → 適用 → 検証。 一括操作は、何かが起こる前に読めるプランとして凍結されます。結果はその後、Mail 自身のストアと照合して確認され、決して推測されません。
  • 🗑️ 何も削除されることはありません。 「削除」は Mail のゴミ箱にファイルするだけで、破壊的なプランには独自の、上限付きの別の入口があります。
  • 👓 読み取り専用メールモード。 EMAIL_MCP_READ_ONLY=1 を設定すると、セッションには変更を加えない 11 個のメールツールだけが存在します。検索はローカルの本文インデックスを維持することがあり、添付ファイルの取得は要求されたファイルを設定済みの一時ディレクトリに書き込みます。
  • 💾 クラッシュに強い予約送信キュー。 マニフェストの更新はフラッシュされ、アトミックに置き換えられるため、中断された書き換えでも最後の有効なレコードが保持されます。ファイルが単独で破損した場合、診断はキューが空だと主張するのではなく、そのファイルを名指しし、正常な予約メッセージは動き続けます。
  • 🧾 ローカルのベストエフォート型アクティビティ台帳。 送信、予約、キャンセル、トリアージ実行は記録されますが、書き込み不能なログがメールをブロックすることはありません。照合には、メッセージ自体、その Message-ID、およびその予約レコードが引き続き正式な情報源となります。
  • 🔒 サードパーティのメールリレーはありません。 メール内容は、あなたが送信するメール、および Exchange/IMAP の本文バックフィル、下書き、サーバー側スケジューリングのための自身のプロバイダーへの任意アクセスを除いて、ローカルに留まります。SMTP パスワードは macOS Keychain または 1Password に保持され、Microsoft OAuth トークンは ~/.email-mcp/graph/ 配下のプライベートな 0600 キャッシュに保存されます。
  • 📜 書面による契約。 v1.0 以降、すべてのツールの形状、エラーコード、上限は追加的に進化し、800 件以上の自動テストによって維持されています。
  • 🤝 すべての MCP クライアントにとって明確。 21 個のツールすべてが、何をするかを示し、すべての入力を説明し、データを読み取るのか、変更するのか、削除できるのかを宣言します。新しいクライアントは構造化された結果を受け取り、古いクライアントは同じ JSON テキストを受け取ります。MCP SDK 2.2 およびそれ以降の 2.x リリースがテストされており、古いクライアントもサポートされています。
  • 🧱 あなたのワークフローを壊さずに進化するように作られています。 メールルールは MCP、Mail.app、Exchange、配信、ローカルストレージから分離されています。プロバイダーや SDK の変更はエッジに留まり、21 ツールの契約は安定したままです。依存関係のルールは CI で強制され、アーキテクチャガイドで説明されています。
  • 📦 検証できるリリース。 タグ付けされたすべてのリリースは、公開前にクリーンな環境でビルドおよびインストールされます。GitHub にはソースコードだけでなく、wheel、ソースアーカイブ、SHA-256 チェックサム、署名済みビルド来歴が含まれます。
  • 🩺 自己診断。 apple-mail-mcp status は、読みやすくまとまった 1 つの準備状況・スケジューリング・リカバリー画面を提供します。apple-mail-mcp doctor は完全な診断詳細と、赤い項目に対する正確な修正方法を提供します。

🚀 クイックスタート

  1. ターミナルアプリに フルディスクアクセス を許可します (システム設定 → プライバシーとセキュリティ → フルディスクアクセス)。その後、ターミナルを終了して再度開きます。これはAppleによる手動設定が必要な唯一の項目です。ポップアップは表示されません。

  2. インストールしてセットアップします:

    uvx apple-mailbox-mcp setup     # or: pipx install apple-mailbox-mcp
    # or via Homebrew:
    brew install parasxos/tap/apple-mail-mcp && apple-mail-mcp setup
    
  3. クライアントに登録します — Claude Codeの場合は次の1行を実行します:

    claude mcp add --transport stdio --scope user apple-mail -- uvx apple-mailbox-mcp
    

    または、Claude Desktop/Cursor/VS Codeの場合は、同じJSONブロックを設定します (claude_desktop_config.json / .cursor/mcp.json / .vscode/mcp.json):

    {
      "mcpServers": {
        "apple-mail": { "command": "uvx", "args": ["apple-mailbox-mcp"] }
      }
    }
    
  4. 確認します: uvx apple-mailbox-mcp status を実行すると、準備状況が1画面に表示されます。または、クライアントに doctor ツールを実行するよう頼んでください。赤い項目には、それぞれ具体的な修正方法が表示されます。uvx apple-mailbox-mcp --version を実行すると、インストール済みのバージョンが表示されます(apple-mailbox-mcp、apple-mail-mcp、email-mcp は同じコマンドの3つの名前です)。大きなメールボックスでは、初回の本文インデックス作成はバックグラウンドで実行され、数分かかることがあります。検索はすぐに使え、インデックスの作成に伴って処理が完了します。

setup を実行する前に、ターミナルアプリに フルディスクアクセス を許可してください (システム設定 → プライバシーとセキュリティ → フルディスクアクセス)。これにより、読み取りを高速かつローカルで行えます。この設定にはポップアップが表示されません。Appleによる手動設定が必要な唯一の項目で、見つからない場合は setup が該当する設定画面まで案内します。

setup では、すべての項目がわかりやすい言葉で尋ねられます(何も入力せずにEnterキーを押すと、推奨される回答が選択されます)。送信者のIDを選択でき、本文検索用インデックスが作成され、夜間の更新が実際に実行されることが確認されます。最後に、MCPクライアントに貼り付けるブロックが1つ表示されます:

{
  "mcpServers": {
    "apple-mail": { "command": "apple-mail-mcp" }
  }
}

セットアップの最後に、明確な 準備完了 の判定、または番号付きの復旧手順が表示されます。トリアージで初めて求められたときに、オートメーション → Mail を許可してください。インストール状況、次に予定されているメッセージ、失敗した予定送信は、いつでも apple-mail-mcp status で確認できます。詳しい技術情報を確認するには、apple-mail-mcp doctor を使用してください。

💡 ターミナルを使い始めたばかりですか? 間違っているように見えても、問題のないことが3つあります: brew install pipx では y の入力が必要です(Enterキーだけでは受け付けられません)。 pipx ensurepath で ⚠️ が表示されることがありますが、その後に表示される「pipx is ready to go!」の行が判定結果です。また、ensurepath の実行後は、apple-mail-mcp が見つかるように、ターミナルを一度閉じて再度開いてください。

🔌 対応クライアント

以下のクライアントはすべてstdio MCPに対応しています。コマンドは常に uvx apple-mailbox-mcp です。

Claude Code
claude mcp add --transport stdio --scope user apple-mail -- uvx apple-mailbox-mcp
Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json に追加します:

{ "mcpServers": { "apple-mail": { "command": "uvx", "args": ["apple-mailbox-mcp"] } } }
Cursor

同じブロックを ~/.cursor/mcp.json(またはプロジェクトごとの .cursor/mcp.json)に追加します。

VS Code(Copilot MCP)

.vscode/mcp.json の "servers" の下に同じブロックを追加します。

Codex CLI
# ~/.codex/config.toml
[mcp_servers.apple-mail]
command = "uvx"
args = ["apple-mailbox-mcp"]
任意のstdio MCPクライアント

uvx apple-mailbox-mcp を指定します。ワイヤーコントラクトはv1.0以降、追加のみです。

🔧 トラブルシューティング

症状対処方法
クライアントでサーバーの起動に失敗したと表示されるが、ターミナルでは uvx apple-mailbox-mcp が動作するGUIアプリはシェルのPATHを引き継ぎません。絶対パスを指定してください:"command": "/opt/homebrew/bin/uvx"(which uvx でパスを確認できます)。
database is locked または結果が空になるサーバーを起動するアプリ(ターミナルではなくクライアント)にフルディスクアクセスが許可されていません。許可した後、そのアプリを完全に終了して再度開いてください。
最近のメールは検索できるが、古いメールの本文が見つからない本文インデックスの作成中です。メールボックスが10万件以上ある場合、初回の作成には数分かかります。status で進行状況を確認できます。
送信が transport_unavailable で失敗するdoctor を実行してください。失敗している経路(Keychain項目の欠落、SSHソケットの未接続、SMTPホストに到達できないなど)が示され、具体的な修正方法が表示されます。
初回のトリアージで何も起こらないmacOSから求められたときに オートメーション → Mail を許可してください。このプロンプトはインストール時ではなく、初回使用時に表示されます。

🧰 21 個のツール

グループツール
🔍 読み取り (8)search_emails (本文全体検索) · get_email · get_emails_batch · get_thread · list_mailboxes · list_recent · get_attachment · refresh_mail
✉️ 送信 (6)send_email · reply_email (スレッド化、引用付き) · create_draft · schedule_email (リクエストに応じてスレッド化) · list_scheduled · cancel_scheduled
🗂️ トリアージ (5)triage_plan · triage_plan_delete · triage_apply · mailbox_create · mailbox_delete
🩺 メタ (2)doctor (修正用文字列を備えた完全診断) · audit (ローカル台帳)

添付ファイルは双方向に対応し、サイズの上限が設けられています。返信はあらゆる クライアントで正しくスレッド化されます。スケジュール送信はスリープを乗り越えます — 蓋が閉じている間に送信予定だったメッセージは、スリープ解除後の最初のティックで送信されるか、 Exchange 経由なら正確に予定どおりに送信されます。

🎭 あなたのアドレス、あなたのレーン

From: アドレスがメールの送信方法を決定します。~/.email-mcp/identities.toml:

default = "work"

[work]                    # sent through a host you already trust, over SSH
from_addr = "[email protected]"
driver    = "ssh_sendmail"
host      = "bastion.example.org"   # any login host you already SSH to

[gmail]                   # classic SMTP — the app password stays in 1Password
from_addr = "[email protected]"
driver    = "smtp"
host      = "smtp.gmail.com"
op        = "op://Personal/gmail app password/password"

Exchange の ID では、サインインを 1 つ追加すると拡張機能を利用できます。 実際の Drafts フォルダに下書きが保存され、スケジュール送信はサーバー自身によって 実行されます — 蓋を閉じたまま、Mac がスリープしていても。setup ではこれを 1 つの簡単な質問で提案します。読み取りには送信設定は一切必要ありません。


21 個のツール · 1,200 以上のテスト · v1.0 以降、追加のみのワイヤーコントラクト 305k メッセージのストアで実環境に合わせてエンドツーエンドで検証済み。

1 台の Mac のために — そして Mail.app を動かすすべての人のために。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。