mcpField
M
Minerva MCP — Microsoft 365 & Azure

Minerva MCP — Microsoft 365 & Azure

ローカル
github.comクラウド・インフラ113 週間前に更新

Minerva MCP — Microsoft 365 & Azure について

Minerva MCP は、Graph、ARM、Search、PowerShell コマンドレットを通じて Microsoft 365 と Azure の照会・管理を AI アシスタントに提供します。書き込み操作をリスク分類し、自動実行の範囲を超える操作には確認を求めます。

主な機能

  1. 01Microsoft Graph と Azure ARM の呼び出し
  2. 02Microsoft Search とテナント情報の照会
  3. 03Exchange、SharePoint、Teams、Purview のコマンドレット実行
  4. 04書き込み操作のリスク分類
  5. 05自動実行以外の書き込みに確認を要求
  6. 06ツールの制限または読み取り専用モード

活用シーン

  1. 01テナントのセキュリティ状況とポリシーを調査
  2. 02Graph で扱えない Exchange 設定を管理
  3. 03SharePoint、Teams、Purview を確認・管理
  4. 04テナント変更前に承認を求める

MCP 対応

MCP サーバーは、Graph、ARM、PowerShell 操作を含む Microsoft 365 と Azure の管理ツールを MCP クライアントに公開します。自動実行の範囲を超える書き込みには、MCP の `input_required` フローで確認を求めます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"houssemmak-minerva": {
"command": "npx",
"args": [
"-y",
"minerva-mcp"
],
"env": {
"AZURE_TENANT_ID": "<AZURE_TENANT_ID>",
"AZURE_CLIENT_ID": "<AZURE_CLIENT_ID>",
"AZURE_CLIENT_SECRET": "<AZURE_CLIENT_SECRET>",
"MINERVA_SHAREPOINT_URL": "<MINERVA_SHAREPOINT_URL>"
}
}
}
}
起動コマンドnpx -y minerva-mcp
設定が必要な環境変数
AZURE_TENANT_IDEntra tenant id. Only needed for unattended app-only sign-in; omit it to sign in interactively with a device code.
AZURE_CLIENT_IDApplication (client) id. Defaults to the public Microsoft Graph PowerShell client, so it is optional for trying the server out.
AZURE_CLIENT_SECRETシークレットClient secret for app-only authentication. Leave unset to sign in interactively instead.
MINERVA_SHAREPOINT_URLSharePoint root URL, e.g. https://contoso.sharepoint.com. Required only by the SharePoint/PnP tool when PowerShell runs locally.

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

パッケージ
npmminerva-mcp0.4.2

ツール

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

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

詳細

Minerva MCP

AI アシスタント向けの Microsoft 365 と Azure の管理 — Microsoft Graph では対応できない領域も含みます。

CI License: MIT MCP 2026-07-28

Claude、Copilot、VS Code、または任意の MCP クライアントが、自然言語で Microsoft 365 テナントを照会・管理できるMCPサーバーです。


新たな Microsoft 365 MCP サーバーが必要な理由

すでに優れたものがあり、このサーバーはそれらに取って代わろうとするものではありません。

Lokkams-365-mcp-serverMinerva MCP
Microsoft Graph✅✅ 300+ ツール✅ 汎用呼び出し
Azure Resource Manager✅—✅
Exchange Online コマンドレット——✅
SharePoint / PnP コマンドレット——✅
Teams Admin コマンドレット——✅
Purview / コンプライアンス コマンドレット——✅
アクションごとのリスク分類——✅
書き込み前の人による承認—読み取り専用スイッチ✅ プロトコルに標準搭載
MCP 2026-07-28(ステートレス)——✅

Graph だけが必要なら、Lokka または ms-365-mcp-server をお使いください。 どちらも非常に優れており、より成熟していて、広く利用されています。特に Lokka は Microsoft Entra のプロダクトマネージャーが開発しています。

誰もがいずれ直面する壁にぶつかったときは、このサーバーをご利用ください。Microsoft 365 管理の大部分には Graph API がありません。 メールボックスのアクセス許可、トランスポートルール、メッセージ追跡、保持ポリシー、秘密度ラベル、Teams の通話ポリシー、SharePoint の用語ストア、テナント全体の Exchange 設定 — これらは PowerShell にしかありません。このサーバーは、それらを公開し、リスク分類を行い、書き込みを伴う操作の前に確認ステップを設けています。


仕組み

flowchart LR
    A["AI client<br/>Claude · VS Code · Copilot Studio"]
    B["minerva-mcp"]
    C{"Risk<br/>classifier"}
    D["Human<br/>confirmation"]
    G["Microsoft Graph<br/>Azure ARM · Search"]
    P["PowerShell 7<br/>Exchange · PnP · Teams · Purview"]
    M["Microsoft<br/>authorizes the token"]

    A -->|"stdio or HTTP"| B
    B --> C
    C -->|"read"| G
    C -->|"write"| D
    D -->|"signed mandate"| G
    D -->|"signed mandate"| P
    C -->|"read"| P
    G --> M
    P --> M

読み取りはそのまま実行されます。書き込みは分類器で停止し、アクションとその影響を説明するinput_requiredとして戻され、確認後にのみ実行されます。最終的な判断は引き続き Microsoft が行います。サーバーはトークンを転送するだけで、アクセスを許可することはありません。

インストール

クローンする必要はありません。クライアントに追加し、初回利用時にサインインしてください。

Claude Desktop

claude_desktop_config.json:

{
  "mcpServers": {
    "minerva": {
      "command": "npx",
      "args": ["-y", "minerva-mcp", "--stdio"]
    }
  }
}
VS Code

.vscode/mcp.json:

{
  "servers": {
    "minerva": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "minerva-mcp", "--stdio"]
    }
  }
}

読み取り専用やアプリ専用の設定を含む詳細は、examples/をご覧ください。

初回のツール呼び出し時に、サーバーはデバイスコードのプロンプトをstderr に出力します。リンクを開いてコードを入力すれば完了です。試すのにアプリの登録は不要です。既定では Microsoft Graph PowerShell のパブリッククライアントを使用します。

要件: Node.js 20 以降。PowerShell ツールを使用する場合は、PowerShell 7 以降と、使用するモジュール(ExchangeOnlineManagement、PnP.PowerShell、MicrosoftTeams)が必要です。


質問できること

「部署外のユーザーにフルアクセスが委任されているメールボックスはどれですか?」 → Get-MailboxPermission を使う execute_exchange_online。同等の Graph 機能はありません。

「MFA を必須としていない条件付きアクセス ポリシーをすべて表示し、Secure Score も教えてください。」 → generate_security_report + microsoft_graph_call。

「請求用の共有メールボックスを作成し、財務チームにアクセス権を付与してください。」 → 書き込みとして分類されます。サーバーはアクションとその影響を説明し、 実行前に確認を待ちます。


ツール

ツール機能Graph 相当?
microsoft_graph_callMicrosoft Graph のあらゆる呼び出し(v1.0 または beta)—
azure_arm_callAzure Resource Manager のあらゆる呼び出し—
microsoft_search統合 Microsoft Search—
get_tenant_context組織、ライセンス、Secure Score—
generate_security_reportテナントのセキュリティ態勢—
execute_exchange_onlineExchange Online のコマンドレット❌ なし
execute_pnp_sharepointPnP PowerShell(SharePoint)のコマンドレット❌ なし
execute_teams_adminTeams Admin のコマンドレット❌ なし
execute_purview_compliancePurview/コンプライアンスのコマンドレット❌ なし

--tools=microsoft_graph_call,get_tenant_context で利用範囲を制限するか、 --read-only ですべての書き込みを禁止します。


承認が必要な理由、そして省略できない理由

モデルは信頼できないコンテンツ(メールの件名、サイト名、ドキュメントなど)を読み、呼び出すツールを決定します。プロンプトインジェクションは仮定上の話ではなく、ここで扱うツールはメールボックスを削除することもできます。

そのため、書き込みはそのまま実行されません。各アクションは、HTTP メソッドとパス(または PowerShell の動詞)に基づいて auto、confirmed、critical に分類されます。auto を超えるアクションがあると、サーバーは MCP の Multi Round-Trip Requests に従って input_required を返します。クライアントには実行内容とその影響が表示され、確認後に初めて実行されます。

確認は、呼び出し元、メソッド、引数のダイジェストに紐づく署名付きの許可証(HMAC)で、有効期間は 5 分です。/users/1 を削除するために取得した許可証を /users/999 に流用することはできず、他のユーザーが提示することもできません。

クライアントがエリシテーションに対応していない場合、何も暗黙に実行されません。サーバーは、アクションに確認が必要であることを示すエラーを返します。


オプション

すべてのフラグには、対応する環境変数があります。

トランスポート
フラグ環境変数デフォルト
--stdioMINERVA_TRANSPORT=stdioHTTPstdin/stdout を介した JSON-RPC
--port=<n>MCP_SERVER_PORT3001HTTP のリッスンポート

stdio モードでは、すべてのログが stderr に出力されます。stdout はプロトコル専用です。

認証
フラグ環境変数
--auth=<mode>MINERVA_AUTH_MODEbearer、device-code、client-secret
--tenant=<id>MINERVA_TENANT_ID、AZURE_TENANT_IDEntra テナント
--client-id=<id>MINERVA_CLIENT_ID、AZURE_CLIENT_IDアプリケーション
--client-secret=<s>AZURE_CLIENT_SECRETアプリ専用シークレット

デフォルトは、HTTP では bearer(呼び出し元がトークンを渡します)、stdio では device-code です。シークレットが設定されている場合は client-secret になります。リソースごとに個別のトークンが必要です。Graph、ARM、Exchange、Purview、SharePoint、Teams でオーディエンスを共有することはありません。

スコープ
フラグ環境変数
--read-onlyMINERVA_READ_ONLYすべての書き込みを拒否
--tools=<a,b,c>MINERVA_TOOLS指定したツールのみを登録
--ps=<mode>MINERVA_PS_EXECUTORauto、redis、local、none
--sharepoint-url=<url>MINERVA_SHAREPOINT_URLローカルで PnP ツールを使用する際に必須
--allowed-origins=<a,b>MINERVA_ALLOWED_ORIGINS/mcp で許可するブラウザーのオリジン
--redis-url=<url>REDIS_URL外部 PowerShell ランナー用のキュー
—MINERVA_MRTR_SECRET承認許可証の署名キー
—MINERVA_PWSH_PATHpwsh のパス
—MINERVA_REQUIRE_VERIFIED_TOKENS署名を検証できないトークンを拒否

--read-only は承認ゲートと同じリスク分類器を使用するため、HTTP メソッドだけでなく PowerShell コマンドレットも対象になります。


プロトコルのサポート

MCP 2026-07-28 をサポートし、ハンドシェイク時代のクライアントにも 2027-07-28 まで対応します。

ステートレスなコア(リクエストごとの _meta、initialize なし、Mcp-Session-Id なし)✅
server/discover✅
複数のラウンドトリップを伴うリクエスト(input_required)✅ — これが承認の仕組みです
MCP-Protocol-Version / Mcp-Method / Mcp-Name ヘッダー、base64 センチネル✅ 本文と照合して検証
リストの ttlMs / cacheScope✅ 常に private
バージョンネゴシエーション(対応バージョンを示す -32022)✅
Origin の検証(DNS リバインディング対策)✅
MCP エンドポイントへの GET / DELETE✅ 405。このリビジョンで削除
ハンドシェイク時代(initialize)✅ 2027-07-28 まで

1 つのエンドポイントで両世代に対応し、リクエスト本文によってどちらかを判定します。どちらも 同じツールレジストリを読み込み、テストで固定されたコントラクトと照合するため、 互いに乖離することはありません。


セキュリティ

デプロイする前に SECURITY.md をお読みください。重要なのは次の 3 点です。

  1. このサーバーは権限を付与しません。 Microsoft のトークンを転送し、認可するのは Microsoft です。制限付きトークンを使えば、サーバーの権限も制限されます。
  2. Graph のトークンは第三者が検証できません — Graph だけが確認できる nonce ヘッダーを含むためです。そのため、tid/oid クレームは 自己申告となります。サーバーは構造を検証し、verified: false のフラグを付け、 承認要件をクレームだけではなくトークン自体のフィンガープリントに 関連付けます。検証されるべきトークンが検証されなかった場合は、拒否されます。
  3. ローカル PowerShell モードでは何も分離されません。 コマンドレットは現在のユーザーの権限で実行されます。信頼できない呼び出し元に公開しないでください。

コマンドレット名とパラメーターがコードとしてスクリプトに渡されることはありません。環境変数を介して渡され、名前は厳格な Verb-Noun パターンに照らして検証された後、Get-Command と呼び出し演算子を介して実行されます。

脆弱性は非公開で報告してください — SECURITY.md をご覧ください。


このプロジェクトが行わないこと

  • ローカルモードでのプロセス分離はありません。
  • マルチテナントの仲介はありません — 1 つのサーバー、1 つの ID です。
  • 署名付き監査台帳はありません。 監査イベントは stderr に出力される JSON であり、署名付きでオフライン検証可能な記録ではありません。

この 3 点は、このサーバーの抽出元である商用プラットフォーム Minerva-IA が担います。このリポジトリのすべての機能は、それがなくても動作します。


開発

npm install
npm run dev:stdio     # stdio, hot reload
npm run verify        # typecheck + tests + secret scan
npm run build && node scripts/smoke-stdio.mjs

テストに認証情報は不要で、ネットワークにも接続しません。

プルリクエストは 2027-07-31 まで受け付けていません — 理由と、その間に歓迎するもの(バグ報告は大歓迎です)については CONTRIBUTING.md をご覧ください。

ライセンス

MIT — LICENSE をご覧ください。

コメント

MCP は初めてですか?

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

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