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
-
Clone the repository:
git clone https://github.com/yourusername/mcp-iac.git cd mcp-iac -
Install dependencies using uv:
curl -LsSf https://astral.sh/uv/install.sh | sh uv pip install -e .
Docker Installation
-
Clone the repository:
git clone https://github.com/yourusername/mcp-iac.git cd mcp-iac -
Build and run the Docker container:
docker-compose up -d
Usage
Local Usage
-
Start the MCP server:
python main.py -
Use the MCP CLI to interact with the server:
mcp terraform_init --working-dir ./terraform mcp terraform_plan --working-dir ./terraform mcp terraform_apply --working-dir ./terraform --auto-approve
Docker Usage
-
Start the MCP server:
docker-compose up -d -
Use the MCP CLI to interact with the server:
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:
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
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- 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 directoryterraform_plan: Generate and show an execution plan for Terraformterraform_apply: Apply the changes required to reach the desired stateterraform_destroy: Destroy the infrastructure managed by Terraformterraform_validate: Validate the syntax and internal consistency of Terraform filesterraform_show: Show the current state or a saved planterraform_workspace_list: List Terraform workspacesterraform_workspace_select: Select a Terraform workspace
Example Usage
Here's an example of how to use the MCP server with an AI agent:
-
Start the MCP server:
python main.py -
Connect to the server using an MCP client:
mcp connect http://localhost:8000 -
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
Recommend MCP Servers 💡
thezuck/page_control_mcp
A Node.js MCP server that enables AI editors to control web pages via STDIO or SSE, with tools for querying, modifying, and interacting with web pages
browser-use-mcp-server
An MCP server that enables AI agents to control web browsers using browser-use.
iterm_mcp_server
An MCP server that integrates with iTerm2 on macOS, enabling AI assistants to control terminal sessions, execute commands, and read output.
HarmonyOS-mcp-server
MCP server for manipulating HarmonyOS next devices.
bluetooth-mcp-server
This project implements a Model Context Protocol (MCP) server that enables Claude and other AI assistants to scan and interact with Bluetooth devices in your vicinity.
lifx-api-mcp-server
A local Model Context Protocol (MCP) server providing natural language access to LIFX devices via LLMs to control lights, set states, activate scenes, and trigger effects through the LIFX HTTP API.