mcpField
M
mcp-outlook

mcp-outlook

ローカル
github.com/dockndevaiコミュニケーション03 日前に更新

mcp-outlook について

mcp-outlookは、Microsoft Graph経由でOutlookのメール、OneDriveファイル、カレンダーを扱うエージェント向けのMCPサーバーです。初期状態は読み取り専用で、送信、編集、削除は設定可能な制御で制限されます。

主な機能

  1. 01メールボックスのメール一覧、検索、閲覧
  2. 02メールの下書き、送信、返信、整理
  3. 03OneDriveファイルの閲覧、検索、アップロード、管理
  4. 04カレンダー、予定、空き状況の確認
  5. 05アクセス制御による送信と削除の制限

活用シーン

  1. 01メールボックス内のメール検索
  2. 02メールの作成・送信とフォルダー整理
  3. 03OneDriveファイルの検索やアップロード
  4. 04空き状況の確認と予定の管理

MCP 対応

MCPクライアントに、Outlookメール、OneDriveファイル、カレンダーを操作するMicrosoft Graphツールを提供します。書き込みや破壊的な操作はアクセスモードと設定で制御されます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"dockndevai-mcp-outlook": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-outlook"
],
"env": {
"OUTLOOK_CLIENT_ID": "<OUTLOOK_CLIENT_ID>",
"OUTLOOK_TENANT_ID": "<OUTLOOK_TENANT_ID>",
"OUTLOOK_CLIENT_SECRET": "<OUTLOOK_CLIENT_SECRET>",
"OUTLOOK_TOKEN": "<OUTLOOK_TOKEN>",
"OUTLOOK_USER": "<OUTLOOK_USER>",
"OUTLOOK_MODE": "<OUTLOOK_MODE>",
"OUTLOOK_ALLOW_SEND": "<OUTLOOK_ALLOW_SEND>"
}
}
}
}
起動コマンドnpx -y @dockndevai/mcp-outlook
設定が必要な環境変数
OUTLOOK_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@dockndevai/mcp-outlook0.4.1

ツール

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

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

詳細

mcp-outlook

npm CI licence

デフォルトで安全な、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_itemOneDrive のファイルとフォルダーを閲覧する読み取り専用
search_drive_filesOneDrive を検索する読み取り専用
download_drive_fileOneDrive ファイルのテキストを読み取る読み取り専用
upload_drive_fileOneDrive ファイルを作成/上書きする読み書き
create_drive_folder / move_drive_itemフォルダーの作成/移動・名前変更読み書き
delete_drive_itemOneDrive アイテムを削除する(→ ごみ箱)管理者 + 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

コメント

MCP は初めてですか?

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

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