Skip to main content
Glama
kerodkibatu

email-mcp

by kerodkibatu

email-mcp

クラシック Outlook on Windows をネイティブ COM (pywin32) で操作する、メール+カレンダー連携ツールです。単一の email コマンドとして提供され、CLIstdio MCP サーバー の両方の役割を果たします。Azure アプリ登録も OAuth も PowerShell も不要で、すでにサインインしている Outlook デスクトップクライアントをそのまま操作します。

要件

  • Windows 10/11

  • クラシック Outlook デスクトップ が、少なくとも1つのアカウントで設定されていること

  • Python 3.10+uv

「新しい」Outlook for Windows は COM を公開していません。新しい Outlook を使用していてクラシックに戻せない場合、このツールは動作しません。

COM は Outlook デスクトップクライアント経由でのみアクセスされ、個別の認証はありません。Outlook にサインインしているアカウントがそのままツールから見えるアカウントとなり、送信メールは手動で送信した場合とまったく同じように実際の [送信済み] フォルダーに保存されます。

Related MCP server: outlook-mcp

インストール / 実行

uvx を使って GitHub から直接実行できます(クローンも手動インストールも不要)。

uvx --from git+https://github.com/kerodkibatu/email-mcp email --help

初回実行時に uv がパッケージを解決してキャッシュするため、2回目以降の起動は高速です。

CLI

すべてのツールは email のサブコマンドです。出力は stdout に JSON で出力されます。

# List configured Outlook accounts
uvx --from git+https://github.com/kerodkibatu/email-mcp email list-accounts

# Query across all mail folders with a MongoDB-style filter (JSON string)
uvx --from git+https://github.com/kerodkibatu/email-mcp email query \
  --filter '{"$and":[{"from":{"$contains":"@kyros.com"}},{"unread":true}]}' \
  --limit 20 --order-by received_desc

# Read one email by EntryID
uvx --from git+https://github.com/kerodkibatu/email-mcp email read --entry-id "0000000..."

# Send a new mail (account is REQUIRED — see below)
uvx --from git+https://github.com/kerodkibatu/email-mcp email send \
  --to client@example.com \
  --subject "Status update" \
  --body "Heads up — ..." \
  --account kerod@towlydigital.com

# Save a new mail as a draft instead of sending (same flags as send, no --send-as)
uvx --from git+https://github.com/kerodkibatu/email-mcp email draft \
  --to client@example.com \
  --subject "Status update" \
  --body "Heads up — ..." \
  --account kerod@towlydigital.com

MCP

email mcp は、11 個すべてのツールを公開する stdio MCP サーバーを起動します。.mcp.json(または claude_desktop_config.json)に追加してください:

{
  "mcpServers": {
    "email": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kerodkibatu/email-mcp", "email", "mcp"]
    }
  }
}

初回起動は uv がパッケージを解決するため遅くなりますが、以降はキャッシュが使われます。

ツール

ツール

目的

list_accounts

設定済みの Outlook アカウントを一覧表示

query_emails

すべてのフォルダーを MongoDB スタイルでクエリ(has_attachmentsunread など)

read_email

EntryID でメールの本文全体を読む

send_email

新しいメールを送信(特定のアカウントから、ファイル添付付きで送信可能)

draft_email

新しいメールを作成し、送信せずに下書きとして保存

reply_email

メールに返信 / 全員に返信

forward_email

メールを転送

download_attachments

実際の添付ファイルを ~/Downloads/email-attachments/YYYY-MM-DD_<sender>_<subject>/ に保存

force_sync

送受信をトリガーし、同期グループが進むのを少し待つ

mark_as_read

既読/未読状態を切り替える

list_calendar

今後の予定を一覧表示

送信アカウントの選択

send_emailreply_emailforward_emailaccount パラメータが必須です。これは設定済みの Outlook アカウント名(通常は SMTP アドレス)の部分文字列です。これは意図的な仕様です。複数のアカウント(例: 個人用 + 仕事用)が設定されている場合、Outlook のプライマリアカウントをデフォルトにすると、個人メールが仕事用アカウントから漏れたり、その逆が起こる危険があります。呼び出し側にアカウントを明示させることで、送信を明確にします。

指定された account が設定済みのアカウント(大文字小文字を区別しない部分文字列)と一致しない場合、ツールはエラーを返し、利用可能なアカウントを一覧表示します。名前が不明な場合は、先に list_accounts を実行してください。トランスポートアカウントは、Outlook アイテムの SendUsingAccount プロパティに直接設定されます。

{
  "to": "client@example.com",
  "subject": "Status update",
  "body": "Heads up — ...",
  "account": "kerod@towlydigital.com"
}

別名送信(実験的 — Exchange の「別名で送信」権限が必要)

実験的。 これは pywin32 COM 経由でクラシック Outlook を操作するだけで、Azure/OAuth のパスはありません。動作はテナントポリシーに依存し、バウンス、サイレントなダウングレード、または [送信トレイ] に残る可能性があります。ベストエフォートとして扱ってください。

send_emailreply_emailforward_email はオプションの send_as パラメータ(送信元として使用する SMTP アドレス)を受け付けます。受信者にはそのアドレスが差出人として表示され、「代理送信」の開示は一切表示されません。これは真の Exchange の「別名で送信」であり、「代理で送信」とは異なります。

仕組みとしては、ツールは SendUsingAccount を指定された account(トランスポートメールボックス)に設定し、次に send_as を Exchange に対して解決し、送信前にアイテムの PropertyAccessor を介して PR_SENT_REPRESENTING_*PR_SENDER_* の両方の MAPI プロパティをそのアドレスに上書きします。送信者プロパティ(representing プロパティだけでなく)を上書きすることで、「代理送信」が純粋な「別名で送信」に変換されます。Exchange は送信時に権限を検証します。

要件:

  • account ユーザーには、Exchange 管理者がサーバー側で付与した send_as メールボックスに対する別名で送信権限が必要です。ツールはこれを付与または確認できません。送信を試みるだけです。

  • send_as アドレスは Exchange で解決可能である必要があります。通常は同じテナント内のメールボックスです。外部アドレス(gmail.com など)は解決時にエラーになります。

  • 権限がない場合の動作はテナントポリシーに依存します。Exchange はメッセージをバウンスするか、「代理送信」にサイレントにダウングレードするか、[送信トレイ] に残す可能性があります。

  • この機能は、明示的に許可した Exchange 組織内でのみ機能します。外部送信者を偽装するために使用することはできません。

{
  "to": "client@example.com",
  "subject": "Status update",
  "body": "Heads up — ...",
  "account": "admin@custom.com",
  "send_as": "contact@custom.com"
}

send_as を使用した場合、レスポンスには sent_as フィールドが含まれ、そのアドレスがエコーされます。

添付ファイルの送信

send_email はオプションの attachments 配列(絶対ファイルパス)を受け付けます。各パスは存在し、通常のファイルを指している必要があります。いずれかのパスが無効な場合、ツールは問題のあるパスを列挙したエラーを返し、送信は行われません。Windows ではフォワードスラッシュとバックスラッシュの両方が受け入れられます。~ や環境変数は展開されません。完全に解決されたパスを渡してください。

{
  "to": "kerod@example.com",
  "subject": "Signed contract",
  "body": "See attached.",
  "account": "kerod@towlydigital.com",
  "attachments": [
    "C:\\Users\\Kerod\\Desktop\\contract.pdf",
    "C:/Users/Kerod/Desktop/cover-letter.pdf"
  ]
}

添付ファイルのダウンロード

download_attachments ツールは、メールからファイルを抽出してローカルに保存し、絶対フォルダーパスを返します。

  • 保存場所: ファイルはユーザーのダウンロードフォルダー配下の ~/Downloads/email-attachments/YYYY-MM-DD_sender-slug_subject-slug/ に保存されます。

  • インライン画像: ロゴや署名画像は、デフォルトではノイズを避けるために除外されます。どうしても必要な場合は include_inline: true を設定してください。

  • 冪等性: 同じメールに対してツールを再実行すると、フォルダーを安全に再利用し(.entry_id マーカーで追跡)、2つの異なるメールが同じスラッグ名になった場合には曖昧さを解消します。

仕組み

email コマンドは、COM 経由で実行中の Outlook インスタンスに接続し(実行中のものがない場合は起動)、MAPI 名前空間を操作してメールの読み書きを行います。すべての COM アクセスは単一の Outlook セッションを経由し、PowerShell を起動することはありません。

つまり:

  • Outlook がインストールされている必要があります(開いている必要はありません。最初の呼び出しで起動されます)

  • Outlook にサインインしているアカウントがそのままツールから見えるアカウントです。個別の認証はありません

  • 送信メールは、手動で送信した場合とまったく同じようにユーザーの [送信済み] フォルダーに表示されます

ライセンス

MIT — LICENSE を参照してください。

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    A lightweight MCP server for personal Microsoft Outlook/Hotmail accounts, enabling email search, reading, attachment management, and folder operations via Microsoft Graph API with OAuth device-code flow.
    6
    1
  • A
    license
    Not graded
    quality
    B
    maintenance
    Turns your running Outlook Desktop into an MCP server, enabling email, calendar, tasks, and attachment management through your existing Outlook session without any cloud APIs.
    AGPL 3.0

View all related MCP servers

Related MCP Connectors

  • Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.

  • Read-only MCP server for ClassQuill, a tutoring-business-management platform.

  • Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kerodkibatu/email-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server