terryLABSCO SUMMARY
The container is the safety boundary, and the rate limits are per-minute.
Everything runs inside Docker with destructive operations blocked, which is what makes it reasonable to point an assistant at real infrastructure at all. Two knobs are worth setting before you start: MAX_OPERATION_TIMEOUT bounds a Terraform command between 10 and 3600 seconds, and the rate limits — TERRY_RATE_LIMIT_TERRAFORM at 20 per minute, GitHub and Terraform Cloud at 30 — stop a chatty agent from hammering a provider API.
What it is
A containerised Terraform server. Terraform runs inside Docker against a workspace you mount, and the same image carries terraform-ls, so plan output and language-server diagnostics come from one place.
What you get
terryexecutes Terraform operations with security validation;terry_version,terry_environment_checkandterry_workspace_listreport what the container has and which workspaces are initialisedterraform_validate_lspandterraform_format_lsprun through terraform-ls;terraform_hoverandterraform_completeanswer at a cursor position;terraform_lsp_statusreports the integrationterry_analyzechecks a configuration against best practices;terry_security_scanandterry_recommendationsproduce findings and fixesterry_file_check,terry_workspace_info,terry_workspace_setup,terry_lsp_initandterry_lsp_debugcover diagnostics and scaffoldinggithub_clone_repo,github_prepare_workspace,github_list_terraform_filesandgithub_get_terraform_configpull configurations straight out of a repository- A dashboard at
/toolslists the catalogue with search and parameter detail, also served raw at/api/tools
Requirements
Docker, with your Terraform directory mounted at /mnt/workspace. MCP_TRANSPORT selects stdio, sse or streamable-http; TERRY_PORT defaults to 8000. Cloud credentials pass straight through to the Terraform subprocess — AWS_ACCESS_KEY_ID, GOOGLE_CREDENTIALS, ARM_CLIENT_ID and their siblings. GitHub features need GITHUB_APP_ID and a private key; Terraform Cloud needs TF_API_TOKEN. Local development wants Python 3.10 or newer.
Setup effort
Run a container — build the image from the repository, then point your client at it
USE CASES
Catching problems before an apply
Validate through the language server and read structured diagnostics rather than a wall of CLI output.
Reviewing configuration for security issues
Scan the workspace and get findings back with recommended changes attached.
Working on a repo you just found
Clone it, prepare a workspace from it, and list what Terraform is actually in there.
Explaining an unfamiliar resource block
Hover at the cursor and get the provider documentation for what is under it.
25 tools
Listed in project docs. Your client may show a different list.
terry_versionterry_environment_checkterry_workspace_listterraform_validate_lspterraform_hoverterraform_completeterraform_format_lspterraform_lsp_statusterry_lsp_debugterry_workspace_infoterry_lsp_initterry_file_checkterry_workspace_setupterry_analyzeterry_security_scanterry_recommendationsgithub_clone_repogithub_list_terraform_filesgithub_get_terraform_configgithub_prepare_workspacetf_cloud_list_workspacestf_cloud_get_workspacetf_cloud_list_runstf_cloud_get_state_outputsBEFORE YOU INSTALL
What to know first
Tools you get
25 tools named in the project's documentation.
Requires
Docker installed and running
Where it runs
All 3 documented setups run the server on your machine.
INSTALLATION
Connect your client
Build the image from the repository, then point your client at it.
Server setup
git clone https://github.com/aj-geddes/terry-form-mcp.git
cd terry-form-mcp
docker build -t terry-form-mcp .MCP Clients
Claude Desktop — Windows
{
"mcpServers": {
"terry": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"C:\\Users\\<YOUR_USERNAME>\\terraform-projects:/mnt/workspace",
"terry-form-mcp"
]
}
}
}Claude Desktop — macOS
{
"mcpServers": {
"terry": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/Users/<YOUR_USERNAME>/terraform-projects:/mnt/workspace",
"terry-form-mcp"
]
}
}
}VS Code
{
"servers": {
"terry": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"${workspaceFolder}:/mnt/workspace",
"terry-form-mcp"
]
}
}
}