Development
Analisa a saida JSON ou texto do Terraform plan, classifica mudancas e mostra um resumo orientado por dependencias
Chame esta ferramenta a partir do seu código em três idiomas.
# 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/pt/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'Envie uma requisição POST com suas entradas em JSON. Parâmetros do tipo arquivo exigem upload prévio.
POST https://api.elysiatools.com/pt/api/tools/terraform-plan-visualizer| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| planInput | textarea | Não | — |
| planFile | fileupload necessário | Não | — |
| inputFormat | select | Não | — |
| showDependencyGraph | checkbox | Não | — |
Resultado HTML
{
"result": "<div>Processed HTML content</div>",
"error": "Error message (optional)",
"message": "Notification message (optional)",
"metadata": {
"key": "value"
}
}Adicione esta ferramenta ao seu servidor Model Context Protocol para que agentes de IA possam listá-la e chamá-la.
Adicione este bloco à configuração do seu cliente MCP:
{
"mcpServers": {
"elysiatools-terraform-plan-visualizer": {
"name": "terraform-plan-visualizer",
"description": "Analisa a saida JSON ou texto do Terraform plan, classifica mudancas e mostra um resumo orientado por dependencias",
"baseUrl": "https://api.elysiatools.com/mcp/sse?toolId=terraform-plan-visualizer",
"command": "",
"args": [],
"env": {},
"isActive": true,
"type": "sse"
}
}
}Após conectar ao endpoint SSE, liste as ferramentas expostas:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}Invoque a ferramenta pelo seu id; os argumentos são construídos a partir de seus parâmetros:
{
"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
}
}
}Dúvidas ou problemas? Contate [email protected]