MCP server providing Terraform infrastructure-as-code tools for Claude
Server provides 6 Terraform tools with basic schemas and descriptions. All tools have input schemas with type definitions and parameter descriptions, meeting minimum requirements. However, descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool vs alternatives. No output schemas documented. Error handling returns raw error messages without recovery guidance. Missing tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Parameter descriptions lack format constraints and validation rules. No pagination support despite tools that could return large result sets (terraform_state_list). Composition is sound, each tool has one responsibility, but descriptions don't explain dependencies (e.g., terraform_plan should be called before terraform_apply).
Apply Terraform changes to reach the desired infrastructure state
Initialize a Terraform working directory, downloading providers and modules
Read output values from the Terraform state
Generate and show a Terraform execution plan for infrastructure changes
List all resources tracked in the Terraform state file
Validate Terraform configuration files for syntax and consistency errors
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to parse unstructured text and plan downstream calls blindly.
Error handling returns raw error messages without recovery guidance. E.g., 'Error: command not found' tells the LLM nothing about whether to retry, ask the user, or try a different tool.
Missing tool annotations (destructiveHint, readOnlyHint, idempotentHint). terraform_apply is irreversible but unmarked; terraform_validate is read-only but unmarked. LLMs cannot reason about safety without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Descriptions lack dependency hints and WHEN-to-use guidance. No mention that terraform_plan should precede terraform_apply, or that terraform_init must run before other commands. LLMs cannot infer workflow order.
Parameter descriptions lack format constraints. E.g., 'working_dir' has no guidance on absolute vs relative paths, or validation rules. 'backend_config' accepts arbitrary key-value pairs with no schema or examples of valid keys.