Skip to main content

MCP-backed Terraform assistant with ephemeral-values compliance.

Project description

Terraform Guardrail MCP

CI

Terraform Guardrail MCP is a Python-based MCP server + CLI + minimal web UI that helps AI assistants and platform teams generate valid Terraform code and enforce ephemeral-values compliance. It targets multi-cloud teams and focuses on reducing configuration drift, secret leakage, and invalid provider usage. Live app: https://terraform-guardrail.streamlit.app/

What it does

  • MCP server that exposes provider metadata and compliance checks
  • CLI for scanning Terraform configs and state for sensitive leaks
  • Minimal web UI for quick scans and reports
  • Rules engine focused on ephemeral values, write-only arguments, and secret hygiene

Architecture

flowchart LR
    subgraph Interfaces
        CLI[CLI]
        MCP[MCP Server]
        WEB[Web UI]
    end

    subgraph Core
        SCAN[Compliance Engine]
        GEN[Snippet Generator]
    end

    REG[Terraform Registry]
    TF[Terraform CLI]

    CLI --> SCAN
    WEB --> SCAN
    MCP --> SCAN
    MCP --> GEN
    SCAN --> TF
    GEN --> REG
    MCP --> REG
flowchart TB
    INPUTS[Inputs: .tf, .tfvars, .tfstate] --> PARSE[Parse & Normalize]
    PARSE --> RULES[Apply Rules TG001-TG005]
    RULES --> REPORT[Findings + Summary Report]
    REPORT --> OUTPUT[CLI JSON / UI Render / MCP Response]

MVP scope (v0.1)

  • Scan .tf and .tfvars for sensitive values and missing ephemeral = true
  • Scan .tfstate for leaked sensitive values
  • Provider metadata retrieval for AWS and Azure via Terraform Registry
  • MCP server with scan_terraform and get_provider_metadata tools
  • Minimal web UI for uploading a file and viewing the report

Quickstart

python -m venv .venv
source .venv/bin/activate
pip install -e "[dev]"

# CLI scan
terraform-guardrail scan examples

# snippet generation
terraform-guardrail generate aws aws_s3_bucket --name demo

# MCP server (stdio)
terraform-guardrail mcp

# Web UI
terraform-guardrail web

CLI examples

# scan a directory
terraform-guardrail scan ./examples --format json

# scan state files too
terraform-guardrail scan ./examples --state ./examples/sample.tfstate

# enable schema-aware validation (requires terraform CLI + initialized workspace)
terraform-guardrail scan ./examples --schema

Web UI

Visit http://127.0.0.1:8000 and upload a Terraform file to view a compliance report.

Streamlit App

streamlit run streamlit_app.py

Live app: https://terraform-guardrail.streamlit.app/

Streamlit Cloud deployment

  1. Push this repo to GitHub.
  2. Create a new Streamlit Cloud app.
  3. Set the main file path to streamlit_app.py.
  4. Deploy (Streamlit will install from requirements.txt).

Release Links

Deployment Guide

See docs/streamlit_cloud.md for a detailed Streamlit Cloud walkthrough.

Diagrams

Mermaid diagrams render on GitHub and the Wiki. If you're viewing this on PyPI, use these links:

Release Checklist

  • Update version in pyproject.toml.
  • Update RELEASE_NOTES.md and CHANGELOG.md.
  • Commit changes and push to main.
  • Create and push a tag: git tag -a vX.Y.Z -m "vX.Y.Z" then git push origin vX.Y.Z.
  • Confirm GitHub Actions release workflow completed successfully.

Changelog Automation

This repo uses git-cliff to generate CHANGELOG.md.

git cliff -o CHANGELOG.md

Or run:

make changelog

Release Helpers

make release-dry VERSION=0.2.1
make version-bump VERSION=0.2.1

MCP tools (current)

  • scan_terraform: Run compliance checks over a path and optional state file.
  • get_provider_metadata: Fetch provider metadata from Terraform Registry (AWS + Azure).
  • generate_snippet: Generate Terraform snippets for common AWS/Azure resources.

Roadmap

  • Schema-aware code generation using provider schemas
  • fix command to apply safe rewrites for ephemeral values
  • Multi-environment policies and OPA-compatible output
  • Stack-aware orchestration and drift detection

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

terraform_guardrail-0.2.2.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

terraform_guardrail-0.2.2-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file terraform_guardrail-0.2.2.tar.gz.

File metadata

  • Download URL: terraform_guardrail-0.2.2.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for terraform_guardrail-0.2.2.tar.gz
Algorithm Hash digest
SHA256 2bc86b29184d5d1a2f255e1d4daa06af1099377ca67591d99dcc1d11827569a6
MD5 a363c7d4d8e9ba5d0550cf3367a185db
BLAKE2b-256 9b522aef5849fc864909864dad99d984f04cbc1bb87bedf4b40f92f26b5f18f5

See more details on using hashes here.

File details

Details for the file terraform_guardrail-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for terraform_guardrail-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b99af98f3e4e2f71ffda4c7c21091263770565b1f47391372ba6ba78a3359e15
MD5 2217c801f153282edecb4e6392273f27
BLAKE2b-256 428e13cde6e7ce1ae3e4bf98b58e08dd957b8b5bcaf8db2c6b84341707fa556d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page