Owa Exchange Mcp について
OWA Exchange MCPは、Microsoft Exchange / OWA環境にAIエージェントを接続するMCPサーバーです。メール、カレンダー、ディレクトリ検索、空き時間、会議分析のツールを備え、認証情報とセッションCookieを暗号化します。
主な機能
- 01メールの閲覧・送信・整理
- 02カレンダーと会議の管理
- 03Active Directoryの人物検索
- 04個人または複数人の空き時間検索
- 05会議統計と連絡先分析
- 06認証情報とセッションCookieの暗号化
活用シーン
- 01Exchangeメールの検索・返信・整理
- 02会議を設定し参加者の空き時間を確認
- 03ディレクトリ内の人物を検索
- 04チームの会議頻度や関係を分析
MCP 対応
メール、カレンダー、ディレクトリ、フォルダー、空き時間、会議分析を扱う30個のExchange / OWAツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx exchange-mcp-serverEXCHANGE_OWA_URLBase URL of your OWA instance (e.g. https://owa.example.com)EXCHANGE_COOKIE_FILEPath to session cookies file (default: session-cookies.txt)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OWA Exchange MCP サーバー
あらゆる Microsoft Exchange/OWA(Outlook Web Access)環境に対応した MCP(Model Context Protocol)サーバーです。LLM エージェントが、30 個のツールを通じてメール、カレンダー、ディレクトリ検索、フォルダー、空き状況、会議分析を利用できるようにします。
OWA を公開しているオンプレミスまたはホスト型の Exchange サーバーであれば、どのサーバーでも動作します。
クイックスタート
# Copy and edit the MCP config with your OWA URL
cp .mcp.json.example .mcp.json
# One-time: set up encrypted credentials
python3 login.py --setup
# Login (opens headless browser, 2FA approval required)
python3 login.py
# Install the MCP server
pip install -e .
インストール
MCP クライアントの設定に追加します。https://owa.example.com を OWA の URL に置き換えてください。
Claude Desktop(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"exchange": {
"command": "uvx",
"args": ["exchange-mcp-server"],
"env": {
"EXCHANGE_OWA_URL": "https://owa.example.com"
}
}
}
}
Cursor(.cursor/mcp.json):
{
"mcpServers": {
"exchange": {
"command": "uvx",
"args": ["exchange-mcp-server"],
"env": {
"EXCHANGE_OWA_URL": "https://owa.example.com"
}
}
}
}
Claude Code(.mcp.json):
{
"mcpServers": {
"exchange": {
"command": "uvx",
"args": ["exchange-mcp-server"],
"env": {
"EXCHANGE_OWA_URL": "https://owa.example.com"
}
}
}
}
設定
| 変数 | 必須 | 説明 |
|---|---|---|
EXCHANGE_OWA_URL | はい | OWA インスタンスのベース URL |
EXCHANGE_COOKIE_FILE | いいえ | セッション Cookie ファイルのパス(デフォルト:session-cookies.txt) |
ログイン
オプション A:MCP ツール経由(推奨)
login ツールを使うと、MCP セッション内で認証情報の設定と認証を行えるため、別途ターミナルを使う必要はありません。
初回(設定とログイン):
login(master_password="...", username="[email protected]", password="...")
2 回目以降のログイン(保存済みの認証情報を復号):
login(master_password="...")
オプション B:CLI 経由
python3 login.py --setup # First time: save encrypted credentials
python3 login.py # Login with 2FA
どちらの方法でも、次の処理が行われます。
- OWA URL をヘッドレスブラウザーで開きます
- 認証情報を送信します
- 2FA の承認を待機します(最大 90 秒)
- 暗号化されたセッション Cookie を
session-cookies.txtに保存します
認証情報とセッション Cookie は、AES-256(PBKDF2 によるキー導出、480k 回の反復処理)で保存時に暗号化されます。
ツール(30)
メール(10)
| ツール | 説明 |
|---|---|
get_emails | フィルターを指定してフォルダー内のメールを一覧表示します |
get_email | ID を指定してメールの全文を取得します |
send_email | 新しいメールを送信します |
reply_email | メールに返信します |
forward_email | メールを転送します |
delete_email | メールを削除します |
move_email | メールを別のフォルダーに移動します |
mark_email_read | メールを既読または未読にします |
download_attachments | メールの添付ファイルをダウンロードします |
get_email_links | メール本文からハイパーリンクを抽出します |
カレンダー(7)
| ツール | 説明 |
|---|---|
get_calendar_events | 指定した期間内の予定を取得します(繰り返し予定の展開に対応) |
create_meeting | 参加者を指定して会議を作成します |
update_meeting | 既存の会議を更新します |
cancel_meeting | 会議をキャンセルし、参加者に通知します |
respond_to_meeting | 承諾、辞退、または仮承諾します |
download_event_attachments | カレンダーの予定から添付ファイルをダウンロードします |
get_event_links | 予定の説明からハイパーリンクを抽出します |
ディレクトリ(1)
| ツール | 説明 |
|---|---|
find_person | Active Directory でユーザーを検索します |
フォルダー(7)
| ツール | 説明 |
|---|---|
get_folders | 未読数とともにメールフォルダーを一覧表示します |
create_folder | 新しいメールフォルダーを作成します |
rename_folder | 既存のフォルダーの名前を変更します |
empty_folder | フォルダー内のすべてのアイテムを空にします |
delete_folder | メールフォルダーを削除します |
move_folder | フォルダーを別の親フォルダーに移動します |
check_session | OWA セッションが認証済みかどうかを確認します |
空き状況(2)
| ツール | 説明 |
|---|---|
find_free_time | カレンダーの空き時間を検索します |
find_meeting_time | 複数の人に共通する空き時間を検索します |
分析(2)
| ツール | 説明 |
|---|---|
get_meeting_stats | 複数の人の会議件数を集計します |
get_meeting_contacts | 交流マトリックス — 誰と最も多く会議をしているかを表示します |
認証(1)
| ツール | 説明 |
|---|---|
login | OWA に認証します(認証情報の設定と 2FA ログイン) |
ファイル
login.py # Browser-based 2FA login (standalone CLI)
exchange_mcp/
server.py # FastMCP server entry point
owa_client.py # OWA HTTP client
auth.py # Async login logic (shared by MCP tool)
tools/
email.py # Email tools
calendar.py # Calendar tools
people.py # Directory search
folders.py # Folder management & session check
availability.py # Free time / meeting time
analytics.py # Meeting stats & contacts
auth.py # Login tool
pyproject.toml # Package config
警告
Exchange/OWA の環境ごとに認証の設定は異なります。2FA(プッシュ通知、TOTP、SMS)が必要な環境もあれば、単要素認証や SSO を使用する環境もあります。このプロジェクトのログイン処理(login.py と exchange_mcp/auth.py)は、特定の 2FA フロー(モバイルプッシュ承認)を想定して記述されています。OWA サーバーが異なる 2FA 方式を使用している場合、または 2FA を使用していない場合は、環境に合わせてログイン処理を変更または削除する必要があります。
セキュリティ
- 認証情報とセッション Cookie は AES-256-Fernet で暗号化されます
- マスターパスワードは保存されません
- 鍵の導出には、480,000 回の反復処理を行う PBKDF2 を使用します
- 認証情報ファイルと Cookie ファイルの権限は
0600です - Cookie はメモリ上でのみ復号され、平文としてディスクに書き込まれることはありません(MCP ツール経由)
- セッション Cookie は OWA サーバー以外に送信されません
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。