nwiizo/tfmcp

ā˜ļø Cloud Platforms
0 Views
0 Installs

šŸ¦€ šŸ  - A Terraform MCP server allowing AI assistants to manage and operate Terraform environments, enabling reading configurations, analyzing plans, applying configurations, and managing Terraform state.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "nwiizo-tfmcp": {
      "command": "npx",
      "args": [
        "-y",
        "nwiizo-tfmcp"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

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-practicestfmcp security and operational best practices
/terraform/providers/{namespace}/name/{name}/version/{version}HashiCorp-compatible provider documentation template

Logs and Troubleshooting

The tfmcp server logs are available at:

~/Library/Logs/Claude/mcp-server-tfmcp.log

Common issues and solutions:

  • Claude can't connect to the server: Make sure the path to the tfmcp executable is correct in your configuration
  • Terraform project issues: tfmcp automatically creates a sample Terraform project if none is found
  • Method not found errors: MCP protocol support includes resources/list and prompts/list methods
  • Docker issues: If using Docker, ensure your container has proper volume mounts and permissions

Environment Variables

Core Configuration

  • TERRAFORM_DIR: Set this to specify a custom Terraform project directory. If not set, tfmcp will use the directory provided by command line arguments, configuration files, or fall back to ~/terraform. You can also change the project directory at runtime using the set_terraform_directory tool.
  • TFMCP_LOG_LEVEL: Set to debug, info, warn, or error to control logging verbosity.
  • TFMCP_DEMO_MODE: Set to true to enable demo mode with additional safety features.

Security Configuration

  • ENABLE_TF_OPERATIONS: Set to true to enable gated HCP Terraform / Terraform Enterprise write tools (default: false)
  • TFMCP_ALLOW_DANGEROUS_OPS: Set to true to enable apply/destroy operations (default: false)
  • TFMCP_ALLOW_AUTO_APPROVE: Set to true to enable auto-approve for dangerous operations (default: false)
  • TFMCP_MAX_RESOURCES: Set maximum number of resources that can be managed (default: 50)
  • TFMCP_AUDIT_ENABLED: Set to false to disable audit logging (default: true)
  • TFMCP_AUDIT_LOG_FILE: Custom path for audit log file (default: ~/.tfmcp/audit.log)
  • TFMCP_AUDIT_LOG_SENSITIVE: Set to true to include sensitive information in audit logs (default: false)

HCP Terraform / Terraform Enterprise

  • TFE_ADDRESS: HCP Terraform or Terraform Enterprise base URL (default: https://app.terraform.io)
  • TFE_TOKEN: API token for HCP Terraform / Terraform Enterprise tools
  • TFE_SKIP_TLS_VERIFY: Set to true only for trusted private TFE installations with custom TLS
  • TFE_MAX_RESPONSE_BYTES: Maximum HCP/TFE response bytes returned to MCP clients before truncation (default: 65536)

HCP/TFE write tools are disabled by default and fail closed unless ENABLE_TF_OPERATIONS=true is set. The default toolset keeps write tools hidden; use --toolsets operations or --toolsets all to expose them.

MCP Transport

  • TRANSPORT_MODE: MCP transport mode. Use stdio (default) for local desktop clients or streamable-http for remote/CI clients.
  • TRANSPORT_HOST: HTTP bind host for streamable HTTP mode (default: 127.0.0.1).
  • TRANSPORT_PORT: HTTP bind port for streamable HTTP mode (default: 8080).
  • MCP_ENDPOINT: Streamable HTTP MCP endpoint path (default: /mcp).
  • MCP_HEALTH_ENDPOINT: Health endpoint path (default: /health).
  • MCP_METRICS_ENDPOINT: OTel-compatible JSON metrics snapshot endpoint path (default: /metrics).
  • MCP_SESSION_MODE: stateful for normal MCP clients or stateless for CI-style JSON responses (default: stateful).
  • MCP_HEARTBEAT_INTERVAL: Streamable HTTP SSE keep-alive interval in seconds. Set to 0 to disable (default: 15).
  • MCP_CORS_MODE: Response CORS policy: strict, development, or disabled (default: strict). MCP request Origin validation remains enabled in all modes.
  • MCP_ALLOWED_ORIGINS: Comma-separated allowed browser origins. Loopback origins are used by default.
  • MCP_ALLOWED_HOSTS: Comma-separated HTTP Host / authority values accepted by Streamable HTTP. When unset, rmcp's loopback-only defaults apply.
  • MCP_ORGANIZATION_ALLOWLIST: Comma-separated HCP/TFE organization names that remote requests may access.
  • MCP_RATE_LIMIT_GLOBAL: Maximum HTTP requests per minute across the server (0 or unset disables).
  • MCP_RATE_LIMIT_SESSION: Maximum HTTP requests per minute per Mcp-Session-Id (0 or unset disables).
  • MCP_TLS_CERT_FILE: PEM certificate file for HTTPS Streamable HTTP.
  • MCP_TLS_KEY_FILE: PEM private key file for HTTPS Streamable HTTP.

HCP/TFE credentials and addresses are server configuration. tfmcp intentionally does not accept request-scoped TFE_TOKEN, Authorization, or TFE_ADDRESS overrides for downstream passthrough. When an organization allowlist is active, account-wide and ID-only HCP/TFE requests fail closed because their owning organization cannot be verified locally.

Example streamable HTTP launch:

TRANSPORT_MODE=streamable-http \
TRANSPORT_HOST=127.0.0.1 \
TRANSPORT_PORT=8080 \
tfmcp mcp --toolsets default

The MCP endpoint is http://127.0.0.1:8080/mcp, the health endpoint is http://127.0.0.1:8080/health, and the metrics endpoint is http://127.0.0.1:8080/metrics.

Security Considerations

tfmcp includes comprehensive security features designed for production use:

šŸ”’ Built-in Security Features

  • Access Controls: Automatic blocking of production/sensitive file patterns
  • Operation Restrictions: Dangerous operations (apply/destroy) disabled by default
  • Resource Limits: Configurable maximum resource count protection
  • Audit Logging: Complete operation tracking with timestamps and user identification
  • Directory Validation: Security policy enforcement for project directories

šŸ›”ļø Security Best Practices

  • Default Safety: Apply/destroy operations are disabled by default - explicitly enable only when needed
  • Review Plans: Always review Terraform plans before applying, especially AI-generated ones
  • IAM Boundaries: Use appropriate IAM permissions and role boundaries in cloud environments
  • Audit Monitoring: Regularly review audit logs at ~/.tfmcp/audit.log
  • File Patterns: Built-in protection against accessing prod*, production*, and secret* patterns
  • Docker Security: When using containers, carefully consider volume mounts and exposed data

āš™ļø Production Configuration

# Recommended production settings
export TFMCP_ALLOW_DANGEROUS_OPS=false    # Keep disabled for safety
export TFMCP_ALLOW_AUTO_APPROVE=false     # Require manual approval
export TFMCP_MAX_RESOURCES=10             # Limit resource scope
export TFMCP_AUDIT_ENABLED=true           # Enable audit logging
export TFMCP_AUDIT_LOG_SENSITIVE=false    # Don't log sensitive data

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Run quality checks before committing:
    cargo fmt --all
    cargo clippy --all-targets --all-features
    cargo test --all-features
    
  4. Commit your changes (git commit -m 'Add some amazing feature')
  5. Push to the branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

Release Process

Releases are done manually after the local release gate passes:

  1. Confirm Cargo.toml, Cargo.lock, server.json, Dockerfile, README, and CHANGELOG.md use the target version.
  2. Run the local release gate: ./Release.sh v0.2.1.
  3. Review CHANGELOG.md and the generated package.
  4. Commit and push main, then confirm CI passed for that exact commit.
  5. From the clean commit, publish with ./Release.sh v0.2.1 --publish.

Roadmap

Here are some planned improvements and future features for tfmcp:

For the consolidated v0.2.1 scope and future work, see docs/releases/v0.2-roadmap.md. Release changes are recorded in CHANGELOG.md.

Completed

  • Basic Terraform Integration Core integration with Terraform CLI for analyzing and executing operations.

  • MCP Server Implementation Initial implementation of the Model Context Protocol server for AI assistants.

  • Automatic Project Creation Added functionality to automatically create sample Terraform projects when needed.

  • Claude Desktop Integration Support for seamless integration with Claude Desktop.

  • Core MCP Methods Implementation of essential MCP methods including resources/list and prompts/list.

  • Error Handling Improvements Better error handling and recovery mechanisms for robust operation.

  • Dynamic Project Directory Switching Added ability to change the active Terraform project directory without restarting the service.

  • Crates.io Publication Published the package to Crates.io for easy installation via Cargo.

  • Docker Support Added containerization support for easier deployment and cross-platform compatibility.

  • Security Enhancements Comprehensive security system with configurable policies, audit logging, access controls, and production-ready safety features.

  • Module Health Analysis (v0.1.6) Whitebox approach to IaC with cohesion/coupling metrics, health scoring, and refactoring suggestions.

  • Resource Dependency Graph (v0.1.6) Visualization of resource relationships including explicit and implicit dependencies.

  • Module Registry Integration (v0.1.6) Search and explore Terraform modules from the registry.

  • Comprehensive Testing Framework 85+ tests including integration tests with real Terraform configurations.

  • RMCP SDK Migration (v0.1.8) Migrated to official RMCP SDK with proper tool annotations for better MCP compliance.

  • Future Architect Guidelines (v0.1.8) Terraform coding standards compliance checks with secret detection and variable quality validation.

In Progress

  • Multi-Environment Support Add support for managing multiple Terraform environments, workspaces, and modules.

Planned

  • Expanded MCP Protocol Support Implement additional MCP methods and capabilities for richer integration with AI assistants.

  • Performance Optimization Optimize resource usage and response times for large Terraform projects.

  • Cost Estimation Integrate with cloud provider pricing APIs to provide cost estimates for Terraform plans.

  • Interactive TUI Develop a terminal-based user interface for easier local usage and debugging.

  • Integration with Other AI Platforms Extend beyond Claude to support other AI assistants and platforms.

  • Plugin System Develop a plugin architecture to allow extensions of core functionality.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Related MCP Servers

4everland/4everland-hosting-mcp

šŸŽ–ļø šŸ“‡ šŸ  šŸŽ 🐧 - An MCP server implementation for 4EVERLAND Hosting enabling instant deployment of AI-generated code to decentralized storage networks like Greenfield, IPFS, and Arweave.

ā˜ļø Cloud Platforms0 views
aashari/mcp-server-aws-sso

šŸ“‡ ā˜ļø šŸ  - AWS Single Sign-On (SSO) integration enabling AI systems to securely interact with AWS resources by initiating SSO login, listing accounts/roles, and executing AWS CLI commands using temporary credentials.

ā˜ļø Cloud Platforms0 views
agentmetal/mcp

šŸŽ–ļø šŸ“‡ ā˜ļø - Provision, SSH into, run commands on, and manage Linux VPSes from an agent — pay USDC over x402 or by card over HTTP 402, a running box in under 60s. No signup, no API key to buy.

ā˜ļø Cloud Platforms0 views
alexbakers/mcp-ipfs

šŸ“‡ ā˜ļø - upload and manipulation of IPFS storage

ā˜ļø Cloud Platforms0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

No check timestamp yet.

Unclaimed listing (imported or pending owner verification). Claim it →
ā˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.