tfmcp
Allows AI assistants to manage and operate Terraform environments, including reading configuration files, analyzing plan outputs, applying configurations, managing state, and creating/modifying configurations
Click on "Install 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., "@tfmcpanalyze my Terraform configuration for security issues"
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.
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:

Reading Terraform configuration files
Analyzing Terraform plan outputs
Applying Terraform configurations
Managing Terraform state
Creating and modifying Terraform configurations
Related MCP server: terraform-best-practices-mcp-server
š Current Release
tfmcp v0.2.1 is the current release:
cargo install tfmcp --version 0.2.1What'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
Area | Capabilities |
Local Terraform | Validate, format, plan/apply workflows, import guidance, outputs, providers, dependency graphs, refresh-only flows, and guarded state operations |
Repository intelligence | Entrypoint/project detection, configuration analysis, quality checks, security checks, module health, plan review, and drift/state-safety inspection |
Registry | Public/private provider, module, and policy lookup with HashiCorp-compatible aliases |
HCP Terraform / TFE | Organizations, projects, workspaces, runs, plans, applies, variables, policy sets, variable sets, tags, stacks, and gated operations |
MCP deployment | stdio and Streamable HTTP, toolsets, resources, health/metrics, sessions, Host/Origin validation, rate limits, TLS wiring, and audit logging |
Packaging | Cargo, 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 tfmcpUsing 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 tfmcpRequirements
Rust 1.88.0+ (Rust Edition 2024)
Terraform CLI 1.15.8 installed and available in
PATHClaude 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 helpUsing 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 tfmcpIntegrating with Claude Desktop
To use tfmcp with Claude Desktop:
If you haven't already, install tfmcp:
cargo install tfmcpAlternatively, you can use Docker:
docker build -t tfmcp .Find the path to your installed tfmcp executable:
which tfmcpAdd 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"
}
}
}
}Restart Claude Desktop and enable the tfmcp tool.
tfmcp will automatically create a sample Terraform project in
~/terraformif one doesn't exist, ensuring Claude can start working with Terraform right away. The sample project is based on the examples included in theexample/demodirectory of this repository.
MCP Tools
tfmcp provides 82 MCP tools for AI assistants:
Core Terraform Operations
Tool | Description |
| Initialize Terraform working directory |
| Generate and show execution plan |
| NEW Analyze plan with risk scoring and recommendations |
| Apply Terraform configuration |
| Destroy Terraform-managed infrastructure |
| Validate configuration syntax |
| Detailed validation with guidelines |
| Show current state |
| NEW Analyze state with drift detection |
| Review plan risk, blockers, destructive changes, and recommendations |
| Generate markdown plan summary for PR comments |
| Run CI-friendly validation, module health, guideline, and lockfile checks |
| Inspect state readability, drift risk, lockfile status, and blockers |
| Detect drift candidates from readable state without modifying infrastructure |
| Generate blockers, warnings, and a recommended change sequence |
| List all managed resources |
| Change active project directory |
Workspace & State (v0.1.9)
Tool | Description |
| NEW Manage workspaces (list, show, new, select, delete) |
| NEW Import existing resources |
| NEW Taint/untaint resources |
| NEW Refresh state |
Code & Output (v0.1.9)
Tool | Description |
| NEW Format code |
| NEW Generate dependency graph |
| NEW Get output values |
| NEW Get provider info with lock file |
| Check |
Analysis & Security
Tool | Description |
| Analyze configuration |
| Inspect local Terraform directories, modules, and likely entrypoints |
| Detect likely root module entrypoints |
| Module health with cohesion/coupling metrics |
| Resource dependencies visualization |
| Refactoring suggestions |
| Security scan with secret detection |
Registry
Tool | Description |
| Search providers (HashiCorp-compatible alias) |
| Search providers |
| Provider details (HashiCorp-compatible alias) |
| Provider details |
| Provider documentation |
| Provider resources, data sources, functions, and guides |
| Search modules (HashiCorp-compatible alias) |
| Search modules |
| Module details |
| Latest module version |
| Latest provider version |
| Search Sentinel/OPA policy libraries |
| Policy library details |
HCP Terraform / Terraform Enterprise (Read-only)
Tool | Description |
| Inspect configured token account details without exposing the token |
| List visible organizations |
| List projects in an organization |
| List workspaces in an organization |
| Get workspace details by ID or organization/name |
| List workspace runs |
| Get run details |
| Get plan details |
| Get plan logs |
| Get Terraform JSON plan output |
| Get apply details |
| Get apply logs |
| Get policy sets attached to a workspace |
| List workspace variables |
| List organization variable sets |
| Read workspace tags |
| List Terraform stacks |
| Get Terraform stack details |
| Search private registry modules |
| Get private registry module details |
| Search private registry providers |
| Get private registry provider details |
HCP Terraform / Terraform Enterprise (Gated Operations)
Tool | Description |
| Create a workspace when |
| Update workspace settings when |
| Use the safe-delete workspace action when |
| Queue a run when |
| Apply, discard, cancel, force-cancel, or force-execute a run when |
| Create a workspace variable when |
| Update a workspace variable when |
| Attach a policy set to a workspace when |
| Create a variable set when |
| Create a variable in a variable set when |
| Delete a variable from a variable set when |
| Attach a variable set to workspaces when |
| Detach a variable set from workspaces when |
| Create or attach workspace tags when |
MCP Resources
URI | Description |
| Terraform style guide |
| Terraform module development guide |
| tfmcp security and operational best practices |
| HashiCorp-compatible provider documentation template |
Logs and Troubleshooting
The tfmcp server logs are available at:
~/Library/Logs/Claude/mcp-server-tfmcp.logCommon 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 theset_terraform_directorytool.TFMCP_LOG_LEVEL: Set todebug,info,warn, orerrorto control logging verbosity.TFMCP_DEMO_MODE: Set totrueto enable demo mode with additional safety features.
Security Configuration
ENABLE_TF_OPERATIONS: Set totrueto enable gated HCP Terraform / Terraform Enterprise write tools (default:false)TFMCP_ALLOW_DANGEROUS_OPS: Set totrueto enable apply/destroy operations (default:false)TFMCP_ALLOW_AUTO_APPROVE: Set totrueto 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 tofalseto disable audit logging (default:true)TFMCP_AUDIT_LOG_FILE: Custom path for audit log file (default:~/.tfmcp/audit.log)TFMCP_AUDIT_LOG_SENSITIVE: Set totrueto 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 toolsTFE_SKIP_TLS_VERIFY: Set totrueonly for trusted private TFE installations with custom TLSTFE_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. Usestdio(default) for local desktop clients orstreamable-httpfor 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:statefulfor normal MCP clients orstatelessfor CI-style JSON responses (default:stateful).MCP_HEARTBEAT_INTERVAL: Streamable HTTP SSE keep-alive interval in seconds. Set to0to disable (default:15).MCP_CORS_MODE: Response CORS policy:strict,development, ordisabled(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 HTTPHost/ 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 (0or unset disables).MCP_RATE_LIMIT_SESSION: Maximum HTTP requests per minute perMcp-Session-Id(0or 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 defaultThe 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.logFile Patterns: Built-in protection against accessing
prod*,production*, andsecret*patternsDocker 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 dataContributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Run quality checks before committing:
cargo fmt --all cargo clippy --all-targets --all-features cargo test --all-featuresCommit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
Release Process
Releases are done manually after the local release gate passes:
Confirm
Cargo.toml,Cargo.lock,server.json,Dockerfile, README, andCHANGELOG.mduse the target version.Run the local release gate:
./Release.sh v0.2.1.Review
CHANGELOG.mdand the generated package.Commit and push
main, then confirm CI passed for that exact commit.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.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
- A server for finding information about Terraform infrastructure-as-code tool
- Information about AWS MCP
- Using Terraform to Provision AWS Resources and Ansible to Configure Services
- A server for finding information about mobile app development
- Evaluating an Expo Go App and Associated React Native Code in an Android Emulator
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nwiizo/tfmcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server