はじめに
Claude Desktop から Outlook(クラシック版)のメール・カレンダー・タスクなどを自然言語で操作できたら便利だと思い、outlook-classic-mcp を導入してみました。
このMCPサーバーの特徴は、Microsoft Graph APIやAzureアプリ登録が不要という点です。ローカルにインストール済みのOutlook(Classic)のCOMインターフェースに pywin32 経由で直接アクセスするため、OAuth周りの面倒な設定が一切いりません。
ただし公式READMEの手順どおりに進めたところ、何箇所かハマりポイントがあったため、実際につまずいた内容も含めて導入手順をまとめます。
前提条件
- Windows 10 / 11
-
Outlook デスクトップ(クラシック版) -
OUTLOOK.EXE。いわゆる「新しいOutlook」(olk.exe)はCOMインタフェースを持たないため非対応 - Python 3.10以上(後述のインストーラーが
uv経由でPython 3.11を自動取得してくれる)
Outlookを事前に起動しておく必要はありません。サーバー初回呼び出し時に自動起動されます。
できること
以下のカテゴリにわたって、合計31個のツールが提供されます。
| カテゴリ | 主な機能 |
|---|---|
| メール | 一覧・検索・取得・送信・返信・転送・移動・削除・既読管理・添付保存 |
| フォルダ | 一覧・作成 |
| カレンダー | 一覧・取得・作成・更新・削除・出欠回答 |
| 連絡先 | 一覧・検索・取得・名前解決 |
| タスク | 一覧・作成・完了 |
| カテゴリ | 一覧・設定 |
| ルール | 一覧・有効/無効切替 |
| 不在設定 | 取得 |
| アカウント | 疎通確認 |
インストール手順
READMEに記載されている公式な導入方法は、次の2つです。
-
Option 1 — Agent plugin:
uvx経由でPyPIから直接実行される方式。git cloneもpip installも不要で、Claude Codeのプラグイン機構を使う(Claude Code向けの手順として案内されている) -
Option 2 — PyPI + uv: 任意のMCPクライアント向け。
uv pip install --system outlook-classic-mcpの後、クライアント自動登録スクリプトを実行する
筆者はClaude Desktop単体での利用が目的だったため、汎用的な Option 2 を試しましたが、ここでエラーに遭遇しました。最終的に動作したのは、READMEの本文には明記されていない、リポジトリに含まれる補助スクリプト(install.bat)を使う方法でした。同じようにハマる方のために、遭遇した順に紹介します。
試した方法:PyPI + uv(Option 2)
READMEの案内どおり、まずこちらを試しました。
# uv(Astral社のPythonパッケージおよびプロジェクトマネージャー)を導入
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# パッケージインストール
uv pip install --system outlook-classic-mcp
# クライアント自動登録スクリプト実行
python -m outlook_mcp.scripts.install_to_clients
ここで以下のエラーが発生しました。
ModuleNotFoundError: No module named 'outlook_mcp.scripts'
原因: エラーメッセージが outlook_mcp ではなく outlook_mcp.scripts を指している点がヒントです。これは outlook_mcp パッケージ自体はインポートできているが、scripts サブモジュールが存在しないことを意味します。
リポジトリの構成を確認すると、scripts/install_to_clients.py は src/outlook_mcp/ の外側に置かれたトップレベルディレクトリでした。
Outlook-Classic-MCP/
├── scripts/ ← install_to_clients.py はここ
├── src/outlook_mcp/ ← PyPI配布物に含まれるのはここだけ
PyPI配布用のwheel/sdistは通常 src/outlook_mcp/ 配下のみをパッケージングするため、PyPI経由でインストールした場合はこのスクリプトの実体が存在しません。
実際に動作した代替手順:git clone + install.bat(現在のREADME本文には未記載)
リポジトリ直下には install.bat という補助スクリプトが用意されており、これを使うと一般利用者向けのセットアップからクライアント登録までを一括で行えました。
この
install.batを使った手順は、過去のREADMEには「Option 3 — From source (development)」として正式に記載されていました。PyPIのoutlook-classic-mcpバージョン0.2.1のプロジェクトページ(https://pypi.org/project/outlook-classic-mcp/0.2.1/)に、リリース当時のREADMEが残っており、そこで確認できます。
git clone https://github.com/anasahmed07/Outlook-Classic-MCP.git
cd Outlook-Classic-MCP
install.bat
install.bat は以下を自動で行います。
-
uvのインストール(未導入の場合) -
.venv\の作成(Python 3.11) - パッケージのeditableインストール(
uv pip install -e .)— ソースコードをコピーせず直接参照する形でインストールする方式 - pywin32のtypelibキャッシュの事前生成 — Outlookが持つ機能一覧の定義ファイルを事前に解析・保存しておくことで、初回アクセスを高速化する処理
- クライアント自動登録スクリプトの起動
.venv とは「仮想環境(virtual environment)」の略で、このプロジェクト専用に隔離されたPython実行環境です。PC全体で共有しているシステムのPythonとは別に、outlook-classic-mcp フォルダの中だけに独立したPython本体とライブラリ一式が作られます。これにより、他のPythonプロジェクトのバージョンやライブラリ構成に影響を与えずに済みます。
実行完了後、以下のようなサマリーが表示されます。
========================================================
INSTALL COMPLETE
========================================================
Standalone smoke test:
"C:\...\outlook-classic-mcp\.venv\Scripts\python.exe" -m outlook_mcp
MCP Inspector (forward-slash paths to avoid Inspector backslash bug):
npx @modelcontextprotocol/inspector "C:/.../outlook-classic-mcp/.venv/Scripts/python.exe" -m outlook_mcp
Re-run client install at any time:
"C:\...\outlook-classic-mcp\.venv\Scripts\python.exe" "C:\...\outlook-classic-mcp\scripts\install_to_clients.py"
このスクリプトはインストール済みのMCPクライアントを自動検出し、チェックボックス形式のメニューを表示します。筆者の環境ではPCに Claude Desktopのみがインストールされていたため、選択肢は1件だけ表示されました(Claude Code や Cursor がインストールされていれば、その分だけ選択肢も増えます)。
Select which clients to register outlook-mcp with:
[ ] 1. Claude Desktop C:\Users\you\AppData\Roaming\Claude\claude_desktop_config.json
ここが2つ目のハマりポイントでした。番号を入力してチェックを [x] にしてからEnterで確定しないと、何も登録されずに終了してしまいます。何も選択せずEnterを押すと一見成功したように見えて、実際には設定ファイルへの書き込みが行われません。
config直接編集でのハマりポイント
環境によっては、自動登録スクリプトが書き込む先と、実際にClaude Desktopアプリが読み込む設定ファイルの場所が異なるケースがあります。特に Microsoft Store版(MSIXパッケージ版)のClaude Desktop を使っている場合、設定ファイルは以下のようなサンドボックス化されたパスに存在します。
C:\Users\<ユーザー名>\AppData\Local\Packages\Claude_<パッケージID>\LocalCache\Roaming\Claude\claude_desktop_config.json
このファイルは単なるMCPサーバー定義だけでなく、Claude Desktopアプリの内部設定(preferences、coworkUserFilesPath など)も同居しています。ここに mcpServers を手動で追記する際、JSON構文を壊しやすいのが3つ目のハマりポイントでした。
NG例(トップレベルオブジェクトが二重になっている):
{
"coworkUserFilesPath": "...",
"preferences": { ... },
{
"mcpServers": {
"outlook": { ... }
}
}
}
正しくは、既存の preferences オブジェクトと同じ階層に mcpServers キーを追加します。
{
"coworkUserFilesPath": "...",
"preferences": {
...
},
"mcpServers": {
"outlook": {
"command": "C:\\Users\\you\\...\\outlook-classic-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "outlook_mcp"]
}
}
}
編集前に必ずファイルをバックアップしてから作業することを推奨します。
疎通確認
Claude Desktopを完全終了(タスクトレイから終了、またはタスクマネージャーで Claude.exe を終了)してから再起動し、設定画面の「開発者」→「ローカルMCPサーバー」でステータスが running になっていれば設定は成功です。
実際にOutlookと通信できているかは、チャットで以下のように聞くだけで確認できます。
outlook_whoami を実行して
サインイン中のメールアドレス・アカウント名が返ってくれば疎通成功です。初回はOutlookのCOM起動待ちで数秒〜15秒程度かかることがあります。
実用的な使用例
疎通確認ができたら、以下のようなプロンプトで実際に使えます。
今日届いた未読メールを一覧で見せて、それぞれ1行で要約して
先週、田中さんから届いたメールで「見積」という単語を含むものを探して
来週水曜10:00-11:00で「進捗確認MTG」という予定を作成して
未完了のOutlookタスクを期限順に並べて見せて
現在設定されているメール振り分けルールを一覧で見せて、どれが無効になっているか教えて
注意点
- 送信・削除・ルール変更などの操作は、実行前に必ず内容を確認してから許可すること。AIが「これから削除します」のように確認を求めてきたとき、内容を見ずに毎回OKするのは避けたい
- 特にメールルールの有効/無効切り替えは、確認や取り消しの猶予なく即座に本番のOutlookへ反映される。たとえば無効になっていた振り分けルールをAIが誤って有効化すると、その瞬間からメールが実際に自動振り分けされ始めてしまう。切り替え作業をお願いする前に、まず「現在のメールルールを一覧で見せて」とチャットで聞き、対象のルール名や現在の状態(有効/無効)を自分の目で確認してから、切り替えを指示するのが安全
-
Exchange環境(Microsoft 365 / 社内Exchangeサーバー)を利用している場合、送信者アドレスが
EX:/O=...のようなExchange識別名で返ってくることがあるため、完全一致より部分一致で検索する方が安定する(POP/SMTP環境のOutlookでは基本的に発生しない) - 企業のセキュリティポリシーが厳しい環境(VDIなど)では、Outlookの「プログラムによるアクセス」警告や、UAC/グループポリシーによるCOMアクティベーションのブロックで送信系操作が失敗することがある。まずは読み取り系の操作から試すのが安全
- このMCPサーバーはローカル専用設計。今回紹介した手順(
git clone→install.bat→ Claude Desktopのconfig登録)どおりに使う分には、通信は同じPC内だけで完結しており安全。ただしngrokなどのトンネリングツールやポートフォワーディング設定を使って、外部や社内ネットワークの他端末からアクセスできる状態にすることは絶対に避けること。このサーバーには認証の仕組みが一切ないため、ネットワーク越しに公開すると誰でも認証なしであなたのメールを操作できてしまう
まとめ
outlook-classic-mcp はAzure登録不要でOutlookをAIから操作できる手軽さが魅力ですが、READMEのOption 2(PyPI経由)は現時点でクライアント自動登録スクリプトが機能しない状態でした。確実に導入するなら、リポジトリに含まれる install.bat を使うのが実用的でした。また、インストーラーのチェックボックス選択を確実に行うこと、手動でconfigを編集する場合はJSON構文(特にMicrosoft Store版のサンドボックス化された設定ファイルパス)に注意することが、スムーズな導入のポイントです。
参考リンク
- anasahmed07/Outlook-Classic-MCP (GitHub)
- outlook-classic-mcp (PyPI)
- outlook-classic-mcp 0.2.1 (PyPI アーカイブ - Option 3の記載が残る旧バージョン)
著者: K.T (株式会社ウィズツーワン)
