mcpField
O
Outlook Personal MCP

Outlook Personal MCP

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

Outlook Personal MCP について

Outlook Personal MCP は、Microsoft Graph を通じて個人の Outlook.com メールボックスとカレンダーを操作する MCP サーバーです。ローカルのデバイスコード OAuth と stdio を使い、第三者の中継を経由しません。

主な機能

  1. 01メールの検索・読み取り・送信・管理
  2. 02下書きと添付ファイルの管理
  3. 03カレンダーイベントと空き状況の管理
  4. 04ローカルのデバイスコード OAuth
  5. 05添付ファイルのローカルパス制限

活用シーン

  1. 01個人メールボックスの検索と整理
  2. 02メールの作成・送信・返信
  3. 03カレンダーイベントや招待の管理
  4. 04参加者の空き時間の確認

MCP 対応

Microsoft Graph を介して、個人の Outlook.com メールとカレンダーを操作するツールを MCP クライアントに公開します。stdio で通信し、OAuth トークンをローカルに保存します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"salahawad-outlook-personal": {
"command": "uvx",
"args": [
"mcp-outlook-personal"
],
"env": {
"OUTLOOK_MCP_CLIENT_ID": "<OUTLOOK_MCP_CLIENT_ID>",
"OUTLOOK_MCP_AUTHORITY": "<OUTLOOK_MCP_AUTHORITY>",
"OUTLOOK_MCP_FILE_ROOT": "<OUTLOOK_MCP_FILE_ROOT>",
"OUTLOOK_MCP_MAX_FILE_BYTES": "<OUTLOOK_MCP_MAX_FILE_BYTES>",
"OUTLOOK_MCP_ALLOW_PERMANENT_DELETE": "<OUTLOOK_MCP_ALLOW_PERMANENT_DELETE>",
"OUTLOOK_MCP_DEBUG": "<OUTLOOK_MCP_DEBUG>"
}
}
}
}
起動コマンドuvx mcp-outlook-personal
設定が必要な環境変数
OUTLOOK_MCP_CLIENT_IDAzure App Registration client ID (Application ID). Required. Create a free app at https://portal.azure.com — see README for the three-minute setup.
OUTLOOK_MCP_AUTHORITYシークレットAzure AD authority URL. Defaults to https://login.microsoftonline.com/consumers which covers personal Microsoft accounts (Outlook.com, Hotmail, Live). Change only if you target a different tenant.
OUTLOOK_MCP_FILE_ROOTOnly files under this directory can be read by add_attachment or written by download_attachment. Defaults to ~/.local/share/outlook-personal-mcp/files.
OUTLOOK_MCP_MAX_FILE_BYTESMaximum bytes allowed for local attachment reads and attachment downloads. Defaults to 3145728.
OUTLOOK_MCP_ALLOW_PERMANENT_DELETESet to 'true' to enable the permanent_delete tool which irrecoverably erases messages (bypasses Deleted Items). Disabled by default for safety.
OUTLOOK_MCP_DEBUGSet to 'true' to enable debug-level logging for Graph API requests and responses.

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

パッケージ
pypimcp-outlook-personal0.1.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

outlook-personal-mcp

Microsoft Graph API を介して、Claude Code と Codex に個人用 Outlook.com メールボックスとカレンダーの完全な操作権限を提供する MCP サーバーです。Python で記述され、MCP の stdio トランスポートを使用します。ユーザーごとのデバイスコード OAuth を利用するため、認証情報が端末の外に出ることはありません。MIT ライセンスです。


機能

  • メール — 一覧表示、検索、読み取り、送信、返信、転送、移動、コピー、フラグ設定、既読/未読の設定、削除(論理削除または完全削除)
  • 下書き — 作成、更新、ローカルファイルの添付、送信
  • フォルダー — 一覧表示、作成、名前の変更、削除
  • カレンダー — カレンダーの一覧表示、予定の一覧表示/検索/取得/作成/更新/削除、招待への応答(承諾/辞退/仮承諾)、空き時間/予定ありの確認
  • ユーザーごとの OAuth — 無料の Azure アプリを自分で登録します。サーバーは Microsoft アカウントで認証し、トークンをローカルにキャッシュします
  • ローカル stdio — MCP ホストの子プロセスとして実行されます。メールボックスのデータが第三者を経由することはありません

前提条件

  • Python 3.10 以降
  • uv(高速な Python パッケージおよびツールランナー)— 実行時に必須です。サーバーは uvx 経由で起動され、MCP ホスト(Claude Desktop を含む)には同梱されていません。curl -LsSf https://astral.sh/uv/install.sh | sh(macOS/Linux)または powershell -c "irm https://astral.sh/uv/install.ps1 | iex"(Windows)でインストールしてください。
  • 個人用 Microsoft アカウント(Outlook.com、Hotmail、Live など)
  • 無料の Azure アプリ登録(以下を参照。所要時間は約3分)

Azure アプリの登録

  1. https://portal.azure.com にアクセスし、Microsoft Entra ID → アプリの登録 → 新規登録を選択します。

  2. 任意の名前(例:outlook-personal-mcp)を付けます。サポートされているアカウントの種類で、個人用 Microsoft アカウントのみを選択します。リダイレクト URI は不要です。登録をクリックします。

  3. アプリを開き、認証 → 詳細設定 → パブリック クライアント フローを許可するを選択し、はいに設定してから保存します。(この設定は、このサーバーが使用するデバイスコードのログインフローに必要です。)

  4. API のアクセス許可 → アクセス許可の追加 → Microsoft Graph → 委任されたアクセス許可に移動し、以下を追加します。

    • Mail.ReadWrite
    • Mail.Send
    • Calendars.ReadWrite

    (User.Read は既定で含まれています。offline_access は実行時に自動的に要求されるため、追加する必要はありません。)

  5. 概要ページからアプリケーション(クライアント)IDをコピーします。これが OUTLOOK_MCP_CLIENT_ID です。

代替方法:Azure CLI でアプリを作成する

az CLI があれば、登録全体を1つのコマンドで実行できます。

az login --use-device-code --allow-no-subscriptions   # sign in with your personal account

az ad app create \
  --display-name "outlook-personal-mcp" \
  --sign-in-audience PersonalMicrosoftAccount \
  --is-fallback-public-client true \
  --required-resource-accesses '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"024d486e-b451-40bb-833d-3e66d98c5c73","type":"Scope"},{"id":"e383f46e-2787-4529-855e-0e479a3ffac0","type":"Scope"},{"id":"1ec239c2-d7c9-4623-a91a-a9775856bb36","type":"Scope"}]}]' \
  --query appId -o tsv

表示された appId が OUTLOOK_MCP_CLIENT_ID です。(GUID は、Microsoft Graph の委任されたアクセス許可 Mail.ReadWrite、Mail.Send、Calendars.ReadWrite に対応します。)注: 新しくアプリを登録した場合、Microsoft のコンシューマー向けログインエンドポイントに反映されるまで数分かかります。初回のログインで AADSTS700016(「アプリケーション…が見つかりません」)が発生した場合は、数分待ってから再試行してください。


インストールと初回ログイン

1回限りの対話型ログインを実行します。短い URL とコードが表示されるので、任意のブラウザーで URL を開き、コードを入力してアクセス許可を承認すれば完了です。トークンは ~/.config/outlook-personal-mcp/token_cache.bin(モード 600)にキャッシュされ、以降の実行時に自動更新されます。更新トークンの有効期限が切れるか、取り消されない限り、再度プロンプトが表示されることはありません。

OUTLOOK_MCP_CLIENT_ID=<your-app-client-id> uvx mcp-outlook-personal login

PyPI リリースではなく、リリース前の最新コードをソースから実行するには、mcp-outlook-personal を --from git+https://github.com/salahawad/outlook-personal-mcp mcp-outlook-personal に置き換えてください。


Claude Code の設定

サーバーをプロジェクトの .mcp.json(すべてのプロジェクトに設定する場合は ~/.claude/.mcp.json)に追加します。

{
  "mcpServers": {
    "outlook": {
      "command": "uvx",
      "args": ["mcp-outlook-personal"],
      "env": { "OUTLOOK_MCP_CLIENT_ID": "<your-app-client-id>" }
    }
  }
}

または、CLI で claude mcp add を使用します。


Codex の設定

サーバーを ~/.codex/config.toml に追加します。

[mcp_servers.outlook]
command = "uvx"
args = ["mcp-outlook-personal"]
env = { OUTLOOK_MCP_CLIENT_ID = "<your-app-client-id>" }

Claude Desktop 拡張機能(.mcpb)としてインストールする

このサーバーは Claude Desktop 拡張機能(.mcpb)としてもパッケージ化されています。チェックアウトしたリポジトリからバンドルをビルドします。

npx @anthropic-ai/mcpb pack . dist/mcp-outlook-personal.mcpb

その後、Claude Desktop で Settings → Extensions を開き、dist/mcp-outlook-personal.mcpb ファイルをインストールして、求められたら Azure App Client ID(および任意の設定)を入力します。

**要件:**拡張機能は uvx mcp-outlook-personal でサーバーを起動するため、uv をインストールし、PATH に追加しておく必要があります。Claude Desktop には同梱されていません(前提条件を参照)。Codex やその他の stdio ホストでは、.mcpb ではなく上記の設定を使用してください。


設定(環境変数)

変数必須デフォルト説明
OUTLOOK_MCP_CLIENT_IDはい—Azure アプリの Application(client)ID
OUTLOOK_MCP_AUTHORITYいいえhttps://login.microsoftonline.com/consumersMSAL authority URL(職場または学校のテナントに移行する場合のみ変更してください)
OUTLOOK_MCP_TOKEN_CACHEいいえ~/.config/outlook-personal-mcp/token_cache.binMSAL トークンキャッシュファイルのパス
OUTLOOK_MCP_FILE_ROOTいいえ~/.local/share/outlook-personal-mcp/filesadd_attachment による読み取り、または download_attachment による書き込みが可能なのは、このディレクトリ内のファイルのみです
OUTLOOK_MCP_MAX_FILE_BYTESいいえ3145728ローカル添付ファイルの読み取りと添付ファイルのダウンロードで許可される最大バイト数
OUTLOOK_MCP_ALLOW_PERMANENT_DELETEいいえfalsetrue に設定すると、permanent_delete ツールが有効になります(取り消しできません。詳細は下記を参照)
OUTLOOK_MCP_DEBUGいいえfalsetrue に設定すると、各 Graph リクエストのメソッド、URL、HTTP ステータスコードを stderr に記録します。トークンやメッセージ内容は記録されません。

ツール

アカウント
ツール説明
whoamiサインイン中のユーザーの Microsoft アカウントプロフィールを返します
メール
ツール説明
list_messagesメッセージを一覧表示します(新しい順)。フォルダーまたは未読のみで絞り込むこともできます
search_messagesメールボックス全体を全文検索します(Graph $search)
get_message1 件のメッセージを取得します。本文全体を含めることもできます
list_attachmentsメッセージの添付ファイルを一覧表示します(ID、名前、サイズ、コンテンツタイプ)
download_attachmentOUTLOOK_MCP_FILE_ROOT 配下のパスに添付ファイルをダウンロードします(既存のファイルへの上書きは拒否します)
send_mailメールを送信します
replyメッセージに返信します(全員に返信するには reply_all を指定します)
forward任意のコメントを添えて、メッセージを宛先に転送します
move_messageメッセージを別のフォルダーに移動します
copy_messageメッセージを別のフォルダーにコピーします
mark_readメッセージを既読または未読にします
flag_messageメッセージにフラグを設定または解除します
delete_messageメッセージを削除します(削除済みアイテムに移動します。元に戻せます)
permanent_deleteメッセージを完全に削除します(元に戻せません)。OUTLOOK_MCP_ALLOW_PERMANENT_DELETE=true の場合のみ使用できます
フォルダー
ツール説明
list_folders未読およびメッセージの合計数とともに、メールフォルダーを一覧表示します
create_folderメールフォルダーを作成します。親フォルダーの下に作成することもできます
rename_folderメールフォルダーの名前を変更します
delete_folderメールフォルダーを削除します(削除済みアイテムに移動します)
下書き
ツール説明
create_draft下書きメッセージを作成します(送信されません)
update_draft下書きの件名や本文を更新します
add_attachmentローカルファイル(OUTLOOK_MCP_FILE_ROOT 配下にある、通常のシンボリックリンクではないファイル)を下書きに添付します
send_draft既存の下書きを送信します
カレンダー
ツール説明
list_calendarsユーザーのカレンダーを一覧表示します
list_eventsイベントを一覧表示します。start/end(ISO 8601)が指定されている場合は、その時間帯のイベントを返します
search_eventsフリーテキストでイベントを検索します
get_event本文、参加者、オンライン会議リンクを含むイベントを1件取得します
create_event参加者やオンライン会議を任意で指定して、カレンダーイベントを作成します
update_event既存のイベントのフィールドを更新します(指定したフィールドのみ変更されます)
delete_eventカレンダーイベントを削除/キャンセルします
respond_event会議への招待に accept、decline、tentative のいずれかで回答します
find_availability指定した時間帯における、複数の人の予定の空き状況を取得します

完全削除

permanent_delete ツールは「削除済みアイテム」フォルダーを経由せず、メッセージを復元できない状態で削除します。デフォルトでは無効です。OUTLOOK_MCP_ALLOW_PERMANENT_DELETE が設定されていない場合(または false の場合)、このツールは MCP サーバーに登録されず、ツール一覧にも表示されません。

有効にするには、.mcp.json/config.toml のサーバーの環境ブロックで OUTLOOK_MCP_ALLOW_PERMANENT_DELETE=true を設定します。結果を理解している場合にのみ有効にしてください。元に戻す方法はなく、個人アカウントには「回復可能なアイテム」から復元する手段もありません。


セキュリティ

  • トークンキャッシュは認証情報です。 ~/.config/outlook-personal-mcp/token_cache.bin のファイルには、有効期間の長い更新トークンが含まれています。モード 600 で書き込まれますが、パスワードと同様に扱ってください。コミットや共有はせず、暗号化されたボリュームに保存してください。
  • データはローカルにとどまります。 サーバーは Claude Code/Codex の子プロセスとして、stdio 経由で実行されます。メールボックスの内容は MCP ホストと Microsoft Graph API の間で直接受け渡され、サードパーティのリレーは介在しません。
  • アクセスの取り消し。 アクセスを取り消すには、トークンキャッシュファイルを削除するか、https://account.microsoft.com/permissions にアクセスして Azure アプリへの同意を削除します。ポータルから Azure アプリの登録自体を削除することもできます。
  • ファイルパス。 download_attachment は OUTLOOK_MCP_FILE_ROOT 配下にのみ書き込み、既存ファイルの上書きを拒否します。add_attachment は OUTLOOK_MCP_FILE_ROOT 配下の通常ファイル(シンボリックリンクを除く)のみを読み込みます。相対パスはそのルート配下として解決されます。ルート外の絶対パスと、シンボリックリンクをたどるパスは拒否されます。どちらのツールも OUTLOOK_MCP_MAX_FILE_BYTES を適用します。ファイルシステムにアクセスするツール呼び出しを確定する前に、これらのパスを確認してください。

開発

git clone https://github.com/salahawad/outlook-personal-mcp
cd outlook-personal-mcp
uv venv && uv pip install -e ".[dev]"
uv run pytest
uv run ruff check .

プライバシーポリシー

このサーバーはすべてお使いのマシン上で実行され、データはお使いのマシンと Microsoft Graph API の間でのみ送信されます。サードパーティのリレーやテレメトリはなく、メンテナーがデータを受け取ることもありません。OAuth トークンはローカルの ~/.config/outlook-personal-mcp/token_cache.bin にキャッシュされます(モード 600)。プライバシーポリシーの全文は PRIVACY.md をご覧ください。


ライセンス

MIT — LICENSE をご覧ください。

コメント

MCP は初めてですか?

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

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