Modular Outlook MCP Server について
この MCP サーバーは、Microsoft Graph API を通じて Claude が Outlook のデータにアクセスできるようにします。会話の中でメールやカレンダーを扱いたい Microsoft 365 ユーザーを対象とし、OAuth 認証には Azure アプリ登録を使用します。
主な機能
- 01メールの一覧表示、検索、閲覧、送信
- 02招待の承諾と辞退を含むカレンダーイベントの管理
- 03メールフォルダーと受信トレイルールの管理
- 04シミュレーションデータを返すテストモード
活用シーン
- 01Claude による Outlook メールの検索と整理
- 02会話からのカレンダーイベントの作成、承諾、削除
- 03実際の API を呼び出さない連携のテスト
MCP 対応
本プロジェクトは MCP サーバーであり、Outlook のメールとカレンダーのツールを MCP クライアントに公開します。認証は Microsoft Graph API を通じて行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
M365 アシスタント MCP サーバー
Microsoft Graph API と Power Automate API を通じて、Claude と Microsoft 365 サービスを接続する包括的な MCP(Model Context Protocol)サーバーです。
対応サービス
- Outlook - メール、カレンダー、フォルダー、ルール
- OneDrive - ファイル、フォルダー、検索、共有
- Power Automate - フロー、環境、実行履歴
ディレクトリ構成
├── index.js # Main entry point
├── config.js # Configuration settings
├── auth/ # Authentication modules
│ ├── index.js # Authentication exports
│ ├── token-manager.js # Token storage and refresh (Graph + Flow)
│ └── tools.js # Auth-related tools
├── calendar/ # Calendar functionality
│ ├── index.js # Calendar exports
│ ├── list.js # List events
│ ├── create.js # Create event
│ ├── delete.js # Delete event
│ ├── cancel.js # Cancel event
│ ├── accept.js # Accept event
│ └── decline.js # Decline event
├── email/ # Email functionality
│ ├── index.js # Email exports
│ ├── list.js # List emails
│ ├── search.js # Search emails
│ ├── read.js # Read email
│ ├── send.js # Send email
│ └── mark-as-read.js # Mark email read/unread
├── folder/ # Folder functionality
│ ├── index.js # Folder exports
│ ├── list.js # List folders
│ ├── create.js # Create folder
│ └── move.js # Move emails
├── rules/ # Email rules functionality
│ ├── index.js # Rules exports
│ ├── list.js # List rules
│ └── create.js # Create rule
├── onedrive/ # OneDrive functionality
│ ├── index.js # OneDrive exports
│ ├── list.js # List files/folders
│ ├── search.js # Search files
│ ├── download.js # Get download URL
│ ├── upload.js # Simple upload (<4MB)
│ ├── upload-large.js # Chunked upload (>4MB)
│ ├── share.js # Create sharing link
│ └── folder.js # Create/delete folders
├── power-automate/ # Power Automate functionality
│ ├── index.js # Power Automate exports
│ ├── flow-api.js # Flow API client
│ ├── list-environments.js # List environments
│ ├── list-flows.js # List flows
│ ├── run-flow.js # Trigger flow
│ ├── list-runs.js # Run history
│ └── toggle-flow.js # Enable/disable flow
└── utils/ # Utility functions
├── graph-api.js # Microsoft Graph API helper
├── odata-helpers.js # OData query building
└── mock-data.js # Test mode data
機能
- 認証:Microsoft Graph API(Power Automate 用の Flow API を含む)による OAuth 2.0 認証
- メール管理:メールの一覧表示、検索、読み取り、送信、整理
- カレンダー管理:カレンダーイベントの一覧表示、作成、承諾、辞退、削除
- OneDrive 連携:ファイルの一覧表示、検索、アップロード、ダウンロード、共有
- Power Automate:環境/フローの一覧表示、フローの実行、実行履歴の表示
- モジュール構成:保守性を高めるための明確な関心の分離
- テストモード:実際の API 呼び出しを行わない、テスト用のシミュレートされた応答
利用可能なツール
Outlook(メールとカレンダー)
| ツール | 説明 |
|---|---|
list-emails | 受信トレイの最近のメールを一覧表示 |
search-emails | フィルターを指定してメールを検索 |
read-email | メールの内容を読み取り |
send-email | 新しいメールを送信 |
mark-as-read | メールを既読/未読に設定 |
list-events | カレンダーイベントを一覧表示 |
create-event | カレンダーイベントを作成 |
accept-event | イベントの招待を承諾 |
decline-event | イベントの招待を辞退 |
delete-event | カレンダーイベントを削除 |
list-folders | メールフォルダーを一覧表示 |
create-folder | メールフォルダーを作成 |
move-emails | メールをフォルダー間で移動 |
list-rules | 受信トレイルールを一覧表示 |
create-rule | 受信トレイルールを作成 |
OneDrive
| ツール | 説明 |
|---|---|
onedrive-list | パス内のファイルを一覧表示 |
onedrive-search | クエリでファイルを検索 |
onedrive-download | ダウンロード URL を取得 |
onedrive-upload | 小さなファイル(4 MB 未満)をアップロード |
onedrive-upload-large | 分割アップロード(4 MB 超) |
onedrive-share | 共有リンクを作成 |
onedrive-create-folder | フォルダーを作成 |
onedrive-delete | ファイルまたはフォルダーを削除 |
Power Automate
| ツール | 説明 |
|---|---|
flow-list-environments | Power Platform 環境を一覧表示 |
flow-list | 環境内のフローを一覧表示 |
flow-run | 手動フローを実行 |
flow-list-runs | フローの実行履歴を取得 |
flow-toggle | フローを有効化/無効化 |
クイックスタート
- 依存関係をインストール:
npm install - Azure を設定:Azure Portal でアプリを登録します(詳しい手順は以下を参照)
- 環境を設定:
.env.exampleを.envにコピーし、Azure の認証情報を追加します - Claude を設定:サーバーのパスを指定して、Claude Desktop の設定を更新します
- 認証サーバーを起動:
npm run auth-server - 認証:Claude で認証ツールを使い、OAuth URL を取得します
- 利用を開始:Claude を通じて M365 のデータにアクセスできます!
インストール
前提条件
- Node.js 14.0.0 以降
- npm または yarn パッケージマネージャー
- アプリ登録用の Azure アカウント
依存関係のインストール
npm install
Azure アプリの登録と設定
アプリ登録
- Azure Portal を開きます
- 「App registrations」を検索します
- 「New registration」をクリックします
- 名前:「M365 MCP Server」
- アカウントの種類:「Accounts in any organizational directory and personal Microsoft accounts」
- リダイレクト URI:Web →
http://localhost:3333/auth/callback - 「Register」をクリックします
.envファイル用に「Application (client) ID」をコピーします
アプリのアクセス許可
- [管理]の下にある「API permissions」に移動します
- 「Add a permission」→「Microsoft Graph」→「Delegated permissions」をクリックします
- 次のアクセス許可を追加します:
offline_accessUser.ReadMail.Read、Mail.ReadWrite、Mail.SendCalendars.Read、Calendars.ReadWriteFiles.Read、Files.ReadWrite
- 「Add permissions」をクリックします
Power Automate の場合(任意):
- Flow API スコープを含む、追加の Azure AD 構成が必要です
- 詳細については、以下の Power Automate セクションをご覧ください
クライアントシークレット
- 「Certificates & secrets」→「Client secrets」に移動します
- 「New client secret」をクリックします
- 説明を追加し、有効期限を選択します
- VALUE をコピーします(Secret ID ではありません)
構成
1. 環境変数
cp .env.example .env
.env を編集します:
# Get these values from Azure Portal > App Registrations > Your App
MS_CLIENT_ID=your-application-client-id-here
MS_CLIENT_SECRET=your-client-secret-VALUE-here
MS_TENANT_ID=your-tenant-id-here
USE_TEST_MODE=false
重要な注意事項:
.envファイルではMS_CLIENT_IDとMS_CLIENT_SECRETを使用します/commonエンドポイントのエラーを避けるため、シングルテナントアプリではMS_TENANT_IDを設定します- Claude Desktop の構成では、
OUTLOOK_CLIENT_IDとOUTLOOK_CLIENT_SECRETを使用します - クライアントシークレットの VALUE を必ず使用してください。Secret ID は使用しないでください
2. Claude Desktop の構成
Claude Desktop の構成に追加します:
{
"mcpServers": {
"m365-assistant": {
"command": "node",
"args": ["/path/to/outlook-mcp/index.js"],
"env": {
"USE_TEST_MODE": "false",
"OUTLOOK_CLIENT_ID": "your-client-id",
"OUTLOOK_CLIENT_SECRET": "your-client-secret"
}
}
}
}
認証
Graph API(Outlook + OneDrive)
- 認証サーバーを起動します:
npm run auth-server - Claude で
authenticateツールを使用します - 表示された URL にアクセスしてサインインします
- トークンは
~/.outlook-mcp-tokens.jsonに保存されます
Power Automate(任意)
Power Automate には、Flow API スコープを含む別のトークンが必要です。https://service.flow.microsoft.com//.default スコープに対する追加の Azure AD アクセス許可を構成してください。
制限事項:
- ソリューション対応フローのみアクセスできます
- API 経由で実行できるのは、手動トリガーのフローのみです
- ほとんどの操作で環境 ID が必要です
トラブルシューティング
よくある問題
「Cannot find module」
npm install
「Port 3333 in use」
npx kill-port 3333
npm run auth-server
「Invalid client secret」(AADSTS7000215)
- Secret ID ではなく、シークレットの VALUE を使用してください
「Authentication required」
~/.outlook-mcp-tokens.jsonを削除して、再認証してください
テスト
# Run with MCP Inspector
npm run inspect
# Run in test mode (mock data)
npm run test-mode
# Run Jest tests
npm test
サーバーの拡張
- 新しいモジュールディレクトリを作成します
- ツールハンドラーを個別のファイルに実装します
- モジュールのインデックスからツール定義をエクスポートします
index.jsのTOOLS配列にインポートして追加します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
