mcp-outlook について
mcp-outlookは、Microsoft Graph経由でOutlookのメール、OneDriveファイル、カレンダーを扱うエージェント向けのMCPサーバーです。初期状態は読み取り専用で、送信、編集、削除は設定可能な制御で制限されます。
主な機能
- 01メールボックスのメール一覧、検索、閲覧
- 02メールの下書き、送信、返信、整理
- 03OneDriveファイルの閲覧、検索、アップロード、管理
- 04カレンダー、予定、空き状況の確認
- 05アクセス制御による送信と削除の制限
活用シーン
- 01メールボックス内のメール検索
- 02メールの作成・送信とフォルダー整理
- 03OneDriveファイルの検索やアップロード
- 04空き状況の確認と予定の管理
MCP 対応
MCPクライアントに、Outlookメール、OneDriveファイル、カレンダーを操作するMicrosoft Graphツールを提供します。書き込みや破壊的な操作はアクセスモードと設定で制御されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @dockndevai/mcp-outlookOUTLOOK_CLIENT_IDEntra (Azure AD) app (client) id. For browser sign-in, register a public client with redirect URI http://localhost.OUTLOOK_TENANT_IDDirectory tenant: a tenant id, or common | organizations | consumers (default common).OUTLOOK_CLIENT_SECRETシークレットApp secret for app-only (client-credentials) auth. Omit to use interactive browser sign-in.OUTLOOK_TOKENシークレットA pre-obtained Microsoft Graph bearer token (alternative to browser or app-only auth).OUTLOOK_USERTarget mailbox (user id or UPN) for app-only auth. Omit to use the signed-in user's mailbox (/me).OUTLOOK_MODEAccess mode: read-only | read-write | admin. Starts read-only; writes need read-write.OUTLOOK_ALLOW_SENDSet true to permit sending mail (send/reply/forward). Off by default.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-outlook
デフォルトで安全な、Microsoft Graph 経由で Microsoft Outlook のメールを扱う Model Context Protocol サーバーです。エージェントがメールボックスを読み取り、操作できます。フォルダーやメッセージの一覧表示、全文 検索、本文と添付ファイルのメタデータの読み取り、連絡先の一覧表示に加え、より高いモードでは、下書きの作成、送信/返信/転送、既読設定、メッセージの移動や削除が可能です。また、OneDrive ファイルの管理(閲覧、検索、ダウンロード、アップロード、フォルダー作成、移動/名前変更、削除)や、カレンダーの管理(カレンダーとイベントの一覧表示、空き時間の確認、条件付きでのイベント作成、更新、返信、キャンセル、削除)も行えます。
**ブラウザーでのサインイン:**初回実行時にブラウザーで Microsoft のサインインページが開き、その後トークンがキャッシュされ、サイレントに更新されます。サーバーがパスワードを受け取ることはありません。
dockndevai MCP サーバースイートの一部です。すべてのサーバーで、共通のガバナンスモデルを採用しています。
エージェントに提供する機能
サーバーは 読み取り専用 で起動します(デフォルトで安全を参照)。より高機能なツールは、モードを引き上げた場合にのみ登録されます。
| ツール | 用途 | 必要なモード |
|---|---|---|
whoami | 使用中のメールボックスを確認する | 読み取り専用 |
list_folders | 未読数と合計数を含むメールフォルダーの一覧表示 | 読み取り専用 |
list_messages | 最近のメッセージ(フォルダー別、未読のみ) | 読み取り専用 |
search_messages | メールボックス全体の全文検索 | 読み取り専用 |
get_message | 本文全体と宛先を含む1件のメッセージ | 読み取り専用 |
list_attachments | 添付ファイルのメタデータ(バイトデータは返しません) | 読み取り専用 |
list_contacts | 個人の連絡先 | 読み取り専用 |
create_draft | 送信せずに下書きを準備する | 読み書き |
send_mail | 新しいメールを作成して送信する | 読み書き + OUTLOOK_ALLOW_SEND |
reply_mail / forward_mail | メッセージへの返信(全員に返信)/転送 | 読み書き + OUTLOOK_ALLOW_SEND |
mark_read | 既読/未読に設定する(元に戻せます) | 読み書き |
move_message | 別のフォルダーに移動する(元に戻せます) | 読み書き |
delete_message | 削除する(削除済みアイテムに移動) | 管理者 + OUTLOOK_ALLOW_DELETE |
list_drive_items / get_drive_item | OneDrive のファイルとフォルダーを閲覧する | 読み取り専用 |
search_drive_files | OneDrive を検索する | 読み取り専用 |
download_drive_file | OneDrive ファイルのテキストを読み取る | 読み取り専用 |
upload_drive_file | OneDrive ファイルを作成/上書きする | 読み書き |
create_drive_folder / move_drive_item | フォルダーの作成/移動・名前変更 | 読み書き |
delete_drive_item | OneDrive アイテムを削除する(→ ごみ箱) | 管理者 + OUTLOOK_ALLOW_DELETE |
list_calendars / list_events / get_event | カレンダーとイベントを閲覧する(期間を指定すると繰り返し予定も展開されます) | 読み取り専用 |
get_free_busy | スケジュール前に人々の空き状況を確認する | 読み取り専用 |
create_event / update_event | 会議を作成/更新する(出席者に招待を送信) | 読み書き + OUTLOOK_ALLOW_SEND |
respond_to_event | 招待を承諾/辞退/仮承諾する | 読み書き + OUTLOOK_ALLOW_SEND |
cancel_event / delete_event | 会議をキャンセル/イベントを削除する | 管理者 + OUTLOOK_ALLOW_DELETE |
最終的には、Microsoft アカウントで許可されたスコープによってアクセスが制御されます。 カレンダーツールには
Calendars.ReadWrite委任スコープが必要です(デフォルト設定に含まれます)。トークンでこのスコープへの同意が得られていない場合、 Graph は 403 を返します。スイートのモード/フラグは、Microsoft レベルの制御に対する多層防御です。OUTLOOK_SCOPESでスコープを制限できます(例:Calendars.ReadWriteを削除する、または読み取り専用にCalendars.Readを使用する)。
インストール
npx -y @dockndevai/mcp-outlook
Entra(Azure AD)のアプリ登録が必要です。既定のブラウザーサインインを使用する場合は、パブリッククライアントを登録し、リダイレクト URI http://localhost(プラットフォーム:モバイルとデスクトップ アプリケーション)を追加して、そのアプリケーション(クライアント)IDを OUTLOOK_CLIENT_ID として使用します。委任された Mail.Read(メールの送信や整理を行う場合は Mail.Send/Mail.ReadWrite も)を付与してください。対話型の使用では、クライアントシークレットは不要です。
自動化を優先しますか? 代わりにアプリ専用認証を使用します。OUTLOOK_CLIENT_SECRET + OUTLOOK_TENANT_ID + OUTLOOK_USER を設定してください(認証を参照)。
設定
{
"mcpServers": {
"outlook": {
"command": "npx",
"args": ["-y", "@dockndevai/mcp-outlook"],
"env": {
"OUTLOOK_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
"OUTLOOK_TENANT_ID": "common",
"OUTLOOK_MODE": "read-only"
}
}
}
}
初回使用時に、サーバーはブラウザーを開いてサインインし、トークンを ~/.mcp-outlook/token.json(0600)にキャッシュします。以降の実行では、サイレントに更新されます。
Claude Code/Cursor/Codex/VS Code/Windsurf の設定例については docs/CLIENTS.md を、サポート対象のすべての変数については .env.example を参照してください。
認証
認証モードは自動的に選択されます(OUTLOOK_AUTH で上書きできます)。
- interactive(既定) —
OUTLOOK_CLIENT_IDのみ設定します。ループバックリダイレクトを使用した認可コード + PKCE 方式です。ブラウザーが開き、一度承認すると、アクセス+リフレッシュトークンがディスクにキャッシュされます。サインインしたユーザーのメールボックス(/me)を操作します。サーバーがパスワードを扱うことはありません。 - client-credentials(アプリ専用) —
OUTLOOK_CLIENT_SECRETが設定されている場合に使用します。サーバーがアプリトークンを取得します。アプリトークンにはサインインしたユーザーが含まれないため、OUTLOOK_TENANT_IDとOUTLOOK_USER(操作対象のメールボックス)が必要です。管理者の同意を得て、アプリに application Mail 権限を付与してください。 - token — 事前に取得した Graph ベアラートークンを
OUTLOOK_TOKENに設定します。トークンの有効期間はご自身で管理してください。
デフォルトで安全
アクセスモデルは src/security.ts で適用されます。これは Graph トークン自体のスコープ/ロールに加えた、多層防御です。
OUTLOOK_MODE—read-only(既定)→read-write→admin。モードで機能が許可されている場合にのみ、ツールが登録されます。読み取り専用では 7 つの読み取りツールが利用でき、下書き/移動にはread-write、削除にはadminが必要です。OUTLOOK_ALLOW_SEND— メールの送信(送信/返信/転送)は取り消せないため、read-writeに加えてこのフラグも必要です。read-writeでは常に下書きを作成できます。送信するまでは、メールボックスから何も送信されません。OUTLOOK_ALLOW_DELETE— 削除にはadminモードに加えてこのフラグが必要です。OUTLOOK_FOLDER_ALLOWLIST/OUTLOOK_PROTECTED_FOLDERS— 書き込み先/移動先にできるフォルダーを制限します。読み取りは可能でも変更は禁止するフォルダー(例:sentitems、archive)を指定します。- 対話型の確認 — クライアントが MCP のエリシテーションに対応している場合、メールの送信とメッセージの削除は一時停止し、実行前に人間の承認を求めます。エリシテーションに対応していないクライアントでは、
OUTLOOK_ALLOW_SEND/OUTLOOK_ALLOW_DELETEのゲートが適用されます。 OUTLOOK_DRY_RUN— 書き込みを検証してログに記録しますが、実行はしません。OUTLOOK_AUDIT_LOG— 保護対象の操作ごとに JSON 監査行を stderr に出力します(既定で有効)。- 添付ファイルのデータは返されません —
list_attachmentsが返すのはメタデータのみです。
SECURITY.md を参照してください。
開発
npm install
npm run build
# introspect the tool list without signing in (uses a fake token, no network):
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | OUTLOOK_TOKEN=x node dist/index.js
npm test
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。