Entra ID SecOps MCP Server
Entra ID SecOps MCP Server
Сервер MCP, который предоставляет журналы безопасности Microsoft Entra ID в виде инструментов, выполняемых ИИ-агентом (Claude Desktop, Cursor или любой другой MCP-клиент).
Цель: позволить аналитику задать вопрос на естественном языке — «почему эта учётная запись больше не может войти?» — и получить за несколько секунд ответ, основанный на реальных данных тенанта.
📖 Руководство по установке и тестированию — три способа запуска сервера, пошагово. 🔍 Технический обзор — анализ рынка и безопасная экспозиция.
Принцип проектирования
Необработанный ответ Microsoft Graph содержит около шестидесяти полей на каждое событие. Сервер применяет агрессивное усечение: до модели доходят только около дюжины индикаторов безопасности. Это одновременно и оптимизация затрат (фактор ~35 по токенам), и контроль безопасности, поскольку неперечисленные поля — некоторые из которых контролируются атакующим — никогда не попадают в контекст.
Агрегаты (количество сбоев, различные IP-адреса, подозрительные паттерны) вычисляются на Python, а не выводятся моделью.
Инструменты
Инструмент | Назначение | Разрешение Graph | Лицензия |
| Карточка учётной записи: должность, группы, роли. Определяет серьёзность инцидента. |
| — |
| Недавние входы UPN с сводкой и подозрительными паттернами |
| P1 |
| Учётные записи, отмеченные как рискованные службой Identity Protection |
| P2 |
| Отдельные обнаружения: почему учётная запись в зоне риска |
| P2 |
| Административные изменения; выявляет действия по закреплению |
| — |
| Активные политики и пробелы в покрытии |
| — |
Все инструменты только для чтения: сервер никогда не изменяет тенант.
Рекомендуемый порядок расследования
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Подключение к реальному тенанту
Создайте App Registration на портале Entra.
Добавьте прикладные разрешения из таблицы выше, затем предоставьте согласие администратора.
Сгенерируйте секрет клиента.
Заполните
.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исключён из git файлом.gitignore. Секрет, попавший в репозиторий, нужно отозвать в 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 МБ, многоэтапная сборка, запуск от непривилегированного пользователя (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 |
Типы |
|
Протокол MCP |
|
Контейнер | проверен через реальный MCP-клиент: запуск 2,4 с, вызов инструмента ~110 мс |
Лицензия
MIT.
This server cannot be installed
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 Connectors
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Find relevant security data from Sentinel data lake for building effective agents. More:aka.ms/s/de
Read-only access to Auralogs production logs: search logs, inspect errors, review AI analyses.
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/Sultan-zd/mcp-entra-secops'
If you have feedback or need assistance with the MCP directory API, please join our Discord server