mcpField
M
Microsoft 365 Mail

Microsoft 365 Mail

ローカル
github.com/mindstoneコミュニケーション13今日更新

Microsoft 365 Mail について

Microsoft 365 Mail は、Microsoft Graph 経由で Outlook メールを管理する MCP サーバーです。メール、下書き、添付ファイル、スレッド、自動応答を扱い、OAuth はホストが実行します。このサーバーは認証引き継ぎ用ツールを備えています。

主な機能

  1. 01メールの一覧表示、検索、読み取り
  2. 02送信、返信、転送、下書き管理
  3. 03添付ファイルのダウンロードとスレッドの確認
  4. 04メールの移動、削除、既読設定、フラグ付け
  5. 05自動応答の確認と設定

活用シーン

  1. 01最近の未読メールを探して返信
  2. 02返信を下書きとして保存して後で確認
  3. 03添付ファイルをワークスペースにダウンロード

MCP 対応

Microsoft Graph のメール操作を MCP クライアントに提供し、メール、フォルダー、下書き、添付ファイル、スレッド、自動応答に対応します。`authenticate_microsoft_account` ツールは認証をホストに引き継ぎ、ホストがこのサーバーと関連する Microsoft 365 サーバー用の認証情報を書き込みます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"mindstone-mcp-server-microsoft-mail": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-microsoft-mail"
],
"env": {
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_CONFIG_DIR": "<MS_CONFIG_DIR>",
"MS_ACCOUNT_EMAIL": "<MS_ACCOUNT_EMAIL>",
"MS_MCP_PACKAGE_ID": "<MS_MCP_PACKAGE_ID>",
"MICROSOFT_REQUEST_TIMEOUT_MS": "<MICROSOFT_REQUEST_TIMEOUT_MS>",
"MCP_WORKSPACE_PATH": "<MCP_WORKSPACE_PATH>"
}
}
}
}
起動コマンドnpx -y @mindstone/mcp-server-microsoft-mail
設定が必要な環境変数
MS_CLIENT_IDMicrosoft Entra (Azure AD) application client ID
MS_CONFIG_DIRPath to the per-user Microsoft config directory (credentials/, accounts.json)
MS_ACCOUNT_EMAILAccount email when running in multi-account per-instance mode (falls back to the first account in accounts.json)
MS_MCP_PACKAGE_IDLogical package ID surfaced in error responses
MICROSOFT_REQUEST_TIMEOUT_MSOverride the upstream Microsoft Graph request timeout in milliseconds (max 300000 = 5 min)
MCP_WORKSPACE_PATHWorkspace root where download_attachment saves files (falls back to the OS temp directory when unset)

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

パッケージ
npm@mindstone/mcp-server-microsoft-mail0.3.0

ツール

22

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

@mindstone/mcp-server-microsoft-mail

npm version License: FSL-1.1-MIT

Microsoft 365 Outlook Mail MCP サーバーです。Microsoft Graph API を介して、メールの一覧表示、検索、閲覧、送信、返信、転送、下書き作成、移動、削除、添付ファイルのダウンロード、スレッドの閲覧、トリアージ(既読/フラグ設定)、不在時の自動返信の管理を行います。

コホート形式の Microsoft 365 メール MCP です。OAuth フローはホストが管理し、このサーバーはアカウントごとのトークンをディスクから読み込みます。各ツールは構造化された auth_required エンベロープを返して安全側に失敗するため、ホストが再認証を実行できます。

ステータス

開発の背景

2026 年 5 月に本コネクターを移植した時点では、Microsoft 独自の Graph MCP ラインアップには、単独で動作する Outlook Mail サーバーはまだありませんでした。当時のコミュニティ製の選択肢はいずれも、OAuth 中に独自のブラウザーコールバックサーバーを起動していましたが、ホストアプリケーションはすでに同じコホート内の他のコネクター用に認証情報を取得する OAuth フローを実行しています。そのため、MindstoneRebel に同梱されていたコネクターを 1:1 で移植し、同じ 5 つの Microsoft 365 コネクター(メール、カレンダー、ファイル、Teams、SharePoint)で、単一の OAuth インターフェースと、トークンの永続化、リクエストのタイムアウト、ホストがすでに復旧方法を認識している構造化された auth_required エンベロープを提供する単一の共有ライブラリパッケージを共有できるようにしました。このコネクターはコホートの認証ツール(authenticate_microsoft_account)を担当し、他の 4 つのコネクターはこのツールが取得した認証情報を再利用します。

やり取りの例

「Alice から届いた最新の未読メールを 5 件表示し、最も新しいメールに『ありがとう、今夜読みます』と返信してください。」

ホストが呼び出すツール:

  1. search_emails — from:[email protected] isRead:false、上位 5 件。
  2. reply_to_email — 検索結果の最上位にあるメッセージ ID に、指定された本文で返信を送信します。

応答(一部抜粋):

{
  "matches": [
    {
      "id": "AAMkAD...",
      "subject": "Q3 planning",
      "from": "[email protected]",
      "receivedDateTime": "2026-05-19T09:14:11Z"
    }
  ],
  "reply": {
    "id": "AAMkAD...",
    "isDraft": false
  }
}

要件

  • Node.js 20+
  • npm
  • Microsoft OAuth フローを実行し、アカウントごとのトークンファイルを ${MS_CONFIG_DIR}/credentials/${sanitised-email}.token.json に、${MS_CONFIG_DIR}/accounts.json インデックスを ${MS_CONFIG_DIR} に書き込むホストアプリケーション。このサーバーはこれらのファイルを読み込みますが、OAuth 自体は開始しません。

ワンクリックインストール

Add to Cursor Add to VS Code Add to VS Code Insiders

ボタンをクリックすると、ホストで次の値を入力するよう求められます:MS_CLIENT_ID、MS_CONFIG_DIR、MS_MCP_PACKAGE_ID、MICROSOFT_REQUEST_TIMEOUT_MS。

Claude Desktop / Claude Code / Goose / Continue.dev 用の手動設定(Microsoft 365 Mail)
{
  "mcpServers": {
    "Microsoft 365 Mail": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-microsoft-mail"
      ],
      "env": {
        "MS_CLIENT_ID": "",
        "MS_CONFIG_DIR": "",
        "MS_MCP_PACKAGE_ID": "Microsoft365Mail",
        "MICROSOFT_REQUEST_TIMEOUT_MS": "60000"
      }
    }
  }
}

クイックスタート

インストールとビルド
cd <path-to-repo>/connectors/microsoft-mail
npm install
npm run build
npx(公開後)
npx -y @mindstone/mcp-server-microsoft-mail
ローカル
node dist/index.js

設定

このサーバーは、Microsoft 365 の OAuth フローを管理するホストアプリケーションと連携して動作します。ホストが認証情報をディスクに書き込み、このサーバーがそれを読み込みます。

必須の環境変数
名前説明
MS_CLIENT_IDMicrosoft Entra(Azure AD)アプリケーションのクライアント ID。
MS_CONFIG_DIRユーザーごとの Microsoft 設定ディレクトリ(credentials/、accounts.json)へのパス。
任意の環境変数
名前説明デフォルト
MS_ACCOUNT_EMAIL複数アカウントのインスタンスごとのモードで実行する場合のアカウントのメールアドレス。accounts.json 内の最初のアカウント。
MS_MCP_PACKAGE_IDエラーレスポンスに表示される論理パッケージ ID。Microsoft365Mail
MICROSOFT_REQUEST_TIMEOUT_MS上流の Microsoft Graph リクエストタイムアウトを上書きします(最大 300000 ミリ秒)。60000
MICROSOFT_DISABLE_REFRESH1 に設定すると、この接続先でのトークン更新を無効にします。ツールは構造化された auth_required レスポンスを返して処理を停止するため、ホストが再認証を実行できます。クラウド接続先では 1 に設定します。未設定
MCP_WORKSPACE_PATHdownload_attachment がファイルを保存するワークスペースのルートディレクトリ。OS の一時ディレクトリ

ホスト設定の例

Claude Desktop / Cursor
{
  "mcpServers": {
    "Microsoft365Mail": {
      "command": "npx",
      "args": ["-y", "@mindstone/mcp-server-microsoft-mail"],
      "env": {
        "MS_CLIENT_ID": "your-entra-application-client-id",
        "MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"
      }
    }
  }
}

ホストが ${MS_CONFIG_DIR}/credentials/<account>.token.json と ${MS_CONFIG_DIR}/accounts.json を書き込むまで、すべてのツール呼び出しは構造化された auth_required レスポンスを返します(ホストの MCP サービスはこの形式を認識し、登録済みの Microsoft 365 OAuth オーケストレーターに処理を振り分けます)。

ローカル開発(npm への公開は不要)
{
  "mcpServers": {
    "Microsoft365Mail": {
      "command": "node",
      "args": ["<path-to-repo>/connectors/microsoft-mail/dist/index.js"],
      "env": {
        "MS_CLIENT_ID": "your-entra-application-client-id",
        "MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"
      }
    }
  }
}

ツール(22)

ツール説明
authenticate_microsoft_accountホストが Microsoft 365 の OAuth フローを実行できるよう、構造化された auth_required ハンドオフを出力します。
list_emailsフォルダー内のメールを新しい順に一覧表示します(下記の並び順に関する注記を参照)。
get_emailメッセージ ID を指定して、個別のメールを読み取ります。
list_attachmentsメッセージの添付ファイルのメタデータ(ID、名前、種類、サイズ)を一覧表示します。
download_attachmentファイル添付をワークスペース(または OS の一時ディレクトリ)に保存します。
send_email新しいメールを送信します(CC と BCC に対応)。
compose_emailインタラクティブな作成画面で編集可能な下書きを開きます。ユーザーが「送信」をクリックするまで送信されず、「下書きを保存」を選ぶと代わりに「下書き」フォルダーに保存されます。
search_emailsMicrosoft Search の構文を使用してメールを検索します。
get_conversationスレッド内のメッセージを古い順に一覧表示します(下記の並び順に関する注記を参照)。
reply_to_email既存のメールに返信(または全員に返信)します。
forward_emailメールを追加の宛先に転送します。
delete_emailメールを「削除済みアイテム」に移動するか、完全に削除します。
list_foldersメールフォルダーを一覧表示します。
move_emailメールを別のフォルダーに移動します。
create_reply_draft既存のメールへの返信を下書きとして保存します。
create_draft新しい単独のメール下書きを保存します(CC と BCC に対応)。
send_draft既存の下書きを送信します。
update_draft下書きの件名、本文、宛先、または重要度を更新します。
mark_email_readメールを既読または未読にします。
set_email_flagメールにフラグを設定してフォローアップ対象にするか、完了にするか、フラグを解除します。
get_automatic_replies不在時の自動応答設定を読み取ります(MailboxSettings.Read が必要です)。
set_automatic_replies不在時の自動応答をオン/オフにするか、スケジュールを設定します(MailboxSettings.ReadWrite が必要です)。
Graph のアクセス許可

メールツールは、委任された Mail.ReadWrite と Mail.Send の権限で動作します。不在時の自動応答ツールには、さらに MailboxSettings.Read/MailboxSettings.ReadWrite が必要です。多くの組織では管理者によるこの権限の承認が必要です。また、接続されたアカウントにこの権限がない場合、ツールは Graph の生の 403 エラーではなく、ガイダンス用のエンベロープを返します。

並び順と検証に関する注記
  • フィルターを適用した一覧表示の並べ替えはページ内に限られます。 Microsoft Graph は $filter と $orderby の併用を拒否するため、list_emails に filter を指定した場合(および get_conversation の場合は常に)、コネクターは返されたページ内のみでクライアント側の並べ替えを行います。Graph は先に $top を適用するため、結果はメールボックス全体を対象に並べ替えたものではなく、Graph が返したページ内の表示順を並べ替えたものになります。フィルターなしの list_emails は引き続きサーバー側で並べ替えられます。
  • 宛先は検証されます。 to/cc/bcc の各項目はメールアドレスである必要があります(前後の空白を除去した後で最大 254 文字、各フィールド最大 500 件)。無効な項目は Graph の呼び出し前に拒否されます。
  • スケジュール設定された不在時の自動応答期間には ISO 8601 形式の日時が必要です。明示されたオフセットは UTC に変換されます(タイムゾーンのない値は UTC として扱われます)。また、開始日時は終了日時より前でなければなりません。

セキュリティに関する注意事項

  • トークンファイルはホストによってモード 0600 で書き込まれます。このサーバーはコホート共有ライブラリを介してファイルを読み取り、形式が不正なファイルはフェイルクローズします。
  • クラウド環境では、デスクトップセッションのみがリフレッシュトークンの管理元となり、使い捨てのリフレッシュトークンをめぐる競合を避けられるよう、MICROSOFT_DISABLE_REFRESH=1 がデフォルトです。
  • ツールが成功した場合のレスポンスでは、バンドル版の successResult の形式に合わせて、OSS版のみの ok:true ラッパーを取り除きます。手動検証エラーやビジネスエラーは、ホストの復旧レイヤーが対処できるよう、{ ok:false, error, action_required, next_step } ペイロードとともに isError:true を返します。
  • ツールごとの Graph 呼び出しは、.options({signal}) と多層防御のための Promise.race ラッパーを使い、呼び出し元とコホートのタイムアウトシグナルを合成したもののもとで実行されます。
  • download_attachment は MCP_WORKSPACE_PATH 内(未設定の場合は OS の一時ディレクトリ内)にのみ書き込みます。単純なファイル名以外は拒否し、ダウンロードサイズは 25 MB までに制限します。添付ファイルのバイトデータは上限を厳守しながら $value エンドポイントからストリーミングされ(上限を超えて全体がメモリ上に展開されることはありません)、同じ理由からメタデータも 1 MB の上限を設けてストリーミングされます。また、書き込み前にワークスペースのルートを正規化し(シンボリックリンクを解決し)ます。各ダウンロードは、正規化されたワークスペースルート直下にアトミックに作成された新しい非公開ステージングディレクトリ(fs.mkdtemp、モード 0700)に保存され、引き継がれるのは添付ファイル名だけです。報告される savedTo は、このステージングディレクトリ内を指します。ディレクトリ名はコネクターが生成するため、検証から書き込みシステムコールまでの間に事前配置、名前変更、シンボリックリンクの差し替えが可能な、検証済みのユーザー表示パス名は存在しません。そのため、ファイル記述子相対 API を使わずに、すべてのプラットフォームで親ディレクトリの確認と使用の間に生じる競合を構造上排除しています。ファイル自体も排他的オープン(O_CREAT|O_EXCL、モード 0600)で作成されるため、上書きは不可能で、同名の既存ファイルやシンボリックリンクに触れることもありません。書き込みに失敗した場合はステージングディレクトリ全体が削除され、残存物はありません。攻撃者が制御する添付ファイルのフィールド(名前、種類、コンテンツタイプ)は、エラーパスを含め、テキストとして表示されるすべての場所で信頼できないコンテンツのエンベロープに包まれます。ホストがファイルを開くために必要なので、savedTo には実際のファイルパスを報告する必要がありますが、ユーザー向けの message にはコネクターが生成したステージングディレクトリ名だけを記載するため、攻撃者が指定したファイル名が信頼できる文章としてそのまま表示されることはありません。
  • 認証以外の失敗に対するエラーガイダンスでは、再認証を決して推奨しません。Graph の 403 権限拒否には、同じアカウントで再認証しても解決しないことを説明するコネクター独自のガイダンスで応答し、上流の Graph エラーテキストはモデルに渡す前に信頼できないコンテンツのエンベロープに包まれます。

ライセンス

FSL-1.1-MIT — Functional Source License, Version 1.1。MIT の将来ライセンスが付与されています。競合しない用途であれば無料で使用できます。LICENSE に記載されたコンバーター日付に MIT ライセンスへ変更されます。

コメント

MCP は初めてですか?

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

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