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 DesktopClaude 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 を使用してリバースプロキシの背後で動作します。

🛠️ 典型的なワークフロー

  1. インストールnpm i -g @softeria/ms-365-mcp-server(または npx で実行)。
  2. 認証npx @softeria/ms-365-mcp-server --login(デバイスコード)または OAuth 用の --http モードで起動。
  3. 設定 – README の JSON スニペットを使用して、LLM クライアント(Claude Desktop、Claude Code CLI、Open WebUI など)にサーバーを追加。
  4. モード選択 – デフォルトは個人用。Teams、SharePoint、共有メールボックスなどを有効にするには --org-mode を追加。
  5. ツール呼び出し – 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 CLIclaude 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 アシスタントの構築における実用的なコンポーネントとなります。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト