Microsoft 365 Mail について
Microsoft 365 Mail は、Microsoft Graph 経由で Outlook メールを管理する MCP サーバーです。メール、下書き、添付ファイル、スレッド、自動応答を扱い、OAuth はホストが実行します。このサーバーは認証引き継ぎ用ツールを備えています。
主な機能
- 01メールの一覧表示、検索、読み取り
- 02送信、返信、転送、下書き管理
- 03添付ファイルのダウンロードとスレッドの確認
- 04メールの移動、削除、既読設定、フラグ付け
- 05自動応答の確認と設定
活用シーン
- 01最近の未読メールを探して返信
- 02返信を下書きとして保存して後で確認
- 03添付ファイルをワークスペースにダウンロード
MCP 対応
Microsoft Graph のメール操作を MCP クライアントに提供し、メール、フォルダー、下書き、添付ファイル、スレッド、自動応答に対応します。`authenticate_microsoft_account` ツールは認証をホストに引き継ぎ、ホストがこのサーバーと関連する Microsoft 365 サーバー用の認証情報を書き込みます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @mindstone/mcp-server-microsoft-mailMS_CLIENT_IDMicrosoft Entra (Azure AD) application client IDMS_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 responsesMICROSOFT_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
22掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
@mindstone/mcp-server-microsoft-mail
Microsoft 365 Outlook Mail MCP サーバーです。Microsoft Graph API を介して、メールの一覧表示、検索、閲覧、送信、返信、転送、下書き作成、移動、削除、添付ファイルのダウンロード、スレッドの閲覧、トリアージ(既読/フラグ設定)、不在時の自動返信の管理を行います。
コホート形式の Microsoft 365 メール MCP です。OAuth フローはホストが管理し、このサーバーはアカウントごとのトークンをディスクから読み込みます。各ツールは構造化された auth_required エンベロープを返して安全側に失敗するため、ホストが再認証を実行できます。
ステータス
- バージョン: 0.3.0 · npm
- 認証: OAuth(ホストによるオーケストレーション)(
MS_CLIENT_ID) - ツール: 22(メッセージ、フォルダー、下書き、添付ファイル、スレッド、設定)
- 対象: クラウド API
- 機械可読:
STATUS.json - 共有ライブラリ:
@mindstone/mcp-server-microsoft-shared
開発の背景
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 件表示し、最も新しいメールに『ありがとう、今夜読みます』と返信してください。」
ホストが呼び出すツール:
search_emails—from:[email protected] isRead:false、上位 5 件。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 自体は開始しません。
ワンクリックインストール
ボタンをクリックすると、ホストで次の値を入力するよう求められます: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_ID | Microsoft 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_REFRESH | 1 に設定すると、この接続先でのトークン更新を無効にします。ツールは構造化された auth_required レスポンスを返して処理を停止するため、ホストが再認証を実行できます。クラウド接続先では 1 に設定します。 | 未設定 |
MCP_WORKSPACE_PATH | download_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_emails | Microsoft 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 ライセンスへ変更されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。