Terry-Form MCP

by aj-geddes

Not rated
GitHub

About

Execute Terraform commands locally in a secure, containerized environment. Features LSP integration for intelligent Terraform development.

Details

Author
aj-geddes
Categories
Developer Tools, Infrastructure

Setup

Install Terry-Form MCP in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/aj-geddes/terry-form-mcp

Follow the installation instructions in the repository README, then restart your MCP client.

AI-powered Terraform execution through the Model Context Protocol.

Terry-Form MCP is a containerizedModel Context Protocolserver that gives AI assistants like Claude safe, structured access to Terraform. It exposes 25 MCP tools spanning Terraform execution, LSP intelligence, GitHub integration, and Terraform Cloud connectivity — all running inside Docker with destructive operations blocked by design.

The built-in web dashboard provides real-time server health monitoring, tool category overview, and integration status at a glance. Live status auto-refreshes every 5 seconds.

A tabbed configuration interface lets you manage server settings, integrations, cloud provider credentials, and rate limits — all without touching config files. Built with the HAT stack (HTMX + Alpine.js + Tailwind CSS).

The interactive tool catalog at/toolslists all 25 MCP tools with search, category filtering, and expandable parameter details. Also available as a raw JSON endpoint at/api/toolsand as a statictools.jsonfile.

- Docker installed and running
- Python >= 3.10 (for local development)

scripts/build.sh # Linux/macOS scripts\build.bat # Windows # or directly: docker build -t terry-form-mcp .
docker run -it --rm \ -v "$(pwd)":/mnt/workspace \ terry-form-mcp
scripts/verify.sh # Runs 8 checks: Docker, image size, Terraform, terraform-ls, Python, files, tools, startup

All configuration is through environment variables. No config file is required for basic use.

These variables are forwarded directly to the Terraform subprocess. Set them to authenticate with your cloud provider.

AWS:AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_SESSION_TOKEN,AWS_DEFAULT_REGION,AWS_REGION,AWS_PROFILE

GCP:GOOGLE_CREDENTIALS,GOOGLE_APPLICATION_CREDENTIALS,GOOGLE_PROJECT,GOOGLE_REGION,GOOGLE_ZONE

Azure:ARM_CLIENT_ID,ARM_CLIENT_SECRET,ARM_SUBSCRIPTION_ID,ARM_TENANT_ID

Add Terry-Form to any MCP-compatible client:

{ "mcpServers": { "terry": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "/path/to/your/workspace:/mnt/workspace", "terry-form-mcp" ] } } }
{ "mcpServers": { "terry": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "C:\\Users\\YourUsername\\terraform-projects:/mnt/workspace", "terry-form-mcp" ] } } }
{ "mcpServers": { "terry": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "/Users/YourUsername/terraform-projects:/mnt/workspace", "terry-form-mcp" ] } } }
{ "mcp.servers": { "terry": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "${workspaceFolder}:/mnt/workspace", "terry-form-mcp" ] } } }
# Initialize and validate a project terry(path="infrastructure/aws", actions=["init", "validate"]) # Plan with variables terry(path="environments/prod", actions=["plan"], vars={"instance_count": "3", "region": "us-east-1"})

Onlyinit,validate,fmt, andplanare permitted.applyanddestroyare blocked.

# Code completions terraform_complete(file_path="main.tf", line=10, character=0) # Hover documentation terraform_hover(file_path="main.tf", line=15, character=12) # Detailed validation with error locations terraform_validate_lsp(file_path="main.tf") # Format a file terraform_format_lsp(file_path="main.tf")

Powered byterraform-lsv0.38.5 — provides context-aware completions, inline documentation, and diagnostics with precise source locations.

# Clone a repo and prepare it for Terraform operations github_clone_repo(owner="myorg", repo="infrastructure") github_prepare_workspace(owner="myorg", repo="infrastructure", config_path="environments/prod")
# Scan for hardcoded credentials, missing encryption, overly permissive policies terry_security_scan(path="my-project") # Get actionable improvement recommendations terry_recommendations(path="my-project")
┌─────────────┐ MCP Protocol ┌──────────────────────────────────────┐ │ AI Assistant │ ◄──────────────────► │ Terry-Form MCP Server │ │ (Claude) │ │ │ └─────────────┘ │ ┌─────────────┐ ┌──────────────┐ │ │ │ Terraform │ │ terraform-ls │ │ │ │ CLI 1.12 │ │ LSP 0.38.5 │ │ │ └──────┬───────┘ └──────┬───────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────────────────────────┐ │ │ │ /mnt/workspace (isolated) │ │ │ └──────────────────────────────┘ │ └──────────────────────────────────────┘ Docker Container

The built-in web UI uses theHAT stack:

- HTMX 2.0 — partial page updates without full reloads
- Alpine.js 3.14 — lightweight client-side reactivity for tabs and toasts
- Tailwind CSS — dark-mode-first utility styling

Accessible at the server root when running withstreamable-httporssetransport.

Terry-Form implements defense-in-depth with four layers:

Forced environment variables:TF_IN_AUTOMATION=true,TF_INPUT=false,CHECKPOINT_DISABLE=true.

To use the dashboard and configuration UI, run with HTTP transport:

# Local MCP_TRANSPORT=streamable-http HOST=0.0.0.0 PORT=8000 python3 src/server_enhanced_with_lsp.py # Docker docker run -it --rm \ -p 8000:8000 \ -v "$(pwd)":/mnt/workspace \ -e MCP_TRANSPORT=streamable-http \ terry-form-mcp

Then openhttp://localhost:8000in your browser.

Built onhashicorp/terraform:1.12(Alpine-based, ~150MB). Includes:

- Terraform CLI 1.12
- terraform-lsv0.38.5 for LSP support
- Python 3.12 with FastMCP 3.0+
- Runs as non-root userterraform(UID 1001)

# Install dependencies pip install -r requirements.txt # Run locally python3 src/server_enhanced_with_lsp.py # Code quality black . # Format (88-char line limit) flake8 . # Lint mypy src/*.py # Type check

- No state modificationapplyanddestroyare intentionally blocked
- String variables only— complex variable types not supported via CLI passthrough
- LSP cold start— first LSP operation takes 1-2 seconds for initialization
- Local execution— designed for development workflows, not production CI/CD

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

HashiCorp Terraform MCP server for Infrastructure as Code workflows, including provider and module discovery through the Terraform Registry.

A Model Context Protocol (MCP) server for accessing the OpenTofu Registry.

The Railway MCP Server enables natural language interaction with your Railway projects and infrastructure. Ask your IDE or AI assistant to create projects, deploy templates, manage environments, pull variables, redeploy services, and more.

The Shipyard CLI provides an MCP server for agents to manage Shipyard environments directly: by pulling logs, comparing branches, running tests, and stopping/starting environments..

Manage your Bedrock server with natural language commands using the Bedrock Server Manager API.

Create and manage Terraform modules for cloud-native infrastructure using the Facets.cloud FTF CLI.

Verified GPU compute for humans, applications, and agents.

Deploy Python functions as web apps. Type hints become UI, API, and shareable links. 32 MCP tools for deploy, run, storage, secrets, scheduling, versioning, and sharing.

Run and interpret Kubernetes commands interactively with a provided kubeconfig.

Kubernetes desktop IDE with an embedded MCP server for visual oversight of AI-driven cluster operations. Supports FluxCD, ArgoCD, and Helm.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.