tfmcp 0.2.2

Terraform Model Context Protocol Tool - A CLI tool to manage Terraform through MCP
Documentation
{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "name": "io.github.nwiizo/tfmcp",
  "title": "tfmcp",
  "description": "Local-first Terraform MCP server with Registry lookup, Terraform CLI workflows, plan/state analysis, module health checks, and safety gates.",
  "repository": {
    "url": "https://github.com/nwiizo/tfmcp",
    "source": "github"
  },
  "version": "0.2.2",
  "packages": [
    {
      "registryType": "oci",
      "identifier": "ghcr.io/nwiizo/tfmcp:0.2.2",
      "transport": {
        "type": "stdio"
      },
      "environmentVariables": [
        {
          "name": "TERRAFORM_DIR",
          "description": "Terraform project directory to inspect and operate on.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "TFMCP_ALLOW_DANGEROUS_OPS",
          "description": "Enable Terraform operations that can change infrastructure.",
          "isRequired": false,
          "format": "boolean",
          "isSecret": false
        },
        {
          "name": "TFMCP_ALLOW_AUTO_APPROVE",
          "description": "Allow auto-approve for gated Terraform operations.",
          "isRequired": false,
          "format": "boolean",
          "isSecret": false
        },
        {
          "name": "ENABLE_TF_OPERATIONS",
          "description": "Enable gated HCP Terraform / Terraform Enterprise write operations.",
          "isRequired": false,
          "format": "boolean",
          "isSecret": false
        },
        {
          "name": "TFE_ADDRESS",
          "description": "HCP Terraform or Terraform Enterprise base URL.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "TFE_TOKEN",
          "description": "HCP Terraform or Terraform Enterprise API token for read-only tools.",
          "isRequired": false,
          "format": "string",
          "isSecret": true
        },
        {
          "name": "TFE_SKIP_TLS_VERIFY",
          "description": "Skip TLS verification for trusted private TFE installations.",
          "isRequired": false,
          "format": "boolean",
          "isSecret": false
        },
        {
          "name": "TFE_MAX_RESPONSE_BYTES",
          "description": "Maximum HCP/TFE response bytes returned to MCP clients before truncation.",
          "isRequired": false,
          "format": "number",
          "isSecret": false
        },
        {
          "name": "TRANSPORT_MODE",
          "description": "MCP transport mode: stdio or streamable-http.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "TRANSPORT_HOST",
          "description": "Host address for streamable HTTP mode.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "TRANSPORT_PORT",
          "description": "Port for streamable HTTP mode.",
          "isRequired": false,
          "format": "number",
          "isSecret": false
        },
        {
          "name": "MCP_ENDPOINT",
          "description": "Streamable HTTP MCP endpoint path.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "MCP_HEALTH_ENDPOINT",
          "description": "Health endpoint path for streamable HTTP mode.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "MCP_METRICS_ENDPOINT",
          "description": "Metrics endpoint path for streamable HTTP mode.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "MCP_SESSION_MODE",
          "description": "Streamable HTTP session mode: stateful or stateless.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "MCP_CORS_MODE",
          "description": "CORS mode for streamable HTTP: strict, development, or disabled.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "MCP_ALLOWED_ORIGINS",
          "description": "Comma-separated allowed browser origins. Defaults to loopback origins; MCP request Origin validation remains enabled in every CORS mode.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "MCP_ALLOWED_HOSTS",
          "description": "Comma-separated HTTP Host or authority values accepted by Streamable HTTP. Defaults to rmcp loopback hosts when unset.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "MCP_HEARTBEAT_INTERVAL",
          "description": "Streamable HTTP SSE keep-alive interval in seconds. Set to 0 to disable.",
          "isRequired": false,
          "format": "number",
          "isSecret": false
        },
        {
          "name": "MCP_ORGANIZATION_ALLOWLIST",
          "description": "Comma-separated HCP/TFE organizations allowed for remote MCP requests.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "MCP_RATE_LIMIT_GLOBAL",
          "description": "Maximum HTTP requests per minute across the server.",
          "isRequired": false,
          "format": "number",
          "isSecret": false
        },
        {
          "name": "MCP_RATE_LIMIT_SESSION",
          "description": "Maximum HTTP requests per minute per MCP session.",
          "isRequired": false,
          "format": "number",
          "isSecret": false
        },
        {
          "name": "MCP_TLS_CERT_FILE",
          "description": "PEM certificate file for HTTPS Streamable HTTP.",
          "isRequired": false,
          "format": "string",
          "isSecret": false
        },
        {
          "name": "MCP_TLS_KEY_FILE",
          "description": "PEM private key file for HTTPS Streamable HTTP.",
          "isRequired": false,
          "format": "string",
          "isSecret": true
        }
      ]
    }
  ]
}