Development
解析 Terraform plan 的 JSON 或文本输出,对资源变化分类,并在 apply 前展示依赖导向的摘要报告
用三种语言从你的代码中调用此工具。
# 1) Upload each file first → returns { filePath }
curl -X POST 'https://api.elysiatools.com/upload/terraform-plan-visualizer' \
-F 'file=@/path/to/planFile.ext'
# 2) Call the tool with the returned filePath values
curl -X POST 'https://api.elysiatools.com/zh/api/tools/terraform-plan-visualizer' \
-F 'planInput={
"format_version": "1.2",
"resource_changes": [
{
"address": "aws_vpc.main",
"mode": "managed",
"type": "aws_vpc",
"name": "main",
"provider_name": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"change": {
"actions": [
"create"
]
}
},
{
"address": "aws_subnet.app",
"mode": "managed",
"type": "aws_subnet",
"name": "app",
"provider_name": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"change": {
"actions": [
"create"
]
}
},
{
"address": "aws_iam_policy.read",
"mode": "managed",
"type": "aws_iam_policy",
"name": "read",
"provider_name": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"change": {
"actions": [
"update"
]
}
},
{
"address": "aws_security_group.web",
"mode": "managed",
"type": "aws_security_group",
"name": "web",
"provider_name": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"change": {
"actions": [
"delete",
"create"
]
}
}
],
"configuration": {
"root_module": {
"resources": [
{
"address": "aws_vpc.main",
"provider_name": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"depends_on": []
},
{
"address": "aws_subnet.app",
"provider_name": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"depends_on": [
"aws_vpc.main"
]
},
{
"address": "aws_iam_policy.read",
"provider_name": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"depends_on": [
"aws_vpc.main"
]
},
{
"address": "aws_security_group.web",
"provider_name": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"depends_on": [
"aws_vpc.main",
"aws_subnet.app"
]
}
]
}
}
}' \
-F 'planFile=' \
-F 'inputFormat=json' \
-F 'showDependencyGraph=true'以 JSON 形式 POST 提交输入参数。文件类型参数需先单独上传。
POST https://api.elysiatools.com/zh/api/tools/terraform-plan-visualizer| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| planInput | textarea | 否 | — |
| planFile | file需先上传 | 否 | — |
| inputFormat | select | 否 | — |
| showDependencyGraph | checkbox | 否 | — |
HTML 结果
{
"result": "<div>Processed HTML content</div>",
"error": "Error message (optional)",
"message": "Notification message (optional)",
"metadata": {
"key": "value"
}
}将此工具加入你的 Model Context Protocol 服务,让 AI 智能体可以列出并调用它。
将以下内容加入你的 MCP 客户端配置:
{
"mcpServers": {
"elysiatools-terraform-plan-visualizer": {
"name": "terraform-plan-visualizer",
"description": "解析 Terraform plan 的 JSON 或文本输出,对资源变化分类,并在 apply 前展示依赖导向的摘要报告",
"baseUrl": "https://api.elysiatools.com/mcp/sse?toolId=terraform-plan-visualizer",
"command": "",
"args": [],
"env": {},
"isActive": true,
"type": "sse"
}
}
}连接到 SSE 端点后,列出已开放的工具:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}通过工具 id 调用,参数由其参数表构建:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "terraform-plan-visualizer",
"arguments": {
"planInput": "{\n \"format_version\": \"1.2\",\n \"resource_changes\": [\n {\n \"address\": \"aws_vpc.main\",\n \"mode\": \"managed\",\n \"type\": \"aws_vpc\",\n \"name\": \"main\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"change\": {\n \"actions\": [\n \"create\"\n ]\n }\n },\n {\n \"address\": \"aws_subnet.app\",\n \"mode\": \"managed\",\n \"type\": \"aws_subnet\",\n \"name\": \"app\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"change\": {\n \"actions\": [\n \"create\"\n ]\n }\n },\n {\n \"address\": \"aws_iam_policy.read\",\n \"mode\": \"managed\",\n \"type\": \"aws_iam_policy\",\n \"name\": \"read\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"change\": {\n \"actions\": [\n \"update\"\n ]\n }\n },\n {\n \"address\": \"aws_security_group.web\",\n \"mode\": \"managed\",\n \"type\": \"aws_security_group\",\n \"name\": \"web\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"change\": {\n \"actions\": [\n \"delete\",\n \"create\"\n ]\n }\n }\n ],\n \"configuration\": {\n \"root_module\": {\n \"resources\": [\n {\n \"address\": \"aws_vpc.main\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"depends_on\": []\n },\n {\n \"address\": \"aws_subnet.app\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"depends_on\": [\n \"aws_vpc.main\"\n ]\n },\n {\n \"address\": \"aws_iam_policy.read\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"depends_on\": [\n \"aws_vpc.main\"\n ]\n },\n {\n \"address\": \"aws_security_group.web\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"depends_on\": [\n \"aws_vpc.main\",\n \"aws_subnet.app\"\n ]\n }\n ]\n }\n }\n}",
"planFile": "",
"inputFormat": "json",
"showDependencyGraph": true
}
}
}有问题或反馈?请联系 [email protected]