mcpField
M
Modular Outlook MCP Server

Modular Outlook MCP Server

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

Modular Outlook MCP Server について

この MCP サーバーは、Microsoft Graph API を通じて Claude が Outlook のデータにアクセスできるようにします。会話の中でメールやカレンダーを扱いたい Microsoft 365 ユーザーを対象とし、OAuth 認証には Azure アプリ登録を使用します。

主な機能

  1. 01メールの一覧表示、検索、閲覧、送信
  2. 02招待の承諾と辞退を含むカレンダーイベントの管理
  3. 03メールフォルダーと受信トレイルールの管理
  4. 04シミュレーションデータを返すテストモード

活用シーン

  1. 01Claude による Outlook メールの検索と整理
  2. 02会話からのカレンダーイベントの作成、承諾、削除
  3. 03実際の API を呼び出さない連携のテスト

MCP 対応

本プロジェクトは MCP サーバーであり、Outlook のメールとカレンダーのツールを MCP クライアントに公開します。認証は Microsoft Graph API を通じて行います。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"outlook": {
"command": "npx",
"args": [
"-y",
"kill-port"
]
}
}
}
起動コマンドnpx -y kill-port

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

パッケージ
npmkill-port

ツール

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

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

詳細

MseeP.ai セキュリティ評価バッジ

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-environmentsPower Platform 環境を一覧表示
flow-list環境内のフローを一覧表示
flow-run手動フローを実行
flow-list-runsフローの実行履歴を取得
flow-toggleフローを有効化/無効化

クイックスタート

  1. 依存関係をインストール:npm install
  2. Azure を設定:Azure Portal でアプリを登録します(詳しい手順は以下を参照)
  3. 環境を設定:.env.example を .env にコピーし、Azure の認証情報を追加します
  4. Claude を設定:サーバーのパスを指定して、Claude Desktop の設定を更新します
  5. 認証サーバーを起動:npm run auth-server
  6. 認証:Claude で認証ツールを使い、OAuth URL を取得します
  7. 利用を開始:Claude を通じて M365 のデータにアクセスできます!

インストール

前提条件
  • Node.js 14.0.0 以降
  • npm または yarn パッケージマネージャー
  • アプリ登録用の Azure アカウント
依存関係のインストール
npm install

Azure アプリの登録と設定

アプリ登録
  1. Azure Portal を開きます
  2. 「App registrations」を検索します
  3. 「New registration」をクリックします
  4. 名前:「M365 MCP Server」
  5. アカウントの種類:「Accounts in any organizational directory and personal Microsoft accounts」
  6. リダイレクト URI:Web → http://localhost:3333/auth/callback
  7. 「Register」をクリックします
  8. .env ファイル用に「Application (client) ID」をコピーします
アプリのアクセス許可
  1. [管理]の下にある「API permissions」に移動します
  2. 「Add a permission」→「Microsoft Graph」→「Delegated permissions」をクリックします
  3. 次のアクセス許可を追加します:
    • offline_access
    • User.Read
    • Mail.Read、Mail.ReadWrite、Mail.Send
    • Calendars.Read、Calendars.ReadWrite
    • Files.Read、Files.ReadWrite
  4. 「Add permissions」をクリックします

Power Automate の場合(任意):

  • Flow API スコープを含む、追加の Azure AD 構成が必要です
  • 詳細については、以下の Power Automate セクションをご覧ください
クライアントシークレット
  1. 「Certificates & secrets」→「Client secrets」に移動します
  2. 「New client secret」をクリックします
  3. 説明を追加し、有効期限を選択します
  4. 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)
  1. 認証サーバーを起動します:npm run auth-server
  2. Claude で authenticate ツールを使用します
  3. 表示された URL にアクセスしてサインインします
  4. トークンは ~/.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

サーバーの拡張

  1. 新しいモジュールディレクトリを作成します
  2. ツールハンドラーを個別のファイルに実装します
  3. モジュールのインデックスからツール定義をエクスポートします
  4. index.js の TOOLS 配列にインポートして追加します

コメント

MCP は初めてですか?

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

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