Terraform-MCP-Server
3
The Terraform MCP Assistant is a server that leverages natural language processing to interact with Terraform operations. It simplifies infrastructure management by allowing users to give commands in plain English, offering features like execution plan visualization and error handling.
Terraform MCP Assistant
A FastMCP-based server that provides natural language interface to Terraform operations. This assistant allows you to manage your infrastructure using simple English commands instead of remembering specific Terraform syntax.
Features
- Natural language processing of Terraform commands
- Execution plan visualization
- State inspection and management
- Infrastructure deployment and destruction
- Configuration documentation
- Automatic workspace validation
- Error handling and formatted output
Installation
- Clone the repository:
git clone https://github.com/yourusername/terraform-mcp-server.git
cd terraform-mcp-server
- Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Optional: Install Graphviz for plan visualization:
- Windows: Download from Graphviz Download Page
- Linux:
sudo apt-get install graphviz
- macOS:
brew install graphviz
Configuration
- Set up environment variables (optional):
export TERRAFORM_WORKSPACE="/path/to/terraform/workspace"
export LOG_LEVEL="INFO"
- Place your Terraform configuration files in the workspace directory.
Usage
- Start the MCP server:
python src/main.py
- Example commands:
- "Initialize the Terraform workspace"
- "What will change if I apply?"
- "Show me the current state"
- "Apply the configuration"
- "List all resources"
- "Destroy the infrastructure"
Project Structure
terraform-mcp-assistant/
├── docs/ # Documentation
├── examples/ # Example Terraform configurations
├── src/ # Source code
│ ├── handlers/ # Command handlers
│ ├── main.py # Entry point
│ └── config.py # Configuration management
├── tests/ # Test files
├── .env # Environment variables (not in VCS)
└── README.md # This file
Development
- Install development dependencies:
pip install -r requirements-dev.txt
- Run tests:
pytest
Contributing
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request