entraadm-mcp
Inglés | 日本語
Servidor MCP para el triaje de inicios de sesión y registros de auditoría de Microsoft Entra ID. Solo lectura.
Por qué esto en lugar del Microsoft MCP Server for Enterprise oficial
Microsoft ofrece un MCP Server for Enterprise oficial para datos de Entra ID. Es una buena opción para un administrador interactivo frente a un teclado, y no es adecuado para un bot de triaje desatendido:
Solo autenticación delegada. El servidor oficial no admite autenticación solo de aplicación (credenciales de cliente), por lo que no puede ejecutarse sin supervisión detrás de una cuenta de servicio. entraadm-mcp está diseñado para ese caso: solo aplicación en producción, con un respaldo delegado (
az login) para el desarrollo local.Una herramienta de consulta Graph de propósito general, no un conjunto fijo de herramientas. El servidor oficial expone una herramienta que permite al modelo construir llamadas arbitrarias
GET/descubrimiento de esquema contra Microsoft Graph. Eso es flexible para un humano, pero incómodo de poner detrás de una lista de permitidos para un perfil de triaje automatizado. entraadm-mcp expone siete herramientas fijas de solo lectura en su lugar.Sin traducción de AADSTS. Los fallos de inicio de sesión se devuelven como códigos de error sin procesar; el triaje aún necesita una tabla de búsqueda. entraadm-mcp anota cada fallo de inicio de sesión con lo que el código realmente significa.
Sin agregación entre solicitudes. Microsoft Graph en sí no puede filtrar inicios de sesión por
status/errorCodeen el servidor, y no tiene una vista integrada de rociado de contraseñas.signin_failure_statsagrega en el cliente y marca IPs con inicios de sesión fallidos contra muchos usuarios distintos: el patrón que el bloqueo inteligente por cuenta de Entra no detecta por sí solo.
Related MCP server: Microsoft Graph MCP Server
Herramientas
Herramienta | Qué responde |
| ¿Es accesible Graph y puede esta credencial leer los registros de inicio de sesión? |
| ¿Está habilitada esta cuenta, sincronizada desde on-prem, y cuáles son sus licencias? |
| ¿Por qué falló (o tuvo éxito) el inicio de sesión de este usuario, con el código AADSTS traducido? |
| Agregación de fallos a nivel de inquilino: principales códigos de error, usuarios, aplicaciones, IPs de origen y sospechosos de rociado de contraseñas |
| ¿Quién cambió qué en el directorio (bloqueo/desbloqueo, ediciones de atributos) y cuándo? |
| ¿Está realmente registrado MFA para esta cuenta? |
| Resumen de una sola llamada que combina |
Cada herramienta es de solo lectura. Las operaciones de escritura (desbloquear una cuenta, restablecer una contraseña, revocar una sesión) están fuera del alcance de este servidor.
Modelo de autenticación
Dos modos de autenticación, seleccionados por qué variables de entorno están establecidas:
Modo | Cuándo | Variables de entorno |
app-only | Las tres establecidas |
|
azure-cli | Ninguna establecida | (usa la sesión actual de |
Establecer una o dos de las tres variables de solo aplicación es un error de configuración y el servidor se niega a iniciar, en lugar de volver silenciosamente a un modo de autenticación diferente al previsto.
Permisos de Graph requeridos
Herramienta(s) | Permiso | Notas |
|
| |
|
| |
|
| Solo app-only; no disponible bajo autenticación delegada ( |
Un permiso faltante nunca bloquea una herramienta. Degrada esa herramienta (o ese campo) a {"error": "...", "missing_permission": "..."} con una explicación legible de qué rol o permiso se necesita, para que health_check y todas las demás herramientas sigan siendo utilizables incluso antes de que se otorguen los permisos completos.
Instalación
uv tool install entraadm-mcp
# or
pip install entraadm-mcpConfiguración
Establece las tres variables de solo aplicación para uso en producción/desatendido:
export ENTRAADM_TENANT_ID=00000000-0000-0000-0000-000000000000
export ENTRAADM_CLIENT_ID=00000000-0000-0000-0000-000000000000
export ENTRAADM_CLIENT_SECRET=your-client-secretO deja las tres sin establecer y ejecuta az login primero para el desarrollo local.
Opcional:
# Default page cap for the log-scanning tools (1-50, default 5).
export ENTRAADM_MAX_PAGES_DEFAULT=5Uso
Claude Code (plugin)
/plugin marketplace add shigechika/entraadm-mcp
/plugin install entraadm-mcp@entraadm-mcpClaude Code (manual)
Añade a .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:-}"
}
}
}
}Ejecución directa
entraadm-mcpOpciones de CLI
Opción | Efecto |
| Imprime la versión y sale |
| Resuelve la autenticación, comprueba la accesibilidad de Graph y el acceso a los registros de inicio de sesión, imprime un informe, sale con 0 (o 1 en error de configuración) |
Notas
Contrato de cobertura. Cada resultado que recorre una colección paginada de Graph lleva un booleano
cappedcuando su ventana no se escaneó por completo: un escaneo parcial nunca se informa como si fuera exhaustivo.found: falseno es un error.get_useryget_user_auth_methodsresponden a una cuenta inexistente con{"found": false, ...}, no con una claveerror: un userPrincipalName mal escrito nunca debería parecer que este servidor está roto.Retención. Entra ID P1 retiene los registros de inicio de sesión y de auditoría de directorio durante 30 días. Una ventana más allá de eso devuelve un resultado vacío, no un error.
Desarrollo
uv sync --dev
uv run pytest -v
uv run ruff check .
uv run ruff format --check .Prueba de humo en vivo
uv run python scripts/smoke_test.pySolo lectura, sin cargas útiles impresas (solo nombres de herramientas/estados/recuentos de filas) y acotado (ventanas explícitas pequeñas/límites de página): nada aquí escribe en el inquilino ni escanea más de un día de registros.
Publicación
Este repositorio utiliza release-please impulsado por Conventional Commits. Fusiona un PR feat:/fix: a main, y release-please abre (o actualiza) un PR de lanzamiento; fusionar ese PR etiqueta un lanzamiento y activa el pipeline de publicación (PyPI, MCP Registry).
Licencia
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