Skip to main content
Glama
README.md
# Terraform MCP Server

Model Context Protocol (MCP) server for Terraform Infrastructure as Code operations. Provides 25 comprehensive tools for managing Terraform configurations, state, workspaces, and executing infrastructure operations.

## Features

### Core Operations (6 tools)
- `tf_version` - Get Terraform version information
- `tf_init` - Initialize Terraform working directory (with optional provider upgrades)
- `tf_validate` - Validate Terraform configuration syntax
- `tf_plan` - Create execution plan showing proposed changes
- `tf_apply` - Apply Terraform changes to infrastructure
- `tf_destroy` - Destroy Terraform-managed infrastructure

### Output Management (1 tool)
- `tf_output` - Get Terraform output values (JSON or plain text)

### State Management (6 tools)
- `tf_state_list` - List all resources in Terraform state
- `tf_state_show` - Show detailed information for a specific resource
- `tf_state_rm` - Remove a resource from Terraform state
- `tf_state_mv` - Move/rename a resource in Terraform state
- `tf_import` - Import existing infrastructure into Terraform state
- `tf_refresh` - Refresh Terraform state from real infrastructure

### Code Formatting (1 tool)
- `tf_fmt` - Format Terraform configuration files (check or modify)

### Workspace Management (4 tools)
- `tf_workspace_list` - List all Terraform workspaces
- `tf_workspace_select` - Switch to a different workspace
- `tf_workspace_new` - Create a new workspace
- `tf_workspace_delete` - Delete a workspace

### Provider Management (1 tool)
- `tf_providers` - List Terraform providers in use

### Advanced Operations (3 tools)
- `tf_graph` - Generate resource dependency graph in DOT format
- `tf_taint` - Mark a resource for recreation on next apply
- `tf_untaint` - Remove taint marking from a resource

### Plan Management (1 tool)
- `tf_show_plan` - Show details of a saved execution plan file

### File Operations (3 tools)
- `tf_list_files` - List Terraform files in a directory (.tf, .tfvars, .tfstate)
- `tf_read_file` - Read contents of a Terraform configuration file
- `tf_write_file` - Write content to a Terraform configuration file

## Installation

```bash
npm install
npm run build
```

## Configuration

The server uses an optional environment variable to set the default working directory:

```bash
export TERRAFORM_WORKING_DIR="/path/to/your/terraform/projects"
```

If not set, the server will use the current working directory.

## Usage with Claude Desktop

Add to your Claude Desktop configuration file:

**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "terraform": {
      "command": "node",
      "args": ["/path/to/mcp-terraform/dist/index.js"],
      "env": {
        "TERRAFORM_WORKING_DIR": "/path/to/terraform/projects"
      }
    }
  }
}
```

## Development

Run in development mode with hot reload:

```bash
npm run dev
```

## Requirements

- Terraform CLI must be installed and available in your PATH
- Appropriate cloud provider credentials configured (AWS, Azure, GCP, etc.)
- Terraform working directory with configuration files

## Example Use Cases

1. **Infrastructure Planning**: Review changes before applying them
2. **State Management**: Import existing resources, move resources between modules
3. **Workspace Management**: Manage multiple environments (dev, staging, prod)
4. **Code Quality**: Format Terraform files consistently
5. **Troubleshooting**: Inspect state, visualize resource dependencies
6. **Selective Operations**: Apply changes to specific resources using targets
7. **Configuration Management**: Read and modify Terraform configuration files

## Tool Parameters

### Common Parameters

- `dir` (optional): Working directory for Terraform operations. Defaults to `TERRAFORM_WORKING_DIR` or current directory
- `auto_approve` (optional): Skip interactive approval for apply/destroy operations
- `target` (optional): Limit operations to specific resources (e.g., `aws_instance.example`)
- `var` (optional): Pass variables to Terraform commands (object with key-value pairs)

### Plan Operations

```json
{
  "dir": "/path/to/project",
  "out": "plan.tfplan",
  "target": "aws_instance.web",
  "var": {
    "region": "us-west-2",
    "instance_type": "t3.micro"
  }
}
```

### State Operations

```json
{
  "dir": "/path/to/project",
  "address": "aws_instance.example",
  "source": "aws_instance.old_name",
  "destination": "aws_instance.new_name"
}
```

## Security Considerations

- The server executes Terraform commands with full permissions
- Ensure proper access controls on the working directory
- Be cautious with `auto_approve` flag on apply/destroy operations
- Store sensitive variables in Terraform variable files or environment variables, not in plain text
- Review plans carefully before applying changes to production infrastructure

## Output Formats

- Most commands return plain text output from Terraform CLI
- Use `json: true` with `tf_output` for structured JSON responses
- State operations return formatted resource information
- Graph operations return DOT format for visualization tools

## Visualization

The `tf_graph` tool generates dependency graphs in DOT format. Use tools like Graphviz to visualize:

```bash
# Save graph output to file
terraform graph > graph.dot

# Generate PNG image
dot -Tpng graph.dot -o graph.png
```

## Error Handling

The server captures both stdout and stderr from Terraform commands. Failed operations return error messages with exit codes for troubleshooting.

## API Reference

For detailed Terraform CLI documentation, see: https://developer.hashicorp.com/terraform/cli

## License

MIT

## Contributing

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

TDQS

C2.8/5.0

Scored across 26 tools

Disambiguation5/5

Each tool targets a distinct Terraform operation (e.g., apply, destroy, plan, state management, workspaces) with no overlap. Descriptions are clear enough to differentiate.

Naming Consistency5/5

All tools follow a consistent 'tf_' prefix with a verb_noun pattern (e.g., tf_apply, tf_state_list, tf_workspace_new). No mixing of conventions.

Tool Count5/5

26 tools cover the full lifecycle of Terraform operations—init, plan, apply, destroy, state, workspaces, file ops, etc. Each tool serves a clear purpose without bloat.

Completeness5/5

The set includes all major Terraform workflows: initialization, planning, applying, destroying, state management, workspace management, file operations, formatting, validation, import, output, and more. No critical gaps identified.

Maintenance

ActivityInactive
ResponsivenessSyncing