IAM Sentinel MCP Server
Provides a GitHub Action that scans IAM policies in pull requests and fails the build when high-severity privilege escalation paths are found, with inline SARIF feedback.
Extracts IAM configurations from Terraform plans to detect privilege escalation paths and provide least-privilege recommendations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IAM Sentinel MCP ServerAudit this AWS IAM policy for wildcard actions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Why
Cloud IAM scanners (Wiz, Snyk, GitHub Advanced Security) send your policies to their cloud.
Regulated teams can't do that. IAM Sentinel finds privilege-escalation paths, wildcards,
PassRole/roleAssignment abuse, public bindings, and data-exfil grants with a deterministic
rule engine โ reproducible and auditable, not an LLM guess โ entirely on your infrastructure.
๐ Air-gapped โ no telemetry, no outbound calls (except an optional local model).
๐ฏ Deterministic โ version-stamped findings from a rule engine, not hallucinations.
๐ In your IDE โ native stdio MCP server for Cursor / Claude Code.
๐งพ Auditable โ every scan persisted with actor, timestamp, SHA-256, and rule-pack version.
๐ฅ๏ธ Runs anywhere โ CPU-only core; a GPU is only for the optional written remediation.
Related MCP server: shieldly-mcp
Quickstart
git clone https://github.com/Pratikchandrathakur/IAM-Sentinel && cd iam-sentinel
cp .env.example .env # set API keys (Community tier needs no license)
docker compose up -d --build
open http://127.0.0.1:8080 # dashboard ยท API at /api/... ยท health at /api/healthAudit a policy (provider auto-detected):
curl -s http://127.0.0.1:8080/api/audit/iam -H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{"policy_json":"{\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"*\",\"Resource\":\"*\"}]}"}' | jqNo GPU / macOS? Set LLM_NARRATIVE_ENABLED=false โ you still get every deterministic finding.
Full per-OS steps in INSTALL.md.
Use it inside your IDE (MCP)
{ "mcpServers": { "iam-sentinel": {
"command": "python3", "args": ["/abs/path/to/iam-sentinel/mcp_stdio.py"],
"env": { "AUTH_ENABLED": "false", "LLM_NARRATIVE_ENABLED": "false" }
}}}Then ask your assistant: "Audit this IAM policy with iam-sentinel."
CI/CD guardrails โ block privilege escalation on every PR
Scan the IAM inside a Terraform plan (or raw policy files) and fail the build when a new escalation path appears. Findings show inline on the PR via SARIF. No server needed.
# .github/workflows/iam-guardrails.yml (see examples/github-actions/)
- run: terraform show -json tf.plan > plan.json
- uses: Pratikchandrathakur/IAM-Sentinel@v1
with: { tfplan: plan.json, fail-on: HIGH }Or run the gate locally / in any CI (pure stdlib, offline):
python3 guardrails.py --tfplan plan.json --fail-on HIGH # exit 1 = blocking findings
python3 guardrails.py policies/*.json --format sarif > iam.sarifIt extracts IAM from Terraform plans (AWS aws_iam_policy/roles, Azure azurerm_role_definition,
GCP custom roles/bindings) โ no HCL parsing, using the resolved plan JSON.
No model required. Every scan returns a full deterministic remediation report (fixes + least-privilege skeleton) with zero external services. The optional local LLM is pure polish. Custom rules are a config drop-in โ see
custom_rules.example.json(no code change).
What it detects
AWS โ 19 escalation techniques (Rhino/PMapper):
AttachUserPolicy,PutRolePolicy,CreateAccessKey,PassRole+compute,UpdateAssumeRolePolicy, โฆ; wildcards,NotActiontraps, wildcard principals, unconditionedAssumeRole, data-exfil grants.Azure โ
roleAssignments/write,elevateAccess,Microsoft.Authorization/*, wildcard actions, scope breadth.GCP โ primitive roles,
allUsersbindings,setIamPolicy/serviceAccountTokenCreator/actAs.
Pricing
Open-core. Run it free; upgrade for seats, history, and enterprise controls (offline-licensed).
Tier | Price | Seats | Scans/mo | Adds |
Community | Free | 1 | 100 | AWS/Azure/GCP ยท MCP ยท audit trail |
Team | $199/mo | 10 | 5,000 | Remediation diff |
Enterprise | $4,999/yr | โ | โ | SSO/RBAC ยท TLS ยท SLA |
See the website or email krisprogrammer1@gmail.com for a pilot.
Tests
python3 tests/test_iam_engine.py # + test_multicloud / test_store / test_mcp / test_auth / ...License
Business Source License 1.1 (see LICENSE). Source is open; Community use
is free (single user / evaluation). Team, CI/CD, and organization-wide production use
requires a commercial subscription โ contact krisprogrammer1@gmail.com. Converts to
Apache-2.0 on 2030-07-25. You may not resell it or offer it as a competing hosted service.
This server cannot be deployed
Maintenance
Related MCP Connectors
IaC attack-path auditor: finds internet-to-crown-jewel chains in Terraform/CFN/K8s.
AWS cloud security scanners for AI agents โ S3, IAM, EC2, EKS, RDS, CloudTrail, CloudWatch Logs
Fail-closed policy guardrails for AI agents running kubectl, terraform, helm, and argocd.
Security reviews, threat models over a repo or website, and remediation tracking, in your editor.
Related MCP Servers
- AlicenseAqualityCmaintenanceA local-first AWS security tool that uses graph theory to discover attack paths (e.g., Internet โ Role โ DB) and prioritize remediations. It allows agents to perform read-only security audits and generate Terraform fixes without data exfiltration.154Apache 2.0

shieldly-mcpofficial
AlicenseAqualityCmaintenanceEnables AI assistants to analyze AWS IAM policies and CloudFormation templates for security risks.252 npmMIT- FlicenseNot gradedqualityCmaintenanceEnables security review of code diffs and files in Cursor/VS Code using local rule-based analysis with the same rule IDs as CI, no cloud required.-
- AlicenseNot gradedqualityBmaintenanceStatic analysis scanner for multi-tenant SaaS and MCP server code that catches cross-tenant data leakage with 57 deterministic rules, including an MCP server for Claude Desktop and Cursor integration.4,098 npmMIT