项目简介

Terraform MCP 服务器是一个基于Model Context Protocol (MCP) 的后端应用,旨在为大型语言模型(LLM)客户端提供与HashiCorp Terraform Registry和Terraform Cloud/Enterprise (TFE/HCP Terraform) API的无缝集成。它使得LLM能够理解、查询和操作Terraform相关的资源和功能,从而实现基础设施即代码(IaC)的智能开发、自动化和管理。

主要功能点

  • 多传输协议支持: 支持标准输入/输出 (Stdio) 和可流式HTTP (StreamableHTTP) 两种传输协议,适应本地开发和远程部署。
  • Terraform Registry集成: 直接与公共Terraform Registry API集成,可查询提供者、模块和策略的详细信息。
  • HCP Terraform & Terraform Enterprise支持: 全面支持工作空间管理、组织/项目列表、私有注册表访问以及Terraform Run和变量集操作。
  • 工作空间操作: 提供创建、更新、删除工作空间的能力,并支持配置变量、标签和运行管理。
  • Prompt模板: 内置Prompt模板支持,可根据实际需求定制LLM的交互模式。
  • 会话管理与安全: 支持有状态和无状态会话模式,并提供CORS(跨域资源共享)配置和TLS支持,确保通信安全。

安装步骤

  1. 安装Go环境: 确保本地已安装Go语言环境(请查阅项目'go.mod'文件获取具体版本要求)。
  2. 安装Docker: 如果希望在容器化环境中运行服务器,请确保已安装并运行Docker。
  3. 通过Go安装 (推荐):
    # 安装最新发布版本
    go install github.com/hashicorp/terraform-mcp-server/cmd/terraform-mcp-server@latest
    
    # 或者安装main分支最新版本
    go install github.com/hashicorp/terraform-mcp-server/cmd/terraform-mcp-server@main
  4. 本地构建Docker镜像:
    git clone https://github.com/hashicorp/terraform-mcp-server.git
    cd terraform-mcp-server
    make docker-build

服务器配置

MCP客户端需要配置MCP服务器的启动命令和参数。以下是VS Code MCP客户端的配置示例,其中'command'和'args'字段用于启动MCP服务器。请根据您的具体环境和需求调整这些参数。

{
  "mcp": {
    "servers": {
      "terraform": {
        "command": "docker", // 启动MCP服务器的命令,可以是本地安装的二进制文件路径,也可以是docker命令
        "args": [
          "run",
          "-i",
          "--rm",
          "-e", "TFE_TOKEN=${input:tfe_token}", // 设置TFE_TOKEN环境变量,用于Terraform Enterprise API认证。${input:tfe_token}表示LLM客户端会在需要时提示用户输入此值。
          "-e", "TFE_ADDRESS=${input:tfe_address}", // 设置TFE_ADDRESS环境变量,Terraform Enterprise的服务地址。
          "-e", "TRANSPORT_MODE=stdio", // 设置传输模式为stdio。如果使用StreamableHTTP模式,请改为"streamable-http"并可能需要额外配置端口。
          "hashicorp/terraform-mcp-server:0.3.0" // 要运行的Docker镜像名称及版本。如果使用本地构建的镜像,可能是"terraform-mcp-server:dev"。
        ]
      }
    },
    "inputs": [ // 定义LLM客户端在启动MCP服务器前需要用户提供的输入项
      {
        "type": "promptString",
        "id": "tfe_token",
        "description": "Terraform API Token",
        "password": true // 设置为true表示在输入时隐藏内容
      },
      {
        "type": "promptString",
        "id": "tfe_address",
        "description": "Terraform Address",
        "password": false // 设置为false表示输入内容可见
      }
    ]
  }
}

常用环境变量配置说明

  • 'TFE_ADDRESS': Terraform Cloud/Enterprise 的API地址,默认为 'https://app.terraform.io'。
  • 'TFE_TOKEN': 用于认证的Terraform Enterprise API令牌。请勿在配置文件中硬编码敏感信息,通常通过环境变量或由LLM客户端提示用户输入。
  • 'TFE_SKIP_TLS_VERIFY': 是否跳过TLS验证,默认为 'false'。
  • 'TRANSPORT_MODE': 传输模式,可选 'stdio' (默认) 或 'streamable-http'。
  • 'TRANSPORT_HOST': HTTP服务器绑定的主机,默认为 '127.0.0.1'。
  • 'TRANSPORT_PORT': HTTP服务器监听的端口,默认为 '8080'。
  • 'MCP_ENDPOINT': HTTP服务器的MCP端点路径,默认为 '/mcp'。
  • 'MCP_SESSION_MODE': 会话模式,可选 'stateful' (默认) 或 'stateless'。
  • 'MCP_ALLOWED_ORIGINS': 允许CORS的来源列表,逗号分隔。
  • 'MCP_CORS_MODE': CORS模式,可选 'strict' (默认), 'development', 'disabled'。
  • 'MCP_TLS_CERT_FILE', 'MCP_TLS_KEY_FILE': TLS证书和密钥文件路径,用于HTTPS部署。
  • 'MCP_RATE_LIMIT_GLOBAL', 'MCP_RATE_LIMIT_SESSION': 全局和会话级速率限制 (格式: 'rps:burst')。
  • 'ENABLE_TF_OPERATIONS': 是否启用需要明确批准的Terraform操作工具(如删除工作空间),默认为 'false'。

基本使用方法

启动MCP服务器后,您的AI助手(MCP客户端)将能够通过配置的传输协议连接到此服务器,并利用其提供的功能与Terraform环境进行交互。

  • Stdio模式 (默认):服务器通过标准输入输出进行通信,通常用于本地集成到IDE(如VS Code)中。
    terraform-mcp-server stdio
  • StreamableHTTP模式: 服务器通过HTTP协议监听请求,可用于远程或分布式部署。
    docker run -p 8080:8080 --rm -e TRANSPORT_MODE=streamable-http -e TRANSPORT_HOST=0.0.0.0 hashicorp/terraform-mcp-server
    在Docker中运行时,请将 'TRANSPORT_HOST' 设置为 '0.0.0.0' 以允许外部连接。 可以通过访问 'http://localhost:8080/health' (假设端口为8080) 来检查HTTP服务器的健康状态。

信息

分类

开发者工具