Skip to main content
Glama
Sultan-zd

Entra ID SecOps MCP Server

by Sultan-zd

Entra ID SecOps MCP Server

CI Python MCP Licence

Microsoft Entra ID のセキュリティログを、AIエージェント(Claude Desktop、Cursor、その他のMCPクライアント)が実行可能なツールとして公開する MCP サーバーです。

目的: アナリストが自然言語で質問(「このアカウントがなぜログインできなくなったのか?」)を投げかけ、テナントの実際のデータに基づく回答を数秒で得られるようにすることです。

📖 インストールとテストのガイド — サーバーを起動する3つの方法をステップバイステップで解説。 🔍 技術ブリーフ — 市場調査と安全な公開方法。

設計思想

Microsoft Graph の生のレスポンスには、イベントあたり約60のフィールドが含まれます。このサーバーは積極的な切り詰めを適用し、セキュリティ指標はわずか12個ほどしかモデルに到達しません。これはコスト最適化(トークン数で約35分の1)であると同時に、セキュリティ対策でもあります。リストにないフィールド(攻撃者が制御できるものも含む)は決してコンテキストに入り込まないためです。

集計(失敗回数、異なるIP、疑わしいパターン)はPython で計算され、モデルによる推論ではありません。

ツール

ツール

説明

Graph のアクセス許可

ライセンス

get_user_context

アカウントの情報: 役職、グループ、保有ロール。インシデントの重大度を判定します。

Directory.Read.All

get_user_signins

UPN の最近のサインイン。要約と疑わしいパターン付き。

AuditLog.Read.All

P1

get_risky_users

Identity Protection によってリスクありと報告されたアカウント。

IdentityRiskyUser.Read.All

P2

get_risk_detections

個別の検出: アカウントがリスクとされる理由

IdentityRiskEvent.Read.All

P2

get_directory_audits

管理操作の変更。永続化の痕跡を通知します。

AuditLog.Read.All

get_conditional_access_policies

アクティブなポリシーとカバレッジの欠陥。

Policy.Read.All

すべてのツールは読み取り専用です。サーバーがテナントを変更することは一切ありません。

推奨調査手順

get_user_context     le compte est-il privilégié ? l'incident est-il grave ?
      ↓
get_user_signins     que s'est-il passé sur l'authentification ?
      ↓
get_risk_detections  qu'a détecté Identity Protection, et pourquoi ?
      ↓
get_directory_audits l'attaquant a-t-il modifié quelque chose une fois entré ?

この一連の流れはサーバーの instructions にも記載されており、MCP クライアントがモデルに渡します。

クイックスタート(Azure テナントなし)

fixture モードはデモ用インシデントを再生するもので、テナント、ライセンス、シークレットは一切不要です。

python -m venv venv
venv/Scripts/activate          # Windows ; sur Linux/macOS : source venv/bin/activate
pip install -e ".[dev]"

cp .env.example .env           # ENTRA_DATA_SOURCE=fixture est déjà la valeur par défaut
python -m entra_secops_mcp

実テナントへの接続

  1. Entra ポータルで アプリの登録 を作成します。

  2. 上記の表のアプリケーション許可を追加し、管理者の同意を付与します。

  3. クライアントシークレットを生成します。

  4. .env を設定します:

AZURE_TENANT_ID=...
AZURE_CLIENT_ID=...
AZURE_CLIENT_SECRET=...
ENTRA_DATA_SOURCE=graph

必要なライセンス。 API経由でサインインログにアクセスするには Entra ID P1 ライセンスが必要で、Identity Protection ツールには P2 が必要です。これらがないと Graph は 403 を返します。他のツールは有料ライセンスなしで動作します。開始にテナントのライセンスを確認してください。これが数日を無駄にする典型的な障害です。

セキュリティ

  • コードにも Docker イメージにもシークレットは存在しません。起動時に --env-file 経由で注入されます。

  • .env.gitignore により git の管理外です。リポジトリにプッシュされたシークレットは、ファイルから削除するだけでなく、Azure で失効させなければなりません。

  • ログは stderr に送られます。stdio トランスポートでは、stdout が JSON-RPC プロトコルを運ぶため、余分なバイトは一切許されません。

設定

すべての変数は .env.example に文書化されています。

Docker

docker build -t entra-secops-mcp .
docker run -i --rm --env-file .env entra-secops-mcp

最終イメージ: 277 MB、マルチステージビルド、非 root ユーザー(uid=1000)で実行、レイヤー内にシークレットなし

-i は標準入力を開いたままにします。MCP プロトコルはここを通ります。-t は付けないでください。疑似端末がカラーコードを注入し、JSON フレームを壊します。

開発

pytest              # 81 tests
ruff check src tests
mypy src            # mode strict
pre-commit install  # contrôles avant chaque commit
python demo.py      # investigation de démonstration

ステータス

ツール

6、すべて読み取り専用

テスト

81、Azure テナント不要

型チェック

mypy --strict 警告なし

MCP プロトコル

2026-07-28 (SDK mcp 2.0)

コンテナ

実 MCP クライアントで検証済み: 起動 2.4 秒、ツール呼び出し ~110 ms

ライセンス

MIT.

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (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 Connectors

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/Sultan-zd/mcp-entra-secops'

If you have feedback or need assistance with the MCP directory API, please join our Discord server