Terraform MCP Server - AI驱动的基础设施即代码管理
HashiCorp 官方实现 | Stars: 986 | Go | MPL-2.0
概述
Terraform MCP Server 是 HashiCorp 官方提供的 Model Context Protocol 实现,为 AI 助手提供与 Terraform 生态系统的无缝集成。它支持访问 Terraform 公共注册表、管理 HCP Terraform 和 Terraform Enterprise 工作空间,以及执行基础设施即代码(IaC)的各种操作。
该服务器提供了30+ 个专业工具,涵盖 Provider/Module 搜索、工作空间管理、变量配置、运行管理等核心功能。支持双传输协议(Stdio 和 StreamableHTTP),可灵活部署在本地开发环境或企业生产环境中。特别适合需要智能化基础设施管理、自动化运维、策略合规的 DevOps 和 Platform 团队。
核心特性
- ✅ HashiCorp 官方实现,与 Terraform 生态深度集成
- 🛠️ 30+ 专业工具,覆盖注册表查询和工作空间管理
- 🎯 双传输协议支持(Stdio / StreamableHTTP)
- 📊 完整的 HCP Terraform 集成
- 🌐 公共和私有注册表支持
- 🔌 兼容多种 MCP 客户端(Claude Desktop、VS Code、Cursor、Gemini)
- 🚀 有状态/无状态会话模式
- 🔒 企业级安全特性(TLS、CORS、速率限制)
- ⚡ 变量集和标签管理
- 🎛️ 运行操作控制(Plan/Apply/Refresh)
工具列表
注册表工具(Registry Tools)
这些工具始终可用,无需 TFE Token:
1. resolve_provider_doc_id
功能:解析 Terraform Provider 文档 ID
参数:
provider(string, 必需) - Provider 名称,格式:namespace/provider-name
示例:
1 | { |
2. get_provider_docs
功能:获取 Terraform Provider 的完整文档
参数:
provider(string, 必需) - Provider 名称doc_type(string, 可选) - 文档类型(resources/data-sources/functions/guides)
示例:
1 | { |
3. get_latest_provider_version
功能:获取 Provider 的最新版本信息
参数:
provider(string, 必需) - Provider 名称,格式:namespace/provider-name
示例:
1 | { |
4. search_modules
功能:在 Terraform 公共注册表中搜索模块
参数:
query(string, 必需) - 搜索查询字符串
示例:
1 | { |
返回示例:
1 | Available Terraform Modules (top matches) for vpc aws |
5. get_module_details
功能:获取 Terraform Module 的详细信息
参数:
module_id(string, 必需) - 模块 ID,格式:namespace/name/provider
示例:
1 | { |
6. get_latest_module_version
功能:获取 Module 的最新版本信息
参数:
module_id(string, 必需) - 模块 ID,格式:namespace/name/provider
示例:
1 | { |
7. search_policies
功能:搜索 Sentinel 策略(用于合规和治理)
参数:
query(string, 必需) - 搜索查询字符串
示例:
1 | { |
8. get_policy_details
功能:获取 Sentinel 策略的详细信息
参数:
policy_id(string, 必需) - 策略 ID
示例:
1 | { |
HCP Terraform / TFE 工具
这些工具需要配置 TFE_TOKEN 环境变量:
9. list_terraform_orgs
功能:列出所有 Terraform 组织
参数:无
示例:
1 | {} |
10. list_terraform_projects
功能:列出组织中的所有项目
参数:
organization(string, 必需) - 组织名称
示例:
1 | { |
11. list_workspaces
功能:列出组织中的所有工作空间
参数:
organization(string, 必需) - 组织名称project_id(string, 可选) - 项目 ID,用于过滤
示例:
1 | { |
12. get_workspace_details
功能:获取工作空间的详细信息
参数:
organization(string, 必需) - 组织名称workspace(string, 必需) - 工作空间名称
示例:
1 | { |
13. create_workspace
功能:创建新的 Terraform 工作空间
参数:
organization(string, 必需) - 组织名称workspace_name(string, 必需) - 工作空间名称project_id(string, 可选) - 项目 IDterraform_version(string, 可选) - Terraform 版本auto_apply(boolean, 可选) - 是否自动应用
示例:
1 | { |
14. update_workspace
功能:更新现有工作空间的配置
参数:
organization(string, 必需) - 组织名称workspace(string, 必需) - 工作空间名称attributes(object, 必需) - 要更新的属性
示例:
1 | { |
15. delete_workspace_safely
功能:安全地删除工作空间(需要 ENABLE_TF_OPERATIONS=true)
参数:
organization(string, 必需) - 组织名称workspace(string, 必需) - 工作空间名称
示例:
1 | { |
注意:此工具默认禁用,需要显式启用 ENABLE_TF_OPERATIONS 环境变量。
16. search_private_providers
功能:搜索私有 Provider
参数:
organization(string, 必需) - 组织名称query(string, 可选) - 搜索查询
示例:
1 | { |
17. get_private_provider_details
功能:获取私有 Provider 的详细信息
参数:
organization(string, 必需) - 组织名称registry_name(string, 必需) - 注册表名称provider_name(string, 必需) - Provider 名称
示例:
1 | { |
18. search_private_modules
功能:搜索私有 Module
参数:
organization(string, 必需) - 组织名称query(string, 可选) - 搜索查询
示例:
1 | { |
19. get_private_module_details
功能:获取私有 Module 的详细信息
参数:
organization(string, 必需) - 组织名称registry_name(string, 必需) - 注册表名称module_name(string, 必需) - Module 名称provider(string, 必需) - Provider 名称
示例:
1 | { |
20. create_workspace_tags
功能:为工作空间创建标签
参数:
organization(string, 必需) - 组织名称workspace(string, 必需) - 工作空间名称tags(array, 必需) - 标签列表
示例:
1 | { |
21. read_workspace_tags
功能:读取工作空间的标签
参数:
organization(string, 必需) - 组织名称workspace(string, 必需) - 工作空间名称
示例:
1 | { |
22. list_runs
功能:列出工作空间的运行记录
参数:
organization(string, 必需) - 组织名称workspace(string, 必需) - 工作空间名称
示例:
1 | { |
23. create_run
功能:创建 Terraform 运行(Plan 或 Apply)
参数:
organization(string, 必需) - 组织名称workspace(string, 必需) - 工作空间名称message(string, 可选) - 运行消息operation(string, 可选) - 操作类型(plan_and_apply / refresh_state)
示例:
1 | { |
行为:
- 默认模式:创建 Plan,不会自动 Apply(安全模式)
ENABLE_TF_OPERATIONS=true时:可以创建 Plan 并自动 Apply
24. action_run
功能:对运行执行操作(需要 ENABLE_TF_OPERATIONS=true)
参数:
run_id(string, 必需) - 运行 IDaction(string, 必需) - 操作类型(apply / discard / cancel)
示例:
1 | { |
注意:此工具默认禁用,需要显式启用 ENABLE_TF_OPERATIONS 环境变量。
25. get_run_details
功能:获取运行的详细信息
参数:
run_id(string, 必需) - 运行 ID
示例:
1 | { |
26. list_variable_sets
功能:列出变量集
参数:
organization(string, 必需) - 组织名称
示例:
1 | { |
27. create_variable_set
功能:创建变量集
参数:
organization(string, 必需) - 组织名称name(string, 必需) - 变量集名称description(string, 可选) - 描述global(boolean, 可选) - 是否全局应用
示例:
1 | { |
28. create_variable_in_variable_set
功能:在变量集中创建变量
参数:
variable_set_id(string, 必需) - 变量集 IDkey(string, 必需) - 变量键value(string, 必需) - 变量值category(string, 必需) - 变量类别(terraform / env)sensitive(boolean, 可选) - 是否敏感
示例:
1 | { |
29. delete_variable_in_variable_set
功能:从变量集中删除变量
参数:
variable_set_id(string, 必需) - 变量集 IDvariable_id(string, 必需) - 变量 ID
示例:
1 | { |
30. attach_variable_set_to_workspaces
功能:将变量集附加到工作空间
参数:
variable_set_id(string, 必需) - 变量集 IDworkspace_ids(array, 必需) - 工作空间 ID 列表
示例:
1 | { |
31. detach_variable_set_from_workspaces
功能:从工作空间分离变量集
参数:
variable_set_id(string, 必需) - 变量集 IDworkspace_ids(array, 必需) - 工作空间 ID 列表
示例:
1 | { |
32. list_workspace_variables
功能:列出工作空间的变量
参数:
organization(string, 必需) - 组织名称workspace(string, 必需) - 工作空间名称
示例:
1 | { |
33. create_workspace_variable
功能:在工作空间中创建变量
参数:
organization(string, 必需) - 组织名称workspace(string, 必需) - 工作空间名称key(string, 必需) - 变量键value(string, 必需) - 变量值category(string, 必需) - 变量类别(terraform / env)sensitive(boolean, 可选) - 是否敏感
示例:
1 | { |
配置方式
环境变量
1 | # === 核心配置 === |
Claude Desktop 配置
在 ~/.config/claude/claude_desktop_config.json 中添加(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
1 | { |
VS Code 配置
在 VS Code 的 User Settings (JSON) 中添加(Ctrl+Shift+P → Preferences: Open User Settings (JSON)):
1 | { |
或在项目的 .vscode/mcp.json 文件中配置(团队共享):
1 | { |
Cursor 配置
在 ~/.cursor/mcp.json 或通过 Settings → Cursor Settings → MCP 添加:
1 | { |
Claude Code 配置
Stdio 传输(本地)
1 | claude mcp add terraform -s user -t stdio -- docker run -i --rm hashicorp/terraform-mcp-server |
StreamableHTTP 传输(远程)
1 | # 1. 启动服务器 |
Gemini 配置
创建 ~/.gemini/.env 文件:
1 | # ~/.gemini/.env |
安装并运行:
1 | gemini extensions install https://github.com/hashicorp/terraform-mcp-server |
Docker 部署
1 | # Stdio 模式(本地开发) |
从源码安装
1 | # 安装最新版本 |
配置示例(VS Code):
1 | { |
使用场景
1. 智能化 Provider 和 Module 搜索
通过自然语言查询快速找到合适的 Terraform Providers 和 Modules。
示例对话:
1 | 用户: "我需要在 AWS 上创建一个 VPC,推荐一个成熟的模块" |
技术流程:
- 使用
search_modules工具搜索关键词 - 使用
get_module_details获取详细信息 - 使用
get_latest_module_version确认最新版本 - AI 生成配置示例
2. 工作空间自动化管理
使用自然语言命令管理 Terraform 工作空间,无需手动登录 HCP Terraform。
示例对话:
1 | 用户: "创建一个名为 staging-api 的工作空间,使用 Terraform 1.7.0" |
技术流程:
create_workspace- 创建工作空间create_workspace_tags- 添加标签create_workspace_variable- 配置变量get_workspace_details- 验证配置
3. 策略合规检查
集成 Sentinel 策略,通过 AI 助手进行合规性检查。
示例对话:
1 | 用户: "我需要确保所有 S3 Bucket 都启用加密,有什么策略推荐?" |
技术流程:
search_policies- 搜索策略get_policy_details- 获取策略详情- AI 解释策略内容和使用方法
4. 变量和配置管理
智能管理变量集和工作空间变量,确保配置一致性。
示例对话:
1 | 用户: "创建一个全局变量集用于 AWS 凭据" |
技术流程:
create_variable_set- 创建变量集create_variable_in_variable_set- 添加敏感变量list_workspaces- 查找目标工作空间attach_variable_set_to_workspaces- 批量应用
5. CI/CD 集成
在 CI/CD 流水线中集成 MCP,实现智能化的基础设施部署。
示例流程:
1 | # GitHub Actions 示例 |
技术流程:
create_run- 创建 Planget_run_details- 监控状态action_run- Apply(如果启用 ENABLE_TF_OPERATIONS)
6. 文档即代码
通过 AI 助手自动查询和生成 Terraform 文档。
示例对话:
1 | 用户: "AWS Provider 的 EC2 实例资源有哪些参数?" |
技术架构
传输模式
1 | ┌─────────────────┐ ┌──────────────────┐ |
会话模式
有状态模式(Stateful,默认)
1 | 客户端请求 → 会话上下文 → 工具执行 → 状态保持 |
优势:
- 上下文感知
- 减少重复认证
- 性能更好
适用场景:
- 单实例部署
- 开发环境
- 交互式操作
无状态模式(Stateless)
1 | 每个请求独立处理 → 无会话依赖 → 适合负载均衡 |
优势:
- 高可用
- 负载均衡友好
- 水平扩展
适用场景:
- 生产环境
- 分布式部署
- 多副本运行
工具分类架构
1 | Terraform MCP Server |
安全架构
1 | ┌──────────────────────────────────────────┐ |
与其他 MCP 服务器对比
| 特性 | Terraform MCP | AWS MCP | Kubernetes MCP |
|---|---|---|---|
| IaC 支持 | ✅ 原生 Terraform | ❌ 无 | ❌ 无 |
| 工作空间管理 | ✅ 完整 | ❌ 无 | ✅ 命名空间 |
| 注册表集成 | ✅ 公共+私有 | ❌ 无 | ❌ 无 |
| 多云支持 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 策略引擎 | ✅ Sentinel | ✅ IAM | ✅ RBAC |
| 企业集成 | ✅ HCP/TFE | ✅ AWS Organizations | ✅ 多集群 |
| 适用场景 | IaC、多云管理 | AWS 资源管理 | K8s 管理 |
最佳实践
1. 安全配置
1 | # 使用环境变量管理 Token,避免硬编码 |
2. 会话模式选择
1 | # 开发环境:有状态模式(默认) |
3. 速率限制配置
1 | # 根据负载调整速率限制 |
4. 变量管理最佳实践
1 | # 使用变量集管理共享凭据 |
5. 工作空间标签策略
1 | # 使用标签进行工作空间分类和管理 |
6. 监控和日志
1 | # 启用日志文件 |
7. 高可用部署
1 | # Kubernetes 部署示例 |
8. 版本管理
1 | # 固定版本,避免意外升级 |
常见问题
Q: 如何获取 TFE Token?
- 登录 HCP Terraform
- 进入 User Settings → Tokens
- 创建新的 API Token
- 复制 Token 并配置为
TFE_TOKEN环境变量
或使用 CLI:
1 | terraform login |
Q: Registry 工具和 TFE 工具有什么区别?
- Registry 工具:访问 Terraform 公共注册表,无需认证,始终可用
- TFE 工具:访问 HCP Terraform / Terraform Enterprise,需要
TFE_TOKEN
Q: 如何安全地启用破坏性操作?
1 | # 仅在需要时启用 |
Q: Stdio 和 StreamableHTTP 该如何选择?
| 场景 | 推荐模式 | 原因 |
|---|---|---|
| 本地开发 | Stdio | 简单、快速、无需网络配置 |
| CI/CD | Stdio | 直接集成,无需额外服务 |
| 远程访问 | StreamableHTTP | 支持网络访问 |
| 多用户 | StreamableHTTP | 共享服务实例 |
| 企业部署 | StreamableHTTP | 集中管理、负载均衡 |
Q: 如何调试 MCP 连接问题?
1 | # 1. 检查服务器健康状态(StreamableHTTP 模式) |
Q: 性能如何优化?
- 使用有状态模式(开发环境)- 减少重复认证
- 启用速率限制(生产环境)- 防止滥用
- 使用无状态模式 + 负载均衡(高负载)- 水平扩展
- 缓存常用查询(客户端)- 减少 API 调用
- 配置合理的超时(网络)- 避免长时间等待
Q: 支持哪些 Terraform 版本?
服务器本身不执行 Terraform,仅通过 API 与 Terraform Registry 和 HCP Terraform 交互,因此:
- 兼容所有 Terraform 版本
- 创建工作空间时可以指定
terraform_version - 支持查询所有版本的 Provider 和 Module
Q: 如何迁移现有工作空间?
1 | # 使用 MCP 工具实现迁移 |
评分详情
| 维度 | 评分 | 说明 |
|---|---|---|
| 功能性 | 4.8/5.0 | 功能全面,涵盖 IaC 全生命周期 |
| 文档质量 | 4.7/5.0 | 官方文档详细,示例丰富 |
| 社区活跃度 | 4.6/5.0 | HashiCorp 官方维护,更新及时 |
| 维护状态 | 4.9/5.0 | 持续迭代,快速修复问题 |
| 代码质量 | 4.7/5.0 | Go 实现,代码规范,测试完善 |
| 综合评分 | 4.7/5.0 | 顶级的 IaC MCP 实现 |
总结
Terraform MCP Server 是 HashiCorp 官方提供的顶级 Infrastructure as Code MCP 实现。它将 Terraform 生态的强大能力与 AI 助手完美结合,为 DevOps 和 Platform 团队提供了智能化的基础设施管理方案。
推荐指数: ⭐⭐⭐⭐⭐ (5/5)
适合你的情况:
- ✅ 使用 Terraform 进行基础设施管理
- ✅ 需要多云部署能力
- ✅ 使用 HCP Terraform 或 Terraform Enterprise
- ✅ 需要策略合规检查
- ✅ 希望 AI 助手帮助 IaC 开发
- ✅ 需要工作空间自动化管理
不适合的情况:
- ❌ 不使用 Terraform
- ❌ 只需要单一云厂商工具(考虑 AWS MCP、Azure MCP)
- ❌ 不需要 AI 辅助(直接使用 Terraform CLI)
相关资源
- GitHub: https://github.com/hashicorp/terraform-mcp-server
- HashiCorp 官方文档: https://developer.hashicorp.com/terraform/docs/tools/mcp-server
- MCP 协议: https://modelcontextprotocol.io/
- Terraform Registry: https://registry.terraform.io/
- HCP Terraform: https://cloud.hashicorp.com/products/terraform
- Terraform 文档: https://www.terraform.io/docs
更新时间: 2025-10-14
数据来源: GitHub, 质量评分: 4.7/5.0