Softeria/ms-365-mcp-server
A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Microsoft Office services through the Graph API
📦 ms-365-mcp-server とは?
Microsoft 365 (Graph) の機能を Model-Context-Protocol (MCP) ツールとして公開する Node-JS サーバーです。各ツールは1つの Graph API エンドポイント(例:list-mail-messages、get-drive-item)に対応しており、Claude Desktop、Claude Code CLI、またはその他の MCP 互換フロントエンドなど、LLM 駆動のアシスタントから呼び出すことができます。
🎯 主な目的
- 膨大な Microsoft 365 Graph の機能を、LLM がカスタム HTTP コードを書かずに呼び出せる安定した宣言的ツールセットに変換します。
- 2つの出力エンコーディングを提供します – 通常の JSON(デフォルト)と実験的な TOON フォーマット。TOON はリスト形式のデータでトークン数を 30〜60% 削減します。
- 個人アカウントと組織(仕事/学校)アカウント、複数のクラウド(グローバル & 中国)、そして単一のサーバーインスタンスからのマルチアカウント利用をサポートします。
⚙️ 主な機能(README に記載されているもの)
| 機能 | 提供されるもの |
|---|---|
| 認証 | MSAL ベースのデバイスコードフロー(デフォルト)、--http モード実行時の OAuth 2.1、または MS365_MCP_OAUTH_TOKEN によるトークン持ち込み。 |
| ツールサーフェス | Graph API 全体(メール、カレンダー、OneDrive、Teams、SharePoint、Planner など)をカバーする 300 以上の自動生成ツール。 |
| プリセット & フィルタリング | --preset、--enabled-tools レギュラー表現、または --allowed-scopes を使用してツールセットを必要なものだけに絞り込み、トークン使用量と必要な権限を削減します。 |
| 読み取り専用モード | 誤った書き込みからの安全策(--read-only)。 |
| 動的権限検出 | --list-permissions は現在の設定が要求する正確な Graph スコープを表示し、管理者が事前同意を承認するのを助けます。 |
| 出力形式 | JSON(整形済み)または実験的な TOON(Token-Oriented Object Notation)により、LLM 呼び出しのコストを削減。 |
| マルチアカウントサポート | 複数の Microsoft アカウントにログイン可能。各ツール呼び出しで account 引数(メールまたは MSAL homeAccountId)を指定できます。 |
| エンタープライズ制御 | --allowed-scopes でトークン要求を絞り込み、--extra-scopes でカスタムスコープを追加。SharePoint は Sites.Selected に制限可能。 |
| CLI または Docker 経由でデプロイ可能 | npx @softeria/ms-365-mcp-server … で実行またはコンテナ化。HTTP モードは --public-url を使用してリバースプロキシの背後で動作します。 |
🛠️ 典型的なワークフロー
- インストール –
npm i -g @softeria/ms-365-mcp-server(またはnpxで実行)。 - 認証 –
npx @softeria/ms-365-mcp-server --login(デバイスコード)または OAuth 用の--httpモードで起動。 - 設定 – README の JSON スニペットを使用して、LLM クライアント(Claude Desktop、Claude Code CLI、Open WebUI など)にサーバーを追加。
- モード選択 – デフォルトは個人用。Teams、SharePoint、共有メールボックスなどを有効にするには
--org-modeを追加。 - ツール呼び出し – LLM が
{ "tool": "list-mail-messages", "arguments": { "account": "work@company.com" } }のようなリクエストを送信。サーバーは Graph と通信し、JSON または TOON を返します。
📦 インストール & クイックスタート
# 直接実行(グローバルインストール不要)
npx @softeria/ms-365-mcp-server --login # デバイスコードフロー
# ツールのテスト
npx @softeria/ms-365-mcp-server --tool list-mail-messages
Docker の場合:
docker run -p 3000:3000 ghcr.io/softeria/ms-365-mcp-server:latest --http
その後、MCP 互換クライアントを http://localhost:3000/mcp に指向します。
🔗 言及された統合ポイント
- Claude Desktop – 設定 → 開発者 に追加。
- Claude Code CLI –
claude mcp add ms365 -- npx -y @softeria/ms-365-mcp-server …。 - Open WebUI – HTTP モード、OAuth 2.1、UI でクライアントを登録。
- カスタムクライアント – MCP(stdio または HTTP 経由の JSON)を話せる任意のツール。
📚 いつ使用しますか?
- ユーザーの Outlook メール、カレンダー、または OneDrive ファイルの読み書きが必要な AI アシスタントの構築。
- 厳格な権限境界を尊重しながら Teams チャット、SharePoint リスト、または Planner タスクと相互作用しなければならないエンタープライズボット。
- トークン効率が重要な任意の LLM 駆動ワークフロー – 大規模なリスト応答のコスト削減のために TOON に切り替え。
- 単一のサーバーインスタンスが多くのユーザーの Microsoft アカウントを管理するマルチテナント SaaS。
⚠️ README からの制限事項 / 注記
- TOON は実験的とマークされています – 変更される可能性があります。
- HTTP モードでは、認証ツールはデフォルトで無効化されています。必要に応じて
--enable-auth-toolsで有効化。 - デフォルトの Softeria Azure アプリには権限セットが制限されています。追加のスコープを要求するには、独自の Azure AD アプリ(
MS365_MCP_CLIENT_IDなど)を提供する必要があります。 --allowed-scopesは権限を絞り込むことしかできません。広げるには--extra-scopesが必要です。- ピニング(
MS365_MCP_EXPECTED_USERNAME/--expected-home-account-id)は任意ですが、ヘッドレスデプロイメントに有用です。
📖 詳細を学ぶ場所
- ソースコード –
src/endpoints.jsonはすべての生成ツールをリストしています。 - デプロイガイド –
docs/deployment.md(リバースプロキシ設定の参照)。 - TOON フォーマット – リンクされた GitHub リポジトリ
github.com/toon-format/toonを参照。
TL;DR
ms-365-mcp-server は、Microsoft 365 Graph API を Model-Context-Protocol 経由で LLM が呼び出せる大規模で権限認識型ツールボックスに変換する、完成済みのブリッジです。認証、権限スコーピング、マルチアカウント管理を処理し、トークン節約型の出力形式を提供するため、現実世界の Microsoft 365 データを必要とする AI アシスタントの構築における実用的なコンポーネントとなります。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト