Skip to main content
Glama
Citadel-Cloud-Management

mcp-server-terraform

README.md
# mcp-server-terraform

An MCP (Model Context Protocol) server that exposes Terraform CLI operations as tools for Claude and other MCP-compatible AI assistants. Enables AI-driven infrastructure-as-code workflows including planning, applying, and validating Terraform configurations.

## Architecture

```mermaid
graph TB
    subgraph Client["MCP Client (Claude)"]
        style Client fill:#4A90D9,stroke:#2C5F8A,color:#FFFFFF
        A[Claude Desktop / CLI]
    end

    subgraph Server["MCP Server"]
        style Server fill:#2ECC71,stroke:#1A9B52,color:#FFFFFF
        B[StdioTransport]
        C[Tool Registry]
    end

    subgraph Tools["Terraform Tools"]
        style Tools fill:#F39C12,stroke:#D68910,color:#FFFFFF
        D[terraform_init]
        E[terraform_plan]
        F[terraform_apply]
        G[terraform_validate]
        H[terraform_state_list]
        I[terraform_output]
    end

    subgraph Infra["Infrastructure"]
        style Infra fill:#9B59B6,stroke:#7D3C98,color:#FFFFFF
        J[Terraform CLI]
        K[State Backend]
        L[Cloud Providers]
    end

    A -->|stdio| B
    B --> C
    C --> D
    C --> E
    C --> F
    C --> G
    C --> H
    C --> I
    D --> J
    E --> J
    F --> J
    G --> J
    H --> J
    I --> J
    J --> K
    J --> L
```

## Tools

| Tool | Description |
|------|-------------|
| `terraform_init` | Initialize a working directory, download providers and modules |
| `terraform_plan` | Generate and display an execution plan |
| `terraform_apply` | Apply changes to reach desired infrastructure state |
| `terraform_validate` | Validate configuration files for syntax errors |
| `terraform_state_list` | List all resources in the state file |
| `terraform_output` | Read output values from state |

## Quick Start

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

## Docker

```bash
docker build -t mcp-server-terraform .
docker run -i mcp-server-terraform
```

## Claude Desktop Configuration

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

## License

MIT