Back to MCP Servers

Tfmcp

🦀 🏠 - A Terraform MCP server allowing AI assistants to manage and operate Terraform environments, enabling reading configurations, analyzing plans, applying configurations, and managing Terraform state.

cloud-platformsai
By nwiizo
37130Updated 1 week agoRustMIT

Installation

npx -y tfmcp

Configuration

{
  "mcpServers": {
    "tfmcp": {
      "command": "npx",
      "args": ["-y", "tfmcp"]
    }
  }
}

How to use

  1. Run the installation command above (if needed)
  2. Open your Claude Code settings file (~/.claude/settings.json)
  3. Add the configuration to the mcpServers section
  4. Restart Claude Code to apply changes

tfmcp: Terraform Model Context Protocol Tool

Trust Score

⚠️ This project includes production-ready security features but is still under active development. While the security system provides robust protection, please review all operations carefully in production environments. ⚠️

tfmcp is a command-line tool that helps you interact with Terraform via the Model Context Protocol (MCP). It allows LLMs to manage and operate your Terraform environments, including:

🎮 Demo

See tfmcp in action with Claude Desktop:

tfmcp Demo with Claude Desktop

  • Reading Terraform configuration files
  • Analyzing Terraform plan outputs
  • Applying Terraform configurations
  • Managing Terraform state
  • Creating and modifying Terraform configurations

🎉 Current Release

tfmcp v0.2.1 is the current release:

cargo install tfmcp --version 0.2.1

What's new in v0.2.1

  • HCP/TFE read coverage and explicitly gated write operations
  • Streamable HTTP with loopback-safe Host and Origin validation
  • Project inspection, plan review, lockfile checks, and state-safety workflows
  • Terraform 1.15.8 CI and container baseline
  • Rust module-boundary and duplicate-code release gates

Features

AreaCapabilities
Local TerraformValidate, format, plan/apply workflows, import guidance, outputs, providers, dependency graphs, refresh-only flows, and guarded state operations
Repository intelligenceEntrypoint/project detection, configuration analysis, quality checks, security checks, module health, plan review, and drift/state-safety inspection
RegistryPublic/private provider, module, and policy lookup with HashiCorp-compatible aliases
HCP Terraform / TFEOrganizations, projects, workspaces, runs, plans, applies, variables, policy sets, variable sets, tags, stacks, and gated operations
MCP deploymentstdio and Streamable HTTP, toolsets, resources, health/metrics, sessions, Host/Origin validation, rate limits, TLS wiring, and audit logging
PackagingCargo, Docker/OCI metadata, MCP Registry metadata, Rust Edition 2024

Installation

From Source

# Clone the repository
git clone https://github.com/nwiizo/tfmcp
cd tfmcp

# Build and install
cargo install --path .

From Crates.io

cargo install tfmcp

Using Docker

# Clone the repository
git clone https://github.com/nwiizo/tfmcp
cd tfmcp

# Build the Docker image
docker build -t tfmcp .

# Run the container
docker run -it tfmcp

Requirements

  • Rust 1.88.0+ (Rust Edition 2024)
  • Terraform CLI 1.15.8 installed and available in PATH
  • Claude Desktop (for AI assistant integration)
  • Docker (optional, for containerized deployment)

Usage

$ tfmcp --help
✨ A CLI tool to manage Terraform configurations and operate Terraform through the Model Context Protocol (MCP).

Usage: tfmcp [OPTIONS] [COMMAND]

Commands:
  mcp       Launch tfmcp as an MCP server
  analyze   Analyze Terraform configurations
  help      Print this message or the help of the given subcommand(s)

Options:
  -c, --config <PATH>    Path to the configuration file
  -d, --dir <PATH>       Terraform project directory
  -V, --version          Print version
  -h, --help             Print help

Using Docker

When using Docker, you can run tfmcp commands like this:

# Run as MCP server (default)
docker run -it tfmcp

# Run with specific command and options
docker run -it tfmcp analyze --dir /app/example

# Mount your Terraform project directory
docker run -it -v /path/to/your/terraform:/app/terraform tfmcp --dir /app/terraform

# Set environment variables
docker run -it -e TFMCP_LOG_LEVEL=debug tfmcp

Integrating with Claude Desktop

To use tfmcp with Claude Desktop:

  1. If you haven't already, install tfmcp:

    cargo install tfmcp

    Alternatively, you can use Docker:

    docker build -t tfmcp .
  2. Find the path to your installed tfmcp executable:

    which tfmcp
  3. Add the following configuration to ~/Library/Application\ Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "tfmcp": {
      "command": "/path/to/your/tfmcp",  // Replace with the actual path from step 2
      "args": ["mcp"],
      "env": {
        "HOME": "/Users/yourusername",  // Replace with your username
        "PATH": "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
        "TERRAFORM_DIR": "/path/to/your/terraform/project"  // Optional: specify your Terraform project
      }
    }
  }
}

If you're using Docker with Claude Desktop, you can set up the configuration like this:

{
  "mcpServers": {
    "tfmcp": {
      "command": "docker",
      "args": ["run", "--rm", "-v", "/path/to/your/terraform:/app/terraform", "tfmcp", "mcp"],
      "env": {
        "TERRAFORM_DIR": "/app/terraform"
      }
    }
  }
}
  1. Restart Claude Desktop and enable the tfmcp tool.

  2. tfmcp will automatically create a sample Terraform project in ~/terraform if one doesn't exist, ensuring Claude can start working with Terraform right away. The sample project is based on the examples included in the example/demo directory of this repository.

MCP Tools

tfmcp provides 82 MCP tools for AI assistants:

Core Terraform Operations

ToolDescription
init_terraformInitialize Terraform working directory
get_terraform_planGenerate and show execution plan
analyze_planNEW Analyze plan with risk scoring and recommendations
apply_terraformApply Terraform configuration
destroy_terraformDestroy Terraform-managed infrastructure
validate_terraformValidate configuration syntax
validate_terraform_detailedDetailed validation with guidelines
get_terraform_stateShow current state
analyze_stateNEW Analyze state with drift detection
review_terraform_planReview plan risk, blockers, destructive changes, and recommendations
summarize_plan_for_prGenerate markdown plan summary for PR comments
run_terraform_quality_checksRun CI-friendly validation, module health, guideline, and lockfile checks
inspect_state_safetyInspect state readability, drift risk, lockfile status, and blockers
detect_drift_candidatesDetect drift candidates from readable state without modifying infrastructure
prepare_terraform_changeGenerate blockers, warnings, and a recommended change sequence
list_terraform_resourcesList all managed resources
set_terraform_directoryChange active project directory

Workspace & State (v0.1.9)

ToolDescription
terraform_workspaceNEW Manage workspaces (list, show, new, select, delete)
terraform_importNEW Import existing resources
terraform_taintNEW Taint/untaint resources
terraform_refreshNEW Refresh state

Code & Output (v0.1.9)

ToolDescription
terraform_fmtNEW Format code
terraform_graphNEW Generate dependency graph
terraform_outputNEW Get output values
terraform_providersNEW Get provider info with lock file
check_provider_lockfileCheck .terraform.lock.hcl for reproducible provider selections

Analysis & Security

ToolDescription
analyze_terraformAnalyze configuration
inspect_terraform_projectInspect local Terraform directories, modules, and likely entrypoints
detect_terraform_entrypointsDetect likely root module entrypoints
analyze_module_healthModule health with cohesion/coupling metrics
get_resource_dependency_graphResource dependencies visualization
suggest_module_refactoringRefactoring suggestions
get_security_statusSecurity scan with secret detection

Registry

ToolDescription
search_providersSearch providers (HashiCorp-compatible alias)
search_terraform_providersSearch providers
get_provider_detailsProvider details (HashiCorp-compatible alias)
get_provider_infoProvider details
get_provider_docsProvider documentation
get_provider_capabilitiesProvider resources, data sources, functions, and guides
search_modulesSearch modules (HashiCorp-compatible alias)
search_terraform_modulesSearch modules
get_module_detailsModule details
get_latest_module_versionLatest module version
get_latest_provider_versionLatest provider version
search_policiesSearch Sentinel/OPA policy libraries
get_policy_detailsPolicy library details

HCP Terraform / Terraform Enterprise (Read-only)

ToolDescription
get_token_permissionsInspect configured token account details without exposing the token
list_terraform_orgsList visible organizations
list_terraform_projectsList projects in an organization
list_workspacesList workspaces in an organization
get_workspace_detailsGet workspace details by ID or organization/name
list_runsList workspace runs
get_run_detailsGet run details
get_plan_detailsGet plan details
get_plan_logsGet plan logs
get_plan_json_outputGet Terraform JSON plan output
get_apply_detailsGet apply details
get_apply_logsGet apply logs
get_workspace_policy_setsGet policy sets attached to a workspace
list_workspace_variablesList workspace variables
list_variable_setsList organization variable sets
read_workspace_tagsRead workspace tags
list_stacksList Terraform stacks
get_stack_detailsGet Terraform stack details
search_private_modulesSearch private registry modules
get_private_module_detailsGet private registry module details
search_private_providersSearch private registry providers
get_private_provider_detailsGet private registry provider details

HCP Terraform / Terraform Enterprise (Gated Operations)

ToolDescription
create_workspaceCreate a workspace when ENABLE_TF_OPERATIONS=true
update_workspaceUpdate workspace settings when ENABLE_TF_OPERATIONS=true
delete_workspace_safelyUse the safe-delete workspace action when ENABLE_TF_OPERATIONS=true
create_runQueue a run when ENABLE_TF_OPERATIONS=true
action_runApply, discard, cancel, force-cancel, or force-execute a run when ENABLE_TF_OPERATIONS=true
create_workspace_variableCreate a workspace variable when ENABLE_TF_OPERATIONS=true
update_workspace_variableUpdate a workspace variable when ENABLE_TF_OPERATIONS=true
attach_policy_set_to_workspaceAttach a policy set to a workspace when ENABLE_TF_OPERATIONS=true
create_variable_setCreate a variable set when ENABLE_TF_OPERATIONS=true
create_variable_in_variable_setCreate a variable in a variable set when ENABLE_TF_OPERATIONS=true
delete_variable_in_variable_setDelete a variable from a variable set when ENABLE_TF_OPERATIONS=true
attach_variable_set_to_workspacesAttach a variable set to workspaces when ENABLE_TF_OPERATIONS=true
detach_variable_set_from_workspacesDetach a variable set from workspaces when ENABLE_TF_OPERATIONS=true
create_workspace_tagsCreate or attach workspace tags when ENABLE_TF_OPERATIONS=true

MCP Resources

URIDescription
terraform://style-guide / /terraform/style-guideTerraform style guide
terraform://module-development / /terraform/module-developmentTerraform module development guide
`terraform://best-pra

View source on GitHub