返回市场
terraform-mcp服务器

terraform-mcp服务器

作者:hashicorp1070 星标更新:2025-11-22

项目介绍

<img src="public/images/Terraform-LogoMark_onDark.svg" width="30" align="left" style="margin-right: 12px;"/> Terraform MCP 服务器

Terraform MCP 服务器是一个 模型上下文协议(MCP) 服务器,它提供了与 Terraform 注册表 API 的无缝集成,支持基础设施即代码(IaC)开发中的高级自动化和交互能力。

功能

  • 双传输支持:同时支持 Stdio 和 StreamableHTTP 传输,并且可以配置端点
  • Terraform 注册表集成:直接与公共 Terraform 注册表 API 集成,包括提供者、模块和策略
  • HCP Terraform 和 Terraform Enterprise 支持:全面的工作区管理、组织/项目列表以及私有注册表访问
  • 工作区操作:创建、更新、删除工作区,支持变量、标签和运行管理

安全提示:目前,MCP 服务器仅适用于本地使用。如果使用 StreamableHTTP 传输,请始终配置 MCP_ALLOWED_ORIGINS 环境变量以限制访问到受信任的来源。这有助于防止 DNS 重新绑定攻击和其他跨源漏洞。

安全提示:根据查询的不同,MCP 服务器可能会向 MCP 客户端和 LLM 暴露某些 Terraform 数据。不要使用 MCP 服务器与不受信任的 MCP 客户端或 LLM 一起使用。

法律提示:您对第三方 MCP 客户端/LLM 的使用完全受此类 MCP/LLM 使用条款的约束,IBM 对此类第三方工具的表现不负责任。IBM 明确否认任何和所有关于第三方 MCP 客户端/LLM 的担保和责任,并可能无法提供支持来解决由第三方工具引起的问题。

警告:MCP 服务器提供的输出和建议是动态生成的,可能会根据查询、模型和连接的 MCP 客户端而有所不同。用户在实施之前应彻底审查所有输出/建议,确保它们符合其组织的安全最佳实践、成本效益目标和合规要求。

先决条件

  1. 确保已安装并运行 Docker,以便在容器化环境中使用该服务器。
  2. 安装一个支持模型上下文协议(MCP)的人工智能助手。

命令行选项

环境变量:

变量描述默认值
TFE_ADDRESSHCP Terraform 或 TFE 地址"https://app.terraform.io"
TFE_TOKENTerraform Enterprise API 令牌""(空)
TFE_SKIP_TLS_VERIFY跳过 HCP Terraform 或 Terraform Enterprise 的 TLS 验证false
TRANSPORT_MODE设置为 streamable-http 以启用 HTTP 传输(旧版 http 值仍被支持)stdio
TRANSPORT_HOST绑定 HTTP 服务器的主机127.0.0.1
TRANSPORT_PORTHTTP 服务器端口8080
MCP_ENDPOINTHTTP 服务器端点路径/mcp
MCP_SESSION_MODE会话模式:statefulstatelessstateful
MCP_ALLOWED_ORIGINSCORS 允许的来源列表,逗号分隔""(空)
MCP_CORS_MODECORS 模式:strictdevelopmentdisabledstrict
M_ _TLS_CERT_FILETLS 证书文件路径,非 localhost 部署所需(例如 /path/to/cert.pem""(空)
MCP_TLS_KEY_FILETLS 密钥文件路径,非 localhost 部署所需(例如 /path/to/key.pem""(空)
MCP_RATE_LIMIT_GLOBAL全局速率限制(格式:rps:burst10:20
MCP_RATE_LIMIT_SESSION每个会话的速率限制(格式:rps:burst5:10
ENABLE_TF_OPERATIONS启用需要明确批准的工具false
# Stdio 模式
terraform-mcp-server stdio [--log-file /path/to/log]

# StreamableHTTP 模式
terraform-mcp-server streamable-http [--transport-port 8080] [--transport-host 127.0.0.1] [--mcp-endpoint /mcp] [--log-file /path/to/log]

指南

默认指南位于 cmd/terraform-mcp-server/instructions.md,如果这些指南不适合您的组织的 Terraform 实践,或者 MCP 服务器产生不准确的响应,请替换它们并重建容器或二进制文件。示例指南位于 instructions/example-mcp-instructions.md

AGENTS.md 文件本质上充当编码代理的 README:一个专门且可预测的地方,用于提供上下文和指令,帮助人工智能编码代理处理您的项目。一个 AGENTS.md 文件可以与不同的编码代理一起使用。示例指南位于 instructions/example-AGENTS.md,为了使用它,将一个名为 AGENTS.md 的文件提交到您的 Terraform 配置所在的目录中。

安装

在 Visual Studio Code 中使用

在 VS Code 的用户设置(JSON)文件中添加以下 JSON 块。您可以通过按 Ctrl + Shift + P 并键入 Preferences: Open User Settings (JSON) 来执行此操作。

更多关于在 VS Code 的代理模式文档中的 MCP 服务器工具使用信息,请参阅 VS Code 文档

<table> <tr><th>版本 0.3.0+ 或更高</th><th>版本 0.2.3 或更低</th></tr> <tr valign=top> <td>
{
  "mcp": {
    "servers": {
      "terraform": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e", "TFE_TOKEN=${input:tfe_token}",
          "-e", "TFE_ADDRESS=${input:tfe_address}",
          "hashicorp/terraform-mcp-server:0.3.3"
        ]
      }
    },
    "inputs": [
      {
        "type": "promptString",
        "id": "tfe_token",
        "description": "Terraform API 令牌",
        "password": true
      },
      {
        "type": "promptString",
        "id": "tfe_address",
        "description": "Terraform 地址",
        "password": false
      }
    ]
  }
}
</td> <td>
{
  "mcp": {
    "servers": {
      "terraform": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "hashicorp/terraform-mcp-server:0.2.3"
        ]
      }
    }
  }
}
</td> </tr> </table>

可选地,您可以将类似的示例(即没有 mcp 键)添加到名为 .vscode/mcp.json 的文件中,位于您的工作空间中。这将允许您与其他人员共享配置。

<table> <tr><th>版本 0.3.0+ 或更高</th><th>版本 0.2.3 或更低</th></tr> <tr valign=top> <td>
{
  "servers": {
    "terraform": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e", "TFE_TOKEN=${input:tfe_token}",
        "-e", "TFE_ADDRESS=${input:tfe_address}",
        "hashicorp/terraform-mcp-server:0.3.3"
      ]
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "tfe_token",
      说明:"Terraform API 令牌",
      "password": true
    },
    {
      "type": "promptString",
      "id": "tfe_address",
      "description": "Terraform 地址",
      "password": false
    }
  ]
}
</td> <td>
{
  "servers": {
    "terraform": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "hashicorp/terraform-mcp-server:0.2.3"
      ]
    }
  }
}
</td> </tr> </table>

<img alt="在 VS Code 中安装 (docker)" src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=安装 Terraform MCP&color=0098FF"> <img alt="在 VS Code Insiders 中安装 (docker)" src="https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=安装 Terraform MCP&color=24bfa5">

在 Cursor 中使用

将此内容添加到您的 Cursor 配置 (~/.cursor/mcp.json) 中,或通过 Settings → Cursor Settings → MCP:

<table> <tr><th>版本 0.3.0+ 或更高</th><th>版本 0.2.3 或更低</th></tr> <tr valign=top> <td>
{
  "mcpServers": {
    "terraform": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e", "TFE_ADDRESS=<<PASTE_TFE_ADDRESS_HERE>>",
        "-e", "TFE_TOKEN=<<PASTE_TFE_TOKEN_HERE>>",
        "hashicorp/terraform-mcp-server:0.3.3"
      ]
    }
  }
}
</td> <td>
{
  "servers": {
    "terraform": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "hashicorp/terraform-mcp-server:0.2.3"
      ]
    }
  }
}
</td> </tr> </table> <a href="cursor://anysphere.cursor-deeplink/mcp/install?name=terraform&config=eyJjb21tYW5kIjoiZG9ja2VyIiwiYXJncyI6WyJydW4iLCItaSIsIi0tcm0iLCJoYXNoaWNvcnAvdGVycmFmb3JtLW1jcC1zZXJ2ZXIiXX0%3D"> <img alt="将 terraform MCP 服务器添加到 Cursor" src="https://cursor.com/deeplink/mcp-install-dark.png" height="32" /> </a>

在 Claude Desktop / Amazon Q Developer / Amazon Q CLI 中使用

更多关于在 Claude Desktop 中使用 MCP 服务器工具的信息,请参阅 用户文档。有关在 Amazon Q 中使用 MCP 服务器的更多信息,请参阅 文档

<table> <tr><th>版本 0.3.0+ 或更高</th><th>版本 0.2.3 或更低</th></tr> <tr valign=top> <td>
{
  "mcpServers": {
    "terraform": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e", "TFE_ADDRESS=<<PASTE_TFE_ADDRESS_HERE>>",
        "-e", "TFE_TOKEN=<<PASTE_TFE_TOKEN_HERE>>",
        "hashicorp/terraform-mcp-server:0.3.3"
      ]
    }
  }
}
</td> <td>
{
  "mcpServers": {
    "terraform": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "hashicorp/terraform-mcp-server:0.2.3"
      ]
    }
  }
}
</td> </tr> </table>

在 Claude Code 中使用

更多关于在 Claude Code 中使用和添加 MCP 服务器工具的信息,请参阅 用户文档

  • 本地 (stdio) 传输
claude mcp add terraform -s user -t stdio -- docker run -i --rm hashicorp/terraform-mcp-server
  • 远程 (streamable-http) 传输
# 运行服务器(示例)
docker run -p 8080:8080 --rm -e TRANSPORT_MODE=streamable-http -e TRANSPORT_HOST=0.0.0.0 hashicorp/terraform-mcp-server

# 添加到 Claude Code
claude mcp add --transport http terraform http://localhost:8080/mcp

在 Gemini 扩展中使用

出于安全考虑,避免硬编码您的凭据,在 ~/.gemini/.env(其中 ~ 是您的主目录或项目目录)中创建或更新以存储 HCP Terraform 或 Terraform Enterprise 凭据

# ~/.gemini/.env
TFE_ADDRESS=your_tfe_address_here
TFE_TOKEN=your_tfe_token_here

安装扩展并运行 Gemini

gemini extensions install https://github.com/hashicorp/terraform-mcp-server
gemini

从源码安装

使用最新发布的版本:

go install github.com/hashicorp/terraform-mcp-server/cmd/terraform-mcp-server@latest

使用主分支:

go install github.com/hashicorp/terraform-mcp-server/cmd/terraform-mcp-server@main
<table> <tr><th>版本 0.3.0+ 或更高</th><th>版本 0.2.3 或更低</th></tr> <tr valign=top> <td>
{
  "mcp": {
    "servers": {
      "terraform": {
        "type": "stdio",
        "command": "/path/to/terraform-mcp-server",
        "env": {
          "TFE_TOKEN": "<<TFE_TOKEN_HERE>>"
        },
      }
    }
  }
}
</td> <td>
{
  "mcp": {
    "servers": {
      "terraform": {
        "type": "stdio",
        "command": "/path/to/terraform-mcp-server"
      }
    }
  }
}
</td> </tr> </table>

本地构建 Docker 镜像

在使用服务器之前,您需要本地构建 Docker 镜像:

  1. 克隆仓库:
git clone https://github.com/hashicorp/terraform-mcp-server.git
cd terraform-mcp-server
  1. 构建 Docker 镜像:
make docker-build
  1. 这将创建一个本地 Docker 镜像,您可以在以下配置中使用。
# 在 stdio 模式下运行
docker run -i --rm terraform-mcp-server:dev

# 在 streamable-http 模式下运行
docker run -p 8080:8080 --rm -e TRANSPORT_MODE=streamable-http -e TRANSPORT_HOST=0.0.0.0 terraform-mcp-server:dev

注意:当在 Docker 中运行时,您应该设置 TRANSPORT_HOST=0.0.0.0 以允许来自容器外部的连接。

  1. (可选)测试 http 模式的连接
# 测试连接
curl http://localhost:8080/health
  1. 您可以按照以下方式在您的 AI 助手中使用它:
{
  "mcpServers": {
    "terraform": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "terraform-mcp-server:dev"
      ]
    }
  }
}

可用工具

查看可用工具 :link:

可用资源

查看可用资源 :link:

传输支持

Terraform MCP 服务器支持多种传输协议:

1. Stdio 传输(默认)

使用 JSON-RPC 消息的标准输入/输出通信。适合本地开发和直接与 MCP 客户端集成。

2. StreamableHTTP 传输

现代基于 HTTP 的