entraadm-mcp
entraadm-mcp
English | 日本語
Microsoft Entra IDのサインインおよび監査ログのトリアージのためのMCPサーバー。読み取り専用。
公式のMicrosoft MCP Server for Enterpriseではなくこれを使う理由
MicrosoftはEntra IDデータ用の公式MCP Server for Enterpriseを提供しています。これはキーボードの前で操作する管理者には適していますが、無人で動作するトリアージボットには適していません:
委任認証のみ。 公式サーバーはアプリ専用(クライアント資格情報)認証をサポートしていないため、サービスアカウントの背後でヘッドレスに実行できません。entraadm-mcpはそのケース向けに構築されています:本番ではアプリ専用、ローカル開発では委任(
az login)フォールバックを使用します。固定ツールセットではなく、汎用のGraphクエリツール。 公式サーバーは、モデルがMicrosoft Graphに対して任意の
GET/スキーマ探索呼び出しを構築できる1つのツールを公開しています。これは人間にとっては柔軟ですが、自動化されたトリアージプロファイルの許可リストの背後に置くのは厄介です。entraadm-mcpは代わりに7つの固定された読み取り専用ツールを公開します。AADSTSの翻訳なし。 サインイン失敗は生のエラーコードとして返されます。トリアージには依然としてルックアップテーブルが必要です。entraadm-mcpはすべてのサインイン失敗に、コードが実際に意味することを注釈として付けます。
リクエスト間の集約なし。 Microsoft Graph自体はサーバー側で
status/errorCodeによるサインインのフィルタリングができず、組み込みのパスワードスプレー表示もありません。signin_failure_statsはクライアント側で集約し、多数の異なるユーザーに対するサインイン失敗があるIPにフラグを立てます — Entraのアカウントごとのスマートロックアウトだけでは捕捉できないパターンです。
Related MCP server: Microsoft Graph MCP Server
ツール
ツール | 回答する内容 |
| Graphに到達可能か、この資格情報でサインインログを読み取れるか? |
| このアカウントは有効か、オンプレミスから同期されているか、ライセンスは何か? |
| このユーザーのサインインが失敗(または成功)した理由は?AADSTSコードを翻訳して表示 |
| テナント全体の失敗集約:上位エラーコード、ユーザー、アプリ、送信元IP、パスワードスプレー容疑者 |
| ディレクトリ内で誰が何を変更したか(ブロック/ブロック解除、属性編集)、いつか? |
| このアカウントにMFAが実際に登録されているか? |
|
|
すべてのツールは読み取り専用です。書き込み操作(アカウントのブロック解除、パスワードのリセット、セッションの失効)はこのサーバーの対象外です。
認証モデル
設定された環境変数によって選択される2つの認証モード:
モード | 条件 | 環境変数 |
app-only | 3つすべて設定 |
|
azure-cli | なし | (現在の |
3つのアプリ専用変数のうち1つまたは2つだけを設定することは設定エラーであり、意図したものとは異なる認証モードに黙ってフォールバックするのではなく、サーバーは起動を拒否します。
必要なGraph権限
ツール | 権限 | 備考 |
|
| |
|
| |
|
| アプリ専用のみ。一般的なテナントのロール割り当てでは、委任( |
権限が不足していてもツールがクラッシュすることはありません。そのツール(またはその1つのフィールド)は、必要なロールまたは権限の人間が読める説明とともに{"error": "...", "missing_permission": "..."}に縮退し、完全な権限が付与される前でもhealth_checkおよび他のすべてのツールが使用可能な状態を維持します。
セットアップ
uv tool install entraadm-mcp
# or
pip install entraadm-mcp設定
本番/無人使用のために3つのアプリ専用変数を設定します:
export ENTRAADM_TENANT_ID=00000000-0000-0000-0000-000000000000
export ENTRAADM_CLIENT_ID=00000000-0000-0000-0000-000000000000
export ENTRAADM_CLIENT_SECRET=your-client-secretまたは、ローカル開発では3つすべてを未設定のままにして、最初にaz loginを実行します。
オプション:
# Default page cap for the log-scanning tools (1-50, default 5).
export ENTRAADM_MAX_PAGES_DEFAULT=5使用方法
Claude Code(プラグイン)
/plugin marketplace add shigechika/entraadm-mcp
/plugin install entraadm-mcp@entraadm-mcpClaude Code(手動)
.mcp.jsonに追加:
{
"mcpServers": {
"entraadm-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["entraadm-mcp"],
"env": {
"ENTRAADM_TENANT_ID": "${ENTRAADM_TENANT_ID:-}",
"ENTRAADM_CLIENT_ID": "${ENTRAADM_CLIENT_ID:-}",
"ENTRAADM_CLIENT_SECRET": "${ENTRAADM_CLIENT_SECRET:-}"
}
}
}
}直接実行
entraadm-mcpCLIオプション
オプション | 効果 |
| バージョンを表示して終了 |
| 認証を解決し、Graphの到達可能性とサインインログへのアクセスを調査し、レポートを表示して、終了コード0(設定エラーの場合は1)で終了 |
注意事項
カバレッジ契約。 ページングされたGraphコレクションを走査するすべての結果は、そのウィンドウが完全にスキャンされなかった場合に
cappedブール値を保持します — 部分的なスキャンが完全なものとして報告されることは決してありません。found: falseはエラーではありません。get_userとget_user_auth_methodsは、存在しないアカウントに対してerrorキーではなく{"found": false, ...}で応答します — タイプミスしたuserPrincipalNameが、このサーバーの故障のように見えることは決してありません。保持期間。 Entra ID P1はサインインおよびディレクトリ監査ログを30日間保持します。それを超えるウィンドウはエラーではなく空の結果を返します。
開発
uv sync --dev
uv run pytest -v
uv run ruff check .
uv run ruff format --check .ライブスモークテスト
uv run python scripts/smoke_test.py読み取り専用、ペイロードは表示されず(ツール名/ステータス/行数のみ)、制限付き(小さな明示的なウィンドウ/ページ上限)— ここではテナントへの書き込みや1日を超えるログのスキャンは行われません。
リリース
このリポジトリはConventional Commitsによって駆動されるrelease-pleaseを使用しています。feat:/fix:のPRをmainにマージすると、release-pleaseがリリースPRを開く(または更新する)か、そのPRをマージするとリリースにタグ付けされ、公開パイプライン(PyPI、MCP Registry)がトリガーされます。
ライセンス
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceProvides secure access to Microsoft Entra ID (Azure AD) resources including users, devices, and applications through Microsoft Graph API. Enables querying organizational data with comprehensive audit logging to Azure Blob Storage.
- AlicenseNot gradedqualityDmaintenanceProvides read-only access to Microsoft 365 services including SharePoint, OneDrive, Outlook, Teams, and Calendar through the Microsoft Graph API, enabling users to search, browse, and retrieve content across their M365 suite.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query Microsoft Entra data using natural language, converting requests into Microsoft Graph API calls for read-only enterprise IT scenarios.46CC BY-4.0
- AlicenseAqualityBmaintenanceEnables auditing and monitoring of Microsoft Entra ID security posture, Conditional Access policies, and Zero Trust alignment via Microsoft Graph API.5MIT
Related MCP Connectors
Read-only access to Auralogs production logs: search logs, inspect errors, review AI analyses.
Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.
Read-only access to your VortexIQ store data: audits, KPIs, alerts, Brand DNA, reports, Ask VIQ.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/shigechika/entraadm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server