entraadm MCP
MCP server for Microsoft Entra ID sign-in and audit-log triage (read-only by default)
Connector by shigechika · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/shigechika-entraadm-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 26, 2026.
- Tools
- 7 read · 2 write · 1 delete · 6 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 16
Read from the source code; the running server may list different tools.
Read 7 · Look things up without changing anything.
directory_auditsget_userhealth_checklist_subscriptionsm365_service_healthsignin_failure_statssignin_success_stats
Write 2 · Create, change, send or run things.
vm_backup_policiesvm_backup_status
Delete 1 · Delete, drop, revoke or wipe things.
revoke_sign_in_sessions
Not yet classified 6 · We could not tell from the name and description.
compromise_suspectsdaily_briefget_user_auth_methodssignin_by_ipsignin_logsvm_activity
Network hosts it talks to 6
github.com· found in codegraph.microsoft.com· found in codejson.schemastore.org· found in codemanagement.azure.com· found in coderaw.githubusercontent.com· found in codeshigechika.github.io· found in code
Tools (16)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
compromise_suspectsAccounts that were probably taken over, from one walk of the sign-in log. The success-side counterpart of ``signin_failure_stats``' spray suspects. Two findings, both from EXTERNAL source IPs (outside the address ranges in ENTRAADM_SITES_INI; without that file every IP counts as external): - ``spray_breaches`` (severity ``high``): an IP with credential failures (wrong password, unknown, locked or disabled account -- not MFA prompts, session interrupts or Conditional Access blocks, which follow a correct password) for ``min_spray_users`` or more distinct accounts in the window AND a s…
daily_briefOne-call morning-patrol summary: M365 service health, sign-in failures, spray suspects, admin actions. Combines ``m365_service_health``, ``signin_failure_stats``, ``directory_audits`` and ``compromise_suspects`` (its counts and the top 5 of each list; ``summary.compromise_suspects`` has the high/medium counts) into one result with a compact ``summary`` on top. The failure stats and the compromise suspects come from one walk of the sign-in log. The shape matches this fleet's other ``daily_brief`` tools. A permission failure in one section degrades only that section's contribution to ``summary`…
directory_auditsWho did what to the directory, and when -- the operator-side counterpart to signin_logs. Every admin action against a user object (block/unblock, password reset, role assignment, attribute edits) appears here, naming the actor (``initiated_by``) and the affected object(s) (``target_resources``). This is the record a manual "unblock and reset" intervention -- like the one that closed the 2026-08-21 case this server exists to shorten -- leaves behind; it is how a later triage can tell "already handled by a human" from "still open". ``user``, when given, matches audits where that account is eit…
get_userOne account's identity/lifecycle state -- the first thing to check on any triage report. ``account_enabled=false`` means the account itself is the whole story; stop there. A stale ``last_password_change_date_time`` alongside a fresh "wrong password" complaint (AADSTS50126 in ``signin_logs``) is the most common on-the-ground pattern: the password changed or expired somewhere, and a cached credential on one device is now stale. ``on_premises_sync_enabled=true`` means this account is synced from an on-premises directory (Entra Connect) -- Entra is a downstream copy of its password via Password H…
get_user_auth_methodsRegistered authentication methods for one account -- is MFA actually set up? ``mfa_registered`` answers "would this account survive a password-spray hit": True iff at least one non-password method is registered (Authenticator app, phone, FIDO2 security key, Windows Hello, a temporary access pass, software OATH token, or a platform credential/passkey). ``password`` itself is excluded from that count -- every account has one, so its presence alone says nothing about MFA coverage. A nonexistent account is a normal answer, not a tool failure: the result is ``{"found": false, "user_principal_name…
health_checkFleet-standard health probe: service/version/status plus two independent Graph probes. ``graph`` confirms Microsoft Graph is reachable at all (``GET /users`` with ``$top=1`` -- needs only ``User.Read.All``, the minimum permission every deployment of this server needs anyway). ``signin_probe`` additionally confirms the current credential can read sign-in logs -- the permission every other tool here except ``get_user`` depends on. Both probes always run, independently of each other: a tenant that has AuditLog.Read.All but not (yet) the baseline User.Read.All would otherwise have this report "Gr…
list_subscriptionsThe Azure subscriptions this credential can see, as ARM lists them. Azure Resource Manager in the DEFAULT tenant only, also when several tenants are configured (``ENTRAADM_CONFIG``). Read-only (``GET /subscriptions``; needs no RBAC beyond being able to see a subscription at all). The discovery anchor for ``vm_backup_status`` and ``vm_backup_policies``: both accept a subscription id or display name from this list. An empty list with ``auth`` working means no Reader role has been granted anywhere yet. ``capped`` marks a listing cut short by the page budget.
m365_service_healthMicrosoft 365 service status per service, and the open incidents and advisories. Two Graph reads (``ServiceHealth.Read.All``): ``healthOverviews`` (one row per service with its current status) and the unresolved ``serviceAnnouncement/issues``, newest first. A sign-in failure spike reads very differently while Entra or Exchange has an open incident, which is why ``daily_brief`` carries this section too. Each section degrades on its own (``{"error", "missing_permission"}``); ``summary`` is computed from whatever came back. ``capped`` means either collection was cut short by the page budget, so …
revoke_sign_in_sessionsSign one account out everywhere: invalidate its refresh tokens and session cookies. STATE-CHANGING -- the one tool in this server that writes. Registered only when ``ENTRAADM_ENABLE_REVOKE_SESSIONS=1``; a deployment without that variable never lists it. Calls Graph ``POST /users/{id}/revokeSignInSessions`` after looking the account up by exact userPrincipalName; a guest is refused. The account must sign in again everywhere, so its owner is affected too -- use it on a confirmed compromise, not for routine checks. Every result has the same keys: ``found``, ``user_principal_name``, ``account_en…
signin_by_ipEvery sign-in from one source IP: who got in from it, who was tried, and when. The follow-up to a ``spray_suspects`` or ``shared_ips`` hit: Graph can filter sign-ins on ``ipAddress`` server-side, so this is one cheap query, not a log walk. ``users`` summarises the IP per account (successes, failures, first/last seen, up to 50 accounts) over every row fetched; ``events`` lists the newest ``top`` entries that match ``result`` ("all" by default, or "success" / "failure"), each carrying the account name and the same AADSTS annotation as ``signin_logs``. ``capped=true`` means the page budget or th…
signin_failure_statsTenant-wide sign-in failure aggregation -- the Entra ID counterpart to the RADIUS failure patrol. Time-bounded (ENTRAADM_DEADLINE, default 45 s): on a wide window or a busy day the scan stops early and ``capped=true`` marks the counts as a lower bound; narrow ``hours`` for a full count. Aggregates failed sign-ins across the whole tenant into four views: top AADSTS error codes (with the same meaning annotations as ``signin_logs``), top failing users, top applications, and top source IPs. ``spray_suspects`` flags any IP with failed sign-ins against 5 or more distinct users -- Entra's smart loc…
signin_logsOne user's recent sign-in events, AADSTS-annotated. The most direct answer to "why can't this person log in": each entry's ``error_code_meaning`` translates the raw AADSTS code (e.g. 50126 -> "invalid credentials (wrong password)") so triage rarely needs a second lookup. ``result`` filters client-side after the Graph fetch (Graph cannot filter sign-ins on status/errorCode server-side): "failure" (the default) keeps only failed attempts, "success" keeps only clean ones, "all" keeps everything. Because the filter is client-side, this walks pages until it has collected ``top`` matching entries …
signin_success_statsTenant-wide *successful* sign-in aggregation by source IP -- the view that finds a breach. ``signin_failure_stats`` shows who is being attacked; this shows whether anyone got in. The breach signature is one source IP signing in successfully as several different accounts, most often over a legacy protocol (``clientAppUsed`` such as "Authenticated SMTP" or "IMAP4", which carry no MFA). ``shared_ips`` lists the IPs with successes for ``min_distinct_users`` or more distinct accounts, most-shared first (up to 50 IPs, ``shared_ips_capped`` when more qualified; account names up to 25 per IP), with t…
vm_activityWhat happened to an Azure VM in a time window: operations people ran, and events Azure raised. Azure Resource Manager in the DEFAULT tenant only, also when several tenants are configured (``ENTRAADM_CONFIG``). Answers "did someone restart this VM, or did Azure?" from the Azure activity log of the VM's subscription. Read-only; needs the Reader role on the subscription. Two reads: the VM's resource group (server-side filter, so a busy subscription cannot crowd the VM's own events out of the page budget) feeds ``health`` and ``vm_operations``; the whole subscription feeds the rest. - ``health`…
vm_backup_policiesSchedule and retention of the Azure VM backup policies in each Recovery Services vault. Azure Resource Manager in the DEFAULT tenant only, also when several tenants are configured (``ENTRAADM_CONFIG``). Read-only; needs the Reader role on the subscription. Per policy: ``policy_type`` (``V1`` = ``SimpleSchedulePolicy``, ``V2`` = ``SimpleSchedulePolicyV2`` with an hourly / daily / weekly schedule), ``schedule`` (frequency, run times in UTC, weekdays, or the hourly window), ``retention`` (``LongTermRetentionPolicy``: daily / weekly / monthly / yearly blocks with their day selection and duration…
Show 1 more tools
vm_backup_statusWhich Azure VMs are backed up by Azure Backup, and whether the last backup succeeded. Azure Resource Manager in the DEFAULT tenant only, also when several tenants are configured (``ENTRAADM_CONFIG``). Joins every VM of a subscription (``Microsoft.Compute/virtualMachines``) with the Azure-VM protected items of its Recovery Services vaults, on the VM's ARM id (case-insensitively; ARM casing differs between the two services). Read-only; needs the Reader role on the subscription. Per VM: - ``protected``: ``true`` when a protected item exists with ``protectionState`` ``Protected`` or ``IRPend…
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 2
- Weekly downloads
- 178
- Last commit
- Oct 24, 2026 (4 days ago)
- Last release
- Oct 26, 2026 (2 days ago)
- Last package publish
- Oct 24, 2026 (4 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.shigechika/entraadm-mcp- Version
- 1.8.1
- Auth
- No auth
- Packages
- pypi entraadm-mcp
- License
- MIT
- Repository
- github.com/shigechika/entraadm-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 26, 2026
More from shigechika
- 0.620score
Junos MCP
shigechika
MCP server for Juniper Networks device operations via junos-ops
ConnectorAFreshness: ALocal★ 1↓ 253/wkClaude Code +5 - 0.606score
Zabbix API MCP
shigechika
MCP server for the Zabbix API — daily brief, problems, hosts, items
ConnectorAFreshness: ALocal↓ 264/wkClaude Code +5 - 0.604score
KeyCloak MCP
shigechika
MCP server for KeyCloak Admin REST API via Service Account
ConnectorAFreshness: ALocal↓ 286/wkClaude Code +5 - 0.598score
Cloud Armor WAF Patrol MCP
shigechika
MCP server for Google Cloud Armor WAF log patrol: deny summaries and false-positive checks
ConnectorAFreshness: ALocal↓ 126/wkClaude Code +5 - 0.592score
Aruba Central MCP
shigechika
MCP server for Aruba Central: expose AP, switch, and client status to AI assistants
ConnectorAFreshness: ALocal↓ 79/wkClaude Code +5 - 0.591score
EOS MCP
shigechika
MCP server for Arista EOS device operations via eAPI
ConnectorAFreshness: ALocal↓ 95/wkClaude Code +5
Cite this page
entraadm MCP. Agent Mart. https://agentmart.dev/connectors/shigechika-entraadm-mcp (last updated 2026-10-26)