tfmcp

tfmcp

A CLI tool for managing Terraform via the Model Context Protocol (MCP).

345
Stars
23
Forks
345
Watchers
4
Issues
tfmcp is a command-line tool that enables interaction with Terraform using the Model Context Protocol (MCP). It allows language models and AI assistants to analyze, manage, and operate Terraform environments programmatically, supporting operations such as configuration analysis, state management, and secure application of changes. The tool offers enterprise-grade security, audit logging, and flexible deployment options including Docker support. Designed for efficiency and seamless integration, tfmcp simplifies infrastructure automation workflows for both developers and AI systems.

Key Features

Model Context Protocol (MCP) server capabilities
Deep integration with Terraform CLI
Advanced Terraform configuration analysis
Comprehensive audit logging
Enterprise security with configurable policies
Support for automatic setup of sample projects
High-speed processing via Rust ecosystem
Dockerized deployment and operation
Access control with file pattern restrictions
Detailed validation and best practice recommendations

Use Cases

AI assistant-driven management of Terraform environments
Automated security auditing and compliance monitoring for infrastructure
Continuous validation and analysis of Terraform configurations
Remote or containerized infrastructure operations
Provisioning and modifying cloud resources through programmatic interfaces
Audit trail generation for infrastructure changes
Restricted and policy-driven infrastructure modifications
Developer onboarding with automatic project setup
Best practice enforcement on infrastructure-as-code projects
Integration into DevOps automation pipelines

README

tfmcp: Terraform Model Context Protocol Tool

⚠️ 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

🎉 Latest Release

The latest version of tfmcp (v0.1.3) is now available on Crates.io! You can easily install it using Cargo:

bash
cargo install tfmcp

🆕 What's New in v0.1.3

  • 🔐 Comprehensive Security System: Production-ready security controls with audit logging
  • 📊 Enhanced Terraform Analysis: Detailed validation and best practice recommendations
  • 🛡️ Access Controls: File pattern-based restrictions and resource limits
  • 📝 Audit Logging: Complete operation tracking for compliance and monitoring

Features

  • 🚀 Terraform Integration
    Deeply integrates with the Terraform CLI to analyze and execute operations.

  • 📄 MCP Server Capabilities
    Runs as a Model Context Protocol server, allowing AI assistants to access and manage Terraform.

  • 🔐 Enterprise Security
    Production-ready security controls with configurable policies, audit logging, and access restrictions.

  • 📊 Advanced Analysis
    Detailed Terraform configuration analysis with best practice recommendations and security checks.

  • ⚡️ Blazing Fast
    High-speed processing powered by the Rust ecosystem with optimized parsing and caching.

  • 🛠️ Automatic Setup
    Automatically creates sample Terraform projects when needed, ensuring smooth operation even for new users.

  • 🐳 Docker Support
    Run tfmcp in a containerized environment with all dependencies pre-installed.

Installation

From Source

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

# Build and install
cargo install --path .

From Crates.io

bash
cargo install tfmcp

Using Docker

bash
# 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 (edition 2021)
  • Terraform CLI installed and available in PATH
  • Claude Desktop (for AI assistant integration)
  • Docker (optional, for containerized deployment)

Usage

bash
$ 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:

bash
# 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:

    bash
    cargo install tfmcp
    

    Alternatively, you can use Docker:

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

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

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:

json
{
  "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.

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

  • 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)

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

bash
# 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. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Roadmap

Here are some planned improvements and future features for tfmcp:

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.

In Progress

  • Enhanced Terraform Analysis
    Implement deeper parsing and analysis of Terraform configurations, plans, and state files.

  • Comprehensive Testing Framework
    Expand test coverage including integration tests with real Terraform configurations.

Planned

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

  • 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.

Star History

Star History Chart

Repository Owner

nwiizo
nwiizo

User

Repository Details

Language Rust
Default Branch main
Size 2,022 KB
Contributors 2
License MIT License
MCP Verified Nov 11, 2025

Programming Languages

Rust
94.76%
HCL
2.49%
Shell
1.96%
Dockerfile
0.79%

Tags

Topics

mcp mcp-server terraform

Join Our Newsletter

Stay updated with the latest AI tools, news, and offers by subscribing to our weekly newsletter.

We respect your privacy. Unsubscribe at any time.

Related MCPs

Discover similar Model Context Protocol servers

  • Portainer MCP

    Portainer MCP

    Connect AI assistants securely to Portainer environments using the Model Context Protocol.

    Portainer MCP is an implementation of the Model Context Protocol (MCP) designed for seamless integration between AI assistants and Portainer-managed container environments. It enables management of Portainer resources and allows execution of Docker and Kubernetes commands through AI interfaces in a secure, standardized manner. The tool provides direct protocol-based access to environment data, facilitating automation and operational insights for container infrastructures.

    • 81
    • MCP
    • portainer/portainer-mcp
  • mcp-shell

    mcp-shell

    A secure Model Context Protocol (MCP) server for AI-driven shell command execution.

    mcp-shell enables AI assistants and MCP clients to securely execute shell commands via the standardized Model Context Protocol. Built in Go and leveraging the official MCP SDK, it facilitates structured, auditable, and context-aware access to shell environments. The server emphasizes security through Docker isolation, command validation, resource limits, and comprehensive audit logging.

    • 44
    • MCP
    • sonirico/mcp-shell
  • Firefly MCP Server

    Firefly MCP Server

    Seamless resource discovery and codification for Cloud and SaaS with Model Context Protocol integration.

    Firefly MCP Server is a TypeScript-based server implementing the Model Context Protocol to enable integration with the Firefly platform for discovering and managing resources across Cloud and SaaS accounts. It supports secure authentication, resource codification into infrastructure as code, and easy integration with tools such as Claude and Cursor. The server can be configured via environment variables or command line and communicates using standardized MCP interfaces. Its features facilitate automation and codification workflows for cloud resource management.

    • 15
    • MCP
    • gofireflyio/firefly-mcp
  • dbt MCP Server

    dbt MCP Server

    Bridge dbt projects and AI agents with rich project context.

    dbt MCP Server provides an implementation of the Model Context Protocol for dbt projects, enabling seamless integration between dbt and AI agents. It allows agents to access and understand the context of dbt Core, dbt Fusion, and dbt Platform projects. The tool supports connection to external AI products and offers resources for building custom agents. Documentation and examples are provided to facilitate adoption and integration.

    • 420
    • MCP
    • dbt-labs/dbt-mcp
  • Octocode MCP

    Octocode MCP

    Enterprise-grade AI context server for codebase research and analysis.

    Octocode MCP is a Model Context Protocol (MCP) server designed to enable AI assistants to search, analyze, and extract insights from millions of GitHub repositories with high security and token efficiency. It offers intelligent orchestration for deep code research, planning, and agentic workflows, streamlining the process of building and understanding complex software projects. The platform features robust tools and commands, such as /research for expert code research, designed to support developers and AI systems with context-rich information.

    • 577
    • MCP
    • bgauryy/octocode-mcp
  • MXCP

    MXCP

    Enterprise-Grade Model Context Protocol Framework for AI Applications

    MXCP is an enterprise-ready framework that implements the Model Context Protocol (MCP) for building secure, production-grade AI application servers. It introduces a structured methodology focused on data modeling, robust service design, policy enforcement, and comprehensive testing, integrated with strong security and audit capabilities. The framework enables rapid development and deployment of AI tools, supporting both SQL and Python environments, with built-in telemetry and drift detection for reliability and compliance.

    • 49
    • MCP
    • raw-labs/mxcp
  • Didn't find tool you were looking for?

    Be as detailed as possible for better results