Inforcer MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AUTH_MODE | No | Auth mode (env or gateway) | env |
| LOG_LEVEL | No | Log level (debug, info, warn, error) | info |
| MCP_HTTP_PORT | No | HTTP server port | 8080 |
| MCP_TRANSPORT | No | Transport mode (stdio or http) | stdio |
| INFORCER_REGION | Yes | Inforcer API region — one of anz, eu, uk, us. | |
| INFORCER_API_KEY | Yes | Inforcer API key, sent as the Inf-Api-Key header. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| logging | {} |
| prompts | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| inforcer_navigateA | Discover available Inforcer tools by domain. Returns tool names and descriptions for the selected domain. All tools are callable at any time — this is a help/discovery aid, not a prerequisite. |
| inforcer_statusA | Check Inforcer API connectivity and available domains. Performs a live baselines.list() call as a read-only connectivity check. |
| inforcer_tenants_listA | List all managed tenants. Read-only. |
| inforcer_tenants_getA | Get a single tenant. Tenant identifier — accepts a numeric Client Tenant ID, a tenant DNS name, an Azure AD tenant GUID, or a friendly name. Resolved to the numeric Client Tenant ID before the request. Ambiguous names throw a clear error. Read-only. |
| inforcer_tenants_resolveA | Resolve a tenant name, DNS name, or Azure AD GUID to its numeric Inforcer Client Tenant ID (which is NOT the Azure AD tenant GUID). Read-only. |
| inforcer_baselines_listB | List baseline groups and their members. Optionally filter by the baseline (owner) tenant ID. Read-only. |
| inforcer_alignment_scoresA | List baseline alignment scores across tenants. Read-only. |
| inforcer_alignment_detailsA | Get detailed baseline-alignment drift for a tenant. Tenant identifier — accepts a numeric Client Tenant ID, a tenant DNS name, an Azure AD tenant GUID, or a friendly name. Resolved to the numeric Client Tenant ID before the request. Read-only. |
| inforcer_policies_listA | List policies for a tenant. Tenant identifier — accepts a numeric Client Tenant ID, a tenant DNS name, an Azure AD tenant GUID, or a friendly name. Resolved to the numeric Client Tenant ID before the request. Read-only. |
| inforcer_secure_scores_getA | Get the Microsoft Secure Score data for a tenant. Tenant identifier — accepts a numeric Client Tenant ID, a tenant DNS name, an Azure AD tenant GUID, or a friendly name. Resolved to the numeric Client Tenant ID before the request. Read-only. |
| inforcer_users_listA | List Entra ID user summaries for a tenant (paginated). Tenant identifier — accepts a numeric Client Tenant ID, a tenant DNS name, an Azure AD tenant GUID, or a friendly name. Resolved to the numeric Client Tenant ID before the request. Read-only. |
| inforcer_users_getA | Get full detail for a single user. Tenant identifier — accepts a numeric Client Tenant ID, a tenant DNS name, an Azure AD tenant GUID, or a friendly name. Resolved to the numeric Client Tenant ID before the request. Read-only. |
| inforcer_groups_listA | List Entra ID group summaries for a tenant (paginated). Tenant identifier — accepts a numeric Client Tenant ID, a tenant DNS name, an Azure AD tenant GUID, or a friendly name. Resolved to the numeric Client Tenant ID before the request. Read-only. |
| inforcer_groups_getA | Get full detail for a single group, including members. Tenant identifier — accepts a numeric Client Tenant ID, a tenant DNS name, an Azure AD tenant GUID, or a friendly name. Resolved to the numeric Client Tenant ID before the request. Read-only. |
| inforcer_roles_listA | List Entra ID directory role definitions for a tenant. Tenant identifier — accepts a numeric Client Tenant ID, a tenant DNS name, an Azure AD tenant GUID, or a friendly name. Resolved to the numeric Client Tenant ID before the request. Read-only. |
| inforcer_audit_event_typesA | List the audit event types available for filtering the activity log. Read-only. |
| inforcer_audit_searchA | Search the Inforcer activity (audit) log. All filters are optional; returns a page of events plus a continuation token for paging. Read-only. |
| inforcer_assessments_listA | List the assessments available to run (use to discover assessment IDs). Read-only. |
| inforcer_assessments_runA | ⚠ HIGH-IMPACT. Triggers an assessment run for a tenant. This is not destructive, but it kicks off real work in Inforcer and is visible to operators. Tenant identifier — accepts a numeric Client Tenant ID, a tenant DNS name, an Azure AD tenant GUID, or a friendly name. Resolved to the numeric Client Tenant ID before the request. Confirm with the user before invoking. |
| inforcer_reports_types_listA | List the catalog of available report types — key, supported output formats, whether the type is collatable (single cross-tenant output), and accepted parameters. Use to discover valid (type, output_format) pairs before calling inforcer_reports_run. Read-only. |
| inforcer_reports_runs_listA | List queued and completed report runs. Read-only. |
| inforcer_reports_runA | ⚠ HIGH-IMPACT. Queues one or more reports across one or more tenants. This is not destructive, but it kicks off real report-generation work in Inforcer. Reports run asynchronously — use inforcer_reports_run_status to poll the returned run(s) to completion, then inforcer_reports_download_output to fetch each finished output. Confirm with the user before invoking. |
| inforcer_reports_run_statusA | Poll a report run. Returns isTerminal:false with no outputs while the run is still in progress, or isTerminal:true with the list of downloadable outputs once it finishes. Read-only. |
| inforcer_reports_download_outputA | Download a single finished report output (discovered via inforcer_reports_run_status). Returns the file content base64-encoded along with its filename and content type. Read-only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| alignment-review | Review tenant alignment scores and surface the largest drift |
| tenant-drift-detail | Drill into policy/baseline drift for a specific tenant |
| identity-posture-check | Review Entra ID users, groups, and privileged roles for a tenant |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Each tool targets a distinct resource/action: tenants, users, groups, roles, policies, baselines, alignment, audit, assessments, and reports. Even close pairs like alignment_scores vs alignment_details or assessments_run vs reports_run are clearly separated by noun and purpose. The discovery and status tools also serve clearly different roles.
All tools share the inforcer_ prefix and mostly follow a resource_verb pattern like tenants_list, users_get, and groups_list. A few names omit the verb (inforcer_status, inforcer_alignment_scores, inforcer_audit_event_types) and report actions use compound names like reports_run_status and reports_download_output, but the overall convention remains readable and predictable.
With 24 tools, this server sits at the high end of the reasonable range and feels heavy relative to a tightly scoped MCP server. The count is justified by the breadth of the domain — tenants, identity, alignment, audit, assessments, and reports — but it is more than an agent will typically need in one session.
The toolset covers the core workflows well: tenant resolution, identity object listing/detail, baseline alignment, secure scores, audit search, assessment discovery/run, and the full report queue/status/download lifecycle. Minor gaps remain, such as no policy detail view, no role detail view, and no assessment run status polling, but these are not blocking for the main Inforcer use cases.