Skip to main content
Glama
shigechika

entraadm-mcp

by shigechika

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

ツール

ツール

回答する内容

health_check

Graphに到達可能か、この資格情報でサインインログを読み取れるか?

get_user

このアカウントは有効か、オンプレミスから同期されているか、ライセンスは何か?

signin_logs

このユーザーのサインインが失敗(または成功)した理由は?AADSTSコードを翻訳して表示

signin_failure_stats

テナント全体の失敗集約:上位エラーコード、ユーザー、アプリ、送信元IP、パスワードスプレー容疑者

directory_audits

ディレクトリ内で誰が何を変更したか(ブロック/ブロック解除、属性編集)、いつか?

get_user_auth_methods

このアカウントにMFAが実際に登録されているか?

daily_brief

signin_failure_statsdirectory_auditsを組み合わせた1回の呼び出しでの要約

すべてのツールは読み取り専用です。書き込み操作(アカウントのブロック解除、パスワードのリセット、セッションの失効)はこのサーバーの対象外です。

認証モデル

設定された環境変数によって選択される2つの認証モード:

モード

条件

環境変数

app-only

3つすべて設定

ENTRAADM_TENANT_IDENTRAADM_CLIENT_IDENTRAADM_CLIENT_SECRET

azure-cli

なし

(現在のaz loginセッションを使用)

3つのアプリ専用変数のうち1つまたは2つだけを設定することは設定エラーであり、意図したものとは異なる認証モードに黙ってフォールバックするのではなく、サーバーは起動を拒否します。

必要なGraph権限

ツール

権限

備考

get_user(基本フィールド)

User.Read.All

signin_logssignin_failure_statsdirectory_auditsget_usersign_in_activityフィールド

AuditLog.Read.All(アプリ専用)またはレポート閲覧者ディレクトリロール(委任)

get_user_auth_methods

UserAuthenticationMethod.Read.All

アプリ専用のみ。一般的なテナントのロール割り当てでは、委任(az login)認証では利用不可

権限が不足していてもツールがクラッシュすることはありません。そのツール(またはその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-mcp

Claude 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-mcp

CLIオプション

オプション

効果

--version

バージョンを表示して終了

--check

認証を解決し、Graphの到達可能性とサインインログへのアクセスを調査し、レポートを表示して、終了コード0(設定エラーの場合は1)で終了

注意事項

  • カバレッジ契約。 ページングされたGraphコレクションを走査するすべての結果は、そのウィンドウが完全にスキャンされなかった場合にcappedブール値を保持します — 部分的なスキャンが完全なものとして報告されることは決してありません。

  • found: falseはエラーではありません。 get_userget_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

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides 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.

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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