Entra ID SecOps MCP Server
Entra ID SecOps MCP Server
Servidor MCP que expone los registros de seguridad de Microsoft Entra ID como herramientas ejecutables por un agente de IA (Claude Desktop, Cursor, o cualquier otro cliente MCP).
Objetivo: permitir a un analista plantear una pregunta en lenguaje natural — «¿por qué esta cuenta ya no puede conectarse?» — y obtener en pocos segundos una respuesta basada en los datos reales del tenant.
📖 Guía de instalación y prueba — las tres formas de lanzar el servidor, paso a paso. 🔍 Informe técnico — análisis del mercado y exposición segura.
Principio de diseño
Una respuesta bruta de Microsoft Graph contiene unos sesenta campos por evento. El servidor aplica un truncamiento agresivo: solo una docena de indicadores de seguridad llegan al modelo. Es a la vez una optimización de coste (factor ~35 en los tokens) y un control de seguridad, ya que los campos no listados —algunos de los cuales están controlados por un atacante— nunca entran en el contexto.
Los agregados (número de fallos, IP distintas, patrones sospechosos) se calculan en Python, no los deduce el modelo.
Herramientas
Herramienta | Objeto | Permiso Graph | Licencia |
| Ficha de la cuenta: puesto, grupos, roles asignados. Determina la gravedad de un incidente. |
| — |
| Conexiones recientes de un UPN, con resumen y patrones sospechosos |
| P1 |
| Cuentas marcadas como en riesgo por Identity Protection |
| P2 |
| Detecciones individuales: por qué una cuenta está en riesgo |
| P2 |
| Modificaciones administrativas; señala las acciones de persistencia |
| — |
| Políticas activas y brechas de cobertura |
| — |
Todas las herramientas son de solo lectura: el servidor nunca modifica el tenant.
Orden de investigación recomendado
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é ?Esta secuencia también se describe en las instructions del servidor, que el cliente MCP transmite al modelo.
Inicio rápido (sin tenant de Azure)
El modo fixture reproduce un incidente de demostración y no requiere ni tenant, ni licencia, ni secreto.
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_mcpConexión a un tenant real
Crear un App Registration en el portal de Entra.
Agregar los permisos de aplicación de la tabla anterior y otorgar el consentimiento del administrador.
Generar un secreto de cliente.
Completar
.env:
AZURE_TENANT_ID=...
AZURE_CLIENT_ID=...
AZURE_CLIENT_SECRET=...
ENTRA_DATA_SOURCE=graphLicencia requerida. El acceso a los registros de inicio de sesión a través de la API requiere una licencia de Entra ID P1, y las herramientas de Identity Protection requieren P2. Sin ellas, Graph responde
403. Las demás herramientas funcionan sin licencia de pago. Verifique la licencia del tenant antes de comenzar: es el bloqueo clásico que hace perder varios días.
Seguridad
Ningún secreto está presente en el código ni en la imagen Docker. Se inyectan al inicio mediante
--env-file..envestá excluido de git por.gitignore. Un secreto subido a un repositorio debe ser revocado en Azure, no solo eliminado del archivo.El registro se dirige a
stderr: en el transporte stdio,stdouttransporta el protocolo JSON-RPC y no tolera ningún byte parásito.
Configuración
Todas las variables están documentadas en .env.example.
Docker
docker build -t entra-secops-mcp .
docker run -i --rm --env-file .env entra-secops-mcpImagen final: 277 MB, construcción en varias etapas, ejecución como usuario no root (uid=1000), ningún secreto en las capas.
-i mantiene la entrada estándar abierta — por ahí pasa el protocolo MCP. Nada de -t: un pseudo-terminal inyecta códigos de color que corrompen las tramas JSON.
Desarrollo
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émonstrationEstado
Herramientas | 6, todas de solo lectura |
Pruebas | 81, sin tenant de Azure requerido |
Tipos |
|
Protocolo MCP |
|
Contenedor | verificado con un cliente MCP real: inicio 2,4 s, llamada de herramienta ~110 ms |
Licencia
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