MCP server for Azure RBAC least-privilege access analysis and recommendations
Azure RBAC MCP demonstrates solid tool design with well-structured schemas and comprehensive descriptions. All 6 tools have explicit input schemas with typed properties and detailed parameter descriptions. Tool names follow verb_noun convention (analyze_, recommend_, generate_, explain_, list_). Descriptions are substantive (150-250 chars), explaining WHAT the tool does and WHEN to use it. However, output schemas are not documented in the source code, LLMs cannot see what fields to expect from responses. Error handling guidance is absent; tools do not indicate what to do if a role is not found or if validation fails. No tool annotations (readOnlyHint, destructiveHint) despite all tools being read-only or safe operations. Parameter descriptions are strong but lack explicit format constraints (e.g., no regex patterns, no min/max for arrays). Missing: per-tool output schema documentation, error recovery guidance, and tool annotations.
Analyzes an Azure RBAC role assignment for over-permissioning, privilege escalation risks, and compliance issues. Returns a detailed breakdown of what permissions are granted, which are risky, and what least-privilege alternatives exist. Works with both built-in roles (e.g 'Contributor', 'Virtual Machine Contributor') and can flag unknown custom roles.
Provides a detailed plain-language explanation of any Azure RBAC permission string. Breaks down the resource provider, resource type, and operation. Identifies the risk level, explains what the permission actually does in practice, shows which built-in roles include it, and suggests narrower alternatives if over-broad.
Generates a least-privilege Azure custom role definition in ARM JSON and Bicep format. Validates the provided permissions for dangerous patterns (wildcards, privilege escalation vectors), computes a least-privilege score, and produces ready-to-deploy code with Azure CLI commands. Optionally validates the role against a known job function profile.
Lists all Azure built-in roles in the server's reference database, optionally filtered by category or risk level. Useful for exploring available roles before running analysis or recommendations.
Lists all known job function profiles available for role recommendations and custom role validation. Each profile maps a common job function to a set of required, optional, and forbidden Azure permissions.
Output schemas not documented. LLMs cannot see what fields responses contain, forcing them to guess downstream field names and risk broken tool chains.
No error handling guidance. Tools do not indicate what to do if a role is not found, validation fails, or compliance framework is unknown. LLMs receive raw errors with no recovery path.
Missing tool annotations. All tools are read-only and safe, but lack readOnlyHint annotations. This prevents clients from optimizing caching and retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Recommends the most appropriate Azure RBAC built-in roles for a described job function or use case, following the principle of least privilege. Returns ranked role recommendations with permission breakdowns, forbidden actions, and compliance notes for frameworks like CMMC L2, HIPAA, and NIST 800-171. Known profiles include: vm-operator, vm-admin, security-auditor, devops-engineer, database-admin, network-engineer, storage-reader, monitoring-engineer, key-vault-app.
Array parameters lack size constraints. 'actions', 'dataActions', 'notActions', 'notDataActions', 'resourceTypes', 'requiredOperations' have no minItems/maxItems. LLMs could pass unbounded arrays.
Enum constraints incomplete. 'category' in list_builtin_roles lists values in description but not as formal enum. 'riskLevel' is properly enumerated, but 'complianceFramework' in recommend_roles accepts free-form strings instead of enum.