Token导航 LogoToken导航TokenDH.com
Terraform Partner MCP Server logo
运维云端stdio官方级别未说明来源级核验

Terraform Partner MCP Server

MCP Server

Terraform MCP Server是一个集成AWS Security Hub和HCP Terraform的基础设施即代码(IaC)安全管理工具,提供安全发现、自动资源映射和修复功能。

工具数

18

提示词数

0

GitHub Stars

1

资源数

0
基础设施即代码GoClaude自动化运维Claude DesktopClaudeVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

vravind1

提供方

vravind1

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 mcp-full-test.py

详细介绍

Terraform MCP服务器+合作伙伴管理资源

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

此分支使用合作伙伴管理的资源扩展了基础服务器 -通过AWS security Hub集成和HCP Terraform实现人工智能辅助的安全补救。

新增内容:合作伙伴管理的资源

┌─────────────────────────────────────────────────────────────────────────────────┐
│                    PARTNER-MANAGED RESOURCES WORKFLOW                            │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                  │
│  ┌──────────────┐                                      ┌──────────────┐         │
│  │ AWS Security │   Discover    ┌──────────────┐       │ HCP Terraform│         │
│  │     Hub      │──────────────▶│   MCP Server │──────▶│  (CLI-Driven │         │
│  │  (Findings)  │               │              │       │   Workspace) │         │
│  └──────────────┘               │  • Sync      │       └──────┬───────┘         │
│                                 │  • Analyze   │              │                  │
│  ┌──────────────┐               │  • Link      │              ▼                  │
│  │    Claude    │◀─────────────▶│  • Remediate │       ┌──────────────┐         │
│  │   Desktop    │   Converse    │              │       │     AWS      │         │
│  │  or CLI      │               └──────────────┘       │  Resources   │         │
│  └──────────────┘                                      │   (Fixed!)   │         │
│                                                        └──────────────┘         │
└─────────────────────────────────────────────────────────────────────────────────┘

关键能力

  • 安全发现:自动从AWS安全中心提取调查结果
  • 自动ARN→ 地形测绘:发现工作区,解析状态,并将ARN自动链接到Terraform地址
  • 自动修复:通过HCP Terraform生成和应用Terraform修复程序
  • CLI驱动的工作流:适用于CLI驱动的工作区(通过API上载的配置)

自动资源映射的工作原理

当您提供HCP Terraform组织时,系统 自动发现并链接 资源:

sync_recommendations(terraform_org: "my-org")
                    │
                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ 1. DISCOVER WORKSPACES                                                   │
│    Lists all workspaces in your org (via HCP Terraform API)             │
└─────────────────────────────────────────────────────────────────────────┘
                    │
                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ 2. INDEX TERRAFORM STATE                                                 │
│    For each workspace, parses state and extracts cloud resource IDs:    │
│    - ARNs from aws_security_group, aws_instance, aws_s3_bucket, etc.    │
│    - Builds index: ARN → Terraform address                              │
│    Example: "arn:aws:ec2:...:sg-xxx" → "aws_security_group.web"         │
└─────────────────────────────────────────────────────────────────────────┘
                    │
                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ 3. SYNC & AUTO-LINK                                                      │
│    Fetches findings from Security Hub, matches ARNs to Terraform        │
│    Result: Each finding knows its Terraform resource automatically!     │
└─────────────────────────────────────────────────────────────────────────┘

无需手动链接! 只需提供 terraform_org 并且系统处理映射。

支持的资源映射

自动发现系统支持以下AWS到Terraform资源映射:

AWS安全中心类型地形资源类型
AwsEc2Instanceaws_instance
awsEc2安全组aws_security_group
awsEc2卷aws_ebs_volume
AwsEc2Vpcaws_vpc
awsEc2子网aws_subnet
awsEc2网络接口aws_network_interface
AwsS3Bucketaws_s3_bucket
awsIam用户aws_iam_user
AwsIamRoleaws_iam_role
AwsIamPolicyaws_iam_policy
awsIam访问密钥aws_iam_access_key
awsLambda函数aws_lambda_函数
AwsRdsDbInstanceaws_db_instance
AwsRdsDbClusteraws_rds_cluster
AwsKmsKeyaws_kms_key
AwsSecretsManagerSecretaws_secretsmanger_secret
AwsSqsQueueaws_sqs_queue
AwsSnsTopicaws_sns_topic
awsSns订阅aws_sns_topic_subscription
aws_cloudfront_diistribution
AwsElbLoadBalanceraws_elb
AwsElbv2LoadBalanceraws_lb
awsApi网关RestApiaws_api_gateway_rest_api
AwsDynamoDbTableaws_dynamodb_table
awsElasticsearch域名aws_elasticsearch_domain
AwsEksClusteraws_eks_cluster
AwsEcsClusteraws_ecs_cluster
AwsEcsServiceaws_ecs_service

资源如何匹配:系统从Terraform状态中提取云资源ID,并使用ARN将其与安全中心的发现进行匹配。对于每种资源类型,都会检查这些属性(按顺序):

地形资源ID属性(优先级顺序)
aws_instancearn,id
aws_s3_bucketarn、bucket、id
aws_security_grouparn,id
aws_lambda_functionarn,函数名
aws_db_instancearn、id、标识符
aws_iam_rolearn、id、名称
aws_iam_userarn、id、名称
aws_kms_keyarn,key_id,id
aws_lb/aws_albarn,id
aws_autoscaling_grouparn、id、名称
*(其他)*arn,id

CLI驱动与VCS驱动的工作区

此扩展专为 CLI驱动的工作区 哪里:

  • Terraform配置通过HCP Terraform API直接上传
  • 运行是以编程方式触发的(不是通过Git提交)
  • AI助手管理配置生命周期
CLI-Driven Workflow (Supported):
┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│ Download    │───▶│ Generate    │───▶│ Upload New  │───▶│ Create &    │
│ Current     │    │ Fix Code    │    │ Config      │    │ Apply Run   │
│ Config      │    │             │    │ Version     │    │             │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘

VCS-Driven Workflow (Experimental - via GitHub PR):
┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│ Clone       │───▶│ Generate    │───▶│ Create PR   │───▶│ Merge &     │
│ Repository  │    │ Fix Code    │    │ on GitHub   │    │ Auto-Apply  │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘

特性

  • 双重运输支持:具有可配置端点的Stdio和StreamableHTTP传输
  • 地形注册表集成:与提供者、模块和策略的公共Terraform注册表API直接集成
  • HCP平台和平台企业支持:完整的工作区管理、组织/项目列表和私有注册表访问
  • 工作区操作:创建、更新、删除支持变量、标记和运行管理的工作区
  • 合作伙伴管理的资源:安全建议同步、分析和自动修复
安全说明: 在此阶段,MCP服务器仅供本地使用。如果使用StreamableHTTP传输,请始终配置MCP_ALLOWED_ORIGINS环境变量,以限制仅访问受信任的源。
安全说明: 根据查询,MCP服务器可能会向MCP客户端和LLM公开某些Terraform数据。不要将MCP服务器与不受信任的MCP客户端或LLM一起使用。
注意: MCP服务器提供的输出和建议是动态生成的,可能因查询、模型和连接的MCP客户端而异。用户在实施之前应彻底审查所有输出/建议。

快速入门(合作伙伴管理资源)

1.构建服务器

git clone 
cd cc-partner-managed-resources
go build -o terraform-mcp-server ./cmd/terraform-mcp-server

2.配置克劳德桌面

macOS: ~/.config/claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "terraform": {
      "command": "/absolute/path/to/terraform-mcp-server",
      "args": ["--toolsets=partner,terraform"],
      "env": {
        "TFE_TOKEN": "your-hcp-terraform-token",
        "TFE_ADDRESS": "https://app.terraform.io",
        "AWS_ACCESS_KEY_ID": "your-aws-access-key",
        "AWS_SECRET_ACCESS_KEY": "your-aws-secret-key",
        "AWS_REGION": "us-west-2",
        "ENABLE_TF_OPERATIONS": "true"
      }
    }
  }
}

3.与Claude一起使用

User: "Configure AWS Security Hub for us-west-2"
User: "Sync security recommendations"
User: "Show me HIGH severity findings"
User: "Remediate the SSH security group finding"

可用工具集

工具集描述用例
registry公共地形注册表搜索提供者、模块、文档
registry-private私有注册表访问私有模块和提供程序
terraformHCP地形操作工作区管理、运行、状态
partner合作伙伴管理的资源安全建议、补救措施
all所有工具集结合在一起功能齐全
default注册表+地形标准用法

合作伙伴工具集-工具参考

配置工具

工具说明
configure_aws_security_hub将AWS Security Hub设置为推荐源
configure_aws_recommendations设置AWS计算优化器(成本优化)
list_recommendation_sources列出所有已配置的源

发现工具

工具说明
sync_recommendations从配置的源中提取最新发现
list_recommendations使用过滤器进行查询(严重性、类别、状态)
get_recommendation获取特定发现的完整细节

补救工具

工具说明
link_recommendation_resource地图查找到Terraform资源地址
remediate_recommendation生成修复程序并通过HCP Terraform应用
preview_remediation预览更改而不应用
apply_remediation应用以前预览的更改

资源管理工具

工具说明
register_resources在合作伙伴注册表中注册Terraform资源
resolve_resources将ARN解析为Terraform地址
get_resource_state获取资源的当前地形状态
get_drift_status检查基础设施漂移

工具工作流序列

合作伙伴工具遵循特定的工作流程顺序:

1. Configure     →  2. Sync         →  3. Review       →  4. Remediate
   ─────────        ──────────         ────────          ─────────────
   configure_aws_   sync_              list_             remediate_
   security_hub     recommendations    recommendations   recommendation
   (or configure_   (with terraform_   get_              (or preview_ +
   aws_             org for auto-      recommendation    apply_
   recommendations) discovery)                           remediation)

笔记:

  • sync_recommendationsterraform_org 自动发现并链接资源
  • 通过手动链接 link_recommendation_resource 仅在自动发现失败时才需要(例如,无法识别的ARN格式)
  • 使用 preview_remediation 在应用之前查看更改

环境变量

核心变量

变量描述默认值
TFE_ADDRESSHCP地形或TFE地址https://app.terraform.io
TFE_TOKENTerraform Enterprise API令牌(必需)
TFE_SKIP_TLS_VERIFY跳过TLS验证false
ENABLE_TF_OPERATIONS启用地形操作false

合作伙伴变量

变量描述默认值
AWS_ACCESS_KEY_IDAWS访问密钥(合作伙伴需要)
AWS_SECRET_ACCESS_KEYAWS密钥(合作伙伴需要)
AWS_REGIONAWS区域us-west-2
GITHUB_TOKENGitHub令牌(用于VCS工作流)(可选)

传输变量

变量描述默认值
TRANSPORT_MODEstdiostreamable-httpstdio
TRANSPORT_HOSTHTTP服务器主机127.0.0.1
TRANSPORT_PORTHTTP服务器端口8080
MCP_ENDPOINTHTTP端点路径/mcp

测试

E2E测试套件

全面的E2E测试环境可在 test-e2e-remediation/:

cd test-e2e-remediation/scripts

# Configure credentials
cp env.sh.template env.sh
# Edit env.sh with your credentials

# Run MCP CLI test (no Claude Desktop required)
source env.sh
python3 mcp-full-test.py

# Or run the full infrastructure test
./01-setup-workspace.sh
./02-deploy-infrastructure.sh
# ... (see test-e2e-remediation/README.md)

test-e2-mediation/README.md 完整的测试文档,包括:

  • MCP CLI测试(无克劳德桌面)
  • Claude桌面测试,带有逐步提示
  • 验证测试结果

示例:安全补救工作流

┌─────────────────────────────────────────────────────────────────────────────┐
│ Step 1: Configure                                                            │
│ > configure_aws_security_hub(region: "us-west-2", categories: ["security"]) │
│ ✓ Configured AWS Security Hub (us-west-2)                                   │
├─────────────────────────────────────────────────────────────────────────────┤
│ Step 2: Sync with Auto-Discovery                                             │
│ > sync_recommendations(terraform_org: "my-org")  ← Enables auto-linking!    │
│ ✓ Synced 20 findings from AWS Security Hub                                  │
│ ✓ Indexed 5 workspaces with 47 resources                                    │
│ ✓ Auto-linked 3 recommendations to Terraform                                │
├─────────────────────────────────────────────────────────────────────────────┤
│ Step 3: List (already linked!)                                               │
│ > list_recommendations(severity: "high", managed_only: true)                │
│ ✓ [HIGH] EC2.19 - Security group allows SSH from 0.0.0.0/0                  │
│   Resource: sg-096b4ac3e0159bed6                                            │
│   Terraform: aws_security_group.vulnerable  ← Auto-linked!                  │
├─────────────────────────────────────────────────────────────────────────────┤
│ Step 4: Remediate (no manual linking needed!)                                │
│ > remediate_recommendation(rec_id, confirm: true)                           │
│ ✓ Run created: run-wQvXTgsbk9MXQd5r                                         │
│ ✓ Status: applied                                                            │
│ ✓ SSH CIDR changed: 0.0.0.0/0 → 10.0.0.0/8                                  │
└─────────────────────────────────────────────────────────────────────────────┘

项目结构

cc-partner-managed-resources/
├── cmd/terraform-mcp-server/     # Main server binary
├── pkg/
│   ├── partner/                  # Partner package
│   │   ├── recommendation_types.go    # Data structures
│   │   ├── recommendation_source.go   # Source interface
│   │   ├── recommendation_registry.go # Session storage
│   │   ├── code_generator.go          # Terraform fix generation
│   │   └── sources/
│   │       └── aws_security_hub.go    # AWS Security Hub source
│   ├── tools/partner/            # MCP tool implementations
│   ├── toolsets/                 # Toolset definitions
│   └── client/                   # Session and client management
├── test-e2e-remediation/         # E2E test environment
│   ├── terraform/                # Vulnerable test infrastructure
│   ├── scripts/                  # Test scripts (CLI + Claude Desktop)
│   └── docs/                     # Test documentation and results
└── README.md                     # This file

代码生成

基于HCL的修改(当前实施)

修复代码生成器(pkg/partner/code_generator.go)用途 HashiCorp hclwrite 图书馆 正确操作HCL AST:

// Parse HCL content
file, diags := hclwrite.ParseConfig([]byte(content), "main.tf", hcl.InitialPos)

// Find and modify resource blocks
resourceBlock := findResourceBlock(body, "aws_security_group", "vulnerable")

// Find nested blocks with criteria matching (e.g., ingress with from_port=22)
for _, block := range body.Blocks() {
    if block.Type() == "ingress" && blockMatchesCriteria(block, {"from_port": "22"}) {
        block.Body().SetAttributeValue("cidr_blocks", cty.ListVal(...))
    }
}

// Output preserves formatting
return string(file.Bytes())

什么效果好:

  • 正确的HCL AST解析和序列化
  • 嵌套块处理(入口/出口规则、元数据选项、版本配置)
  • 选择性块修改(例如,仅SSH入口,而非HTTPS)
  • 类型感知属性设置(列表、布尔值、字符串、数字)
  • 保留格式和结构
  • 如果HCL解析失败,则回退到字符串替换

支持的修复程序:

检查ID查找已应用修复
EC2.19SSH打开到0.0.0.0/0cidr_blocks = ["10.0.0.0/8"]
EC2.18RDP打开到0.0.0.0/0cidr_blocks = ["10.0.0.0/8"]
EC2.3/EC2.7EBS/EC2未加密encrypted = true
EC2.8不需要IMDSv2http_tokens = "required"
S3.14版本控制已禁用status = "Enabled"
成本实例过大instance_type = "m5.large"

未来改进

  1. 可插拔修复策略

- 将修复模式定义为配置/插件 - 允许每个组织自定义补救规则 - 支持特定于组织的安全策略

  1. 试运行验证

- 跑 terraform validate 上传前生成的代码 - 在创建运行之前捕获语法错误

  1. 其他推荐来源

- AWS Trusted Advisor(需要业务支持计划) - AWS计算优化器(成本优化-部分实施) - 第三方安全平台

未充分利用的功能

这些功能已实现,但可能不常用:

特性工具/参数说明
managed_onlylist_recommendations仅筛选到Terraform管理的资源
force_refreshsync_recommendations强制重新同步,即使最近已同步
preview_onlyremediate_recommendation预览更改而不应用
VCS workflowapply_remediation创建GitHub PR,而不是直接上传

______________________________________________________________________

原始Terraform MCP服务器文档

先决条件

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

命令行选项

# Stdio mode
terraform-mcp-server stdio [--log-file /path/to/log] [--toolsets ] [--tools ]

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

说明

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

安装

与Visual Studio代码一起使用

将以下JSON块添加到VS Code中的用户设置(JSON)文件中。您可以按 Ctrl + Shift + P 和打字 Preferences: Open User Settings (JSON).

{
  "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"
        ]
      }
    }
  }
}

使用Claude Desktop

{
  "mcpServers": {
    "terraform": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "TFE_ADDRESS=",
        "-e", "TFE_TOKEN=",
        "hashicorp/terraform-mcp-server"
      ]
    }
  }
}

使用Claude代码

claude mcp add terraform -s user -t stdio -- docker run -i --rm hashicorp/terraform-mcp-server

从源代码安装

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

在本地构建Docker镜像

git clone https://github.com/hashicorp/terraform-mcp-server.git
cd terraform-mcp-server
make docker-build

# Run in stdio mode
docker run -i --rm terraform-mcp-server:dev

# Run in streamable-http mode
docker run -p 8080:8080 --rm -e TRANSPORT_MODE=streamable-http -e TRANSPORT_HOST=0.0.0.0 terraform-mcp-server:dev

# Filter tools (optional)
docker run -i --rm terraform-mcp-server:dev --toolsets=registry,terraform

可用工具

在此处查看可用工具

工具筛选

控制可用的工具 --toolsets (团体)或 --tools (个人):

# Enable tool groups
terraform-mcp-server --toolsets=registry,terraform,partner

# Enable specific tools only
terraform-mcp-server --tools=search_providers,get_provider_details,list_workspaces

运输支持

1.标准运输(默认)

使用JSON-RPC消息的标准输入/输出通信。非常适合当地发展。

2.可流式HTTP传输

现代基于HTTP的传输支持直接HTTP请求和服务器发送事件(SSE)流。

  • 端点: http://{hostname}:8080/mcp
  • 健康检查: http://{hostname}:8080/health

发展

先决条件

  • 去(检查 go.mod 特定版本的文件)
  • Docker(可选,用于容器构建)

可用的生成命令

命令描述
make build构建二进制文件
make test运行所有测试
make test-e2e运行端到端测试
make docker-build构建Docker镜像
make run-http在本地运行HTTP服务器
make clean删除构建工件

许可证

此项目根据MPL-2.0开源许可证的条款获得许可。请参考 许可证 提交完整条款的文件。

支持

有关错误报告和功能请求,请在GitHub上打开问题。

目录标签

目录标签

基础设施即代码GoClaude自动化运维本地部署安全修复AWS集成Terraform

支持客户端

Claude DesktopClaudeVS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

18

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP