An open API service indexing awesome lists of open source software.

https://github.com/guilhermeyoshida/mcp-terraform-assistant

An MCP server for managing infrastructure as code using Terraform
https://github.com/guilhermeyoshida/mcp-terraform-assistant

Last synced: 6 months ago
JSON representation

An MCP server for managing infrastructure as code using Terraform

Awesome Lists containing this project

README

          

# MCP Infrastructure as Code Assistant

An MCP server for managing infrastructure as code with Terraform.

## Features

- Initialize Terraform working directories
- Generate and show execution plans
- Apply changes to infrastructure
- Destroy infrastructure
- Validate Terraform configurations
- Show current state or saved plans
- Manage Terraform workspaces

## Prerequisites

- Python 3.8 or higher
- Terraform 1.5.7 or higher
- Docker and Docker Compose (optional)

## Installation

### Local Installation

1. Clone the repository:
```bash
git clone https://github.com/yourusername/mcp-iac.git
cd mcp-iac
```

2. Install dependencies using uv:
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
uv pip install -e .
```

### Docker Installation

1. Clone the repository:
```bash
git clone https://github.com/yourusername/mcp-iac.git
cd mcp-iac
```

2. Build and run the Docker container:
```bash
docker-compose up -d
```

## Usage

### Local Usage

1. Start the MCP server:
```bash
python main.py
```

2. Use the MCP CLI to interact with the server:
```bash
mcp terraform_init --working-dir ./terraform
mcp terraform_plan --working-dir ./terraform
mcp terraform_apply --working-dir ./terraform --auto-approve
```

### Docker Usage

1. Start the MCP server:
```bash
docker-compose up -d
```

2. Use the MCP CLI to interact with the server:
```bash
mcp terraform_init --working-dir ./terraform
mcp terraform_plan --working-dir ./terraform
mcp terraform_apply --working-dir ./terraform --auto-approve
```

## Example Terraform Configuration

The repository includes an example Terraform configuration that creates an EC2 instance in AWS:

```hcl
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}

provider "aws" {
region = var.region
}

resource "aws_instance" "example" {
ami = var.ami_id
instance_type = var.instance_type

tags = {
Name = var.instance_name
}
}
```

## Contributing

1. Fork the repository
2. Create a feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request

## License

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

## Available Tools

- `terraform_init`: Initialize a Terraform working directory
- `terraform_plan`: Generate and show an execution plan for Terraform
- `terraform_apply`: Apply the changes required to reach the desired state
- `terraform_destroy`: Destroy the infrastructure managed by Terraform
- `terraform_validate`: Validate the syntax and internal consistency of Terraform files
- `terraform_show`: Show the current state or a saved plan
- `terraform_workspace_list`: List Terraform workspaces
- `terraform_workspace_select`: Select a Terraform workspace

## Example Usage

Here's an example of how to use the MCP server with an AI agent:

1. Start the MCP server:
```bash
python main.py
```

2. Connect to the server using an MCP client:
```bash
mcp connect http://localhost:8000
```

3. The AI agent can now help you with Terraform operations. For example:
- Initialize a Terraform working directory
- Generate and review execution plans
- Apply changes to infrastructure
- Destroy infrastructure resources
- Validate Terraform configurations

## Examples

Check out the `examples` directory for sample Terraform configurations that demonstrate how to use the MCP server:

- `examples/aws-s3`: A simple AWS S3 bucket example