# joeltalabi10/azureaiterraformdemo architecture

> Architecture diagram of the GitHub repository joeltalabi10/azureaiterraformdemo, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/joeltalabi10/azureaiterraformdemo
- Repository: https://github.com/joeltalabi10/azureaiterraformdemo

## Overview

This repository is a live-demo kit for applying AI across an Azure Terraform lifecycle: author, review, deploy, and operate. Its main user path is editing Terraform, reviewing a proposed plan with AI, deploying through a human-approved workflow, then querying or managing the scoped environment through ChatOps. The MCP server’s three tools and the Terraform infrastructure are visible in source; the GitHub Actions workflow and Terraform resource details are represented from README documentation, since their source was not sampled.

Main entry points: [`.github/workflows/terraform-ai-pipeline.yml`](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/.github/workflows/terraform-ai-pipeline.yml) (CI Workflow), [`mcp-server/server.js`](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/mcp-server/server.js) (Scoped MCP Server), [`terraform`](https://github.com/joeltalabi10/azureaiterraformdemo/tree/main/terraform) (Terraform Configuration), [`scripts/ai_review.py`](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/scripts/ai_review.py) (AI Plan Review)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authoring["Author and Infrastructure"]
  node_terraform_config["Terraform Configuration"]
  node_azure_app["Azure App Service<br/>[main.tf]"]
  node_azure_sql[("Azure SQL<br/>[main.tf]")]
  node_terraform_cli["Terraform CLI"]
end

subgraph group_delivery["Review and Deploy"]
  node_workflow["CI Workflow"]
  node_terraform_plan["Terraform Plan"]
  node_ai_review["AI Plan Review<br/>[ai_review.py]"]
  node_pr_review["PR Review Comment"]
  node_human_approval["Human Approval"]
  node_terraform_apply["Terraform Apply"]
end

subgraph group_chatops["ChatOps Operations"]
  node_mcp_server["Scoped MCP Server<br/>[server.js]"]
  node_mcp_plan_tool["Plan Tool<br/>[server.js]"]
  node_mcp_apply_tool["Apply Tool<br/>[server.js]"]
  node_azure_query_tool["Azure Query Tool<br/>[server.js]"]
end

subgraph group_external["External Services"]
  node_azure[("Azure")]
  node_deepseek["DeepSeek API"]
  node_github["GitHub Actions and PR"]
end

node_engineer(("Engineer"))
node_mcp_client(("MCP Client"))

node_engineer -->|"edits"| node_terraform_config
node_terraform_config -->|"defines"| node_azure_app
node_terraform_config -->|"defines"| node_azure_sql
node_github -->|"runs"| node_workflow
node_workflow -->|"runs plan"| node_terraform_plan
node_workflow -->|"invokes review"| node_ai_review
node_ai_review -->|"requests review"| node_deepseek
node_ai_review -->|"writes review"| node_pr_review
node_workflow -->|"posts comment"| node_pr_review
node_workflow -->|"requires approval"| node_human_approval
node_human_approval -->|"approves apply"| node_terraform_apply
node_terraform_apply -->|"deploys changes"| node_azure
node_mcp_client -->|"connects via stdio"| node_mcp_server
node_mcp_server -->|"registers"| node_mcp_plan_tool
node_mcp_server -->|"registers"| node_mcp_apply_tool
node_mcp_server -->|"registers"| node_azure_query_tool
node_mcp_plan_tool -->|"executes plan"| node_terraform_cli
node_mcp_apply_tool -->|"executes apply"| node_terraform_cli
node_azure_query_tool -->|"queries resources"| node_azure
node_terraform_cli -->|"uses working directory"| node_terraform_config
node_terraform_cli -.->|"plans or applies"| node_azure

click node_terraform_config "https://github.com/joeltalabi10/azureaiterraformdemo/tree/main/terraform"
click node_azure_app "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/terraform/main.tf"
click node_azure_sql "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/terraform/main.tf"
click node_workflow "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/.github/workflows/terraform-ai-pipeline.yml"
click node_terraform_plan "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/.github/workflows/terraform-ai-pipeline.yml"
click node_ai_review "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/scripts/ai_review.py"
click node_pr_review "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/.github/workflows/terraform-ai-pipeline.yml"
click node_human_approval "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/.github/workflows/terraform-ai-pipeline.yml"
click node_terraform_apply "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/.github/workflows/terraform-ai-pipeline.yml"
click node_mcp_server "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/mcp-server/server.js"
click node_mcp_plan_tool "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/mcp-server/server.js"
click node_mcp_apply_tool "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/mcp-server/server.js"
click node_azure_query_tool "https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/mcp-server/server.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_terraform_config,node_azure_app,node_azure_sql,node_terraform_cli,node_mcp_client toneBlue
class node_workflow,node_terraform_plan,node_ai_review,node_pr_review,node_human_approval,node_terraform_apply toneAmber
class node_mcp_server,node_mcp_plan_tool,node_mcp_apply_tool,node_azure_query_tool toneMint
class node_azure,node_deepseek,node_github toneRose
class node_engineer toneIndigo
```

## Components

### Author and Infrastructure

- [Terraform Configuration](https://github.com/joeltalabi10/azureaiterraformdemo/tree/main/terraform): `terraform`
- [Azure App Service](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/terraform/main.tf): `terraform/main.tf`
- [Azure SQL](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/terraform/main.tf): `terraform/main.tf`
- **Terraform CLI**

### Review and Deploy

- [CI Workflow](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/.github/workflows/terraform-ai-pipeline.yml): `.github/workflows/terraform-ai-pipeline.yml`
- [Terraform Plan](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/.github/workflows/terraform-ai-pipeline.yml): `.github/workflows/terraform-ai-pipeline.yml`
- [AI Plan Review](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/scripts/ai_review.py): `scripts/ai_review.py`
- [PR Review Comment](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/.github/workflows/terraform-ai-pipeline.yml): `.github/workflows/terraform-ai-pipeline.yml`
- [Human Approval](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/.github/workflows/terraform-ai-pipeline.yml): `.github/workflows/terraform-ai-pipeline.yml`
- [Terraform Apply](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/.github/workflows/terraform-ai-pipeline.yml): `.github/workflows/terraform-ai-pipeline.yml`

### ChatOps Operations

- [Scoped MCP Server](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/mcp-server/server.js): `mcp-server/server.js`
- [Plan Tool](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/mcp-server/server.js): `mcp-server/server.js`
- [Apply Tool](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/mcp-server/server.js): `mcp-server/server.js`
- [Azure Query Tool](https://github.com/joeltalabi10/azureaiterraformdemo/blob/main/mcp-server/server.js): `mcp-server/server.js`

### External Services

- **Azure**
- **DeepSeek API**
- **GitHub Actions and PR**

### Other components

- **Engineer**
- **MCP Client**

## Connections

- Engineer → Terraform Configuration: edits (evidence: `README.md`)
- Terraform Configuration → Azure App Service: defines (evidence: `README.md`)
- Terraform Configuration → Azure SQL: defines (evidence: `README.md`)
- GitHub Actions and PR → CI Workflow: runs (evidence: `README.md`)
- CI Workflow → Terraform Plan: runs plan (evidence: `README.md`)
- CI Workflow → AI Plan Review: invokes review (evidence: `README.md`)
- AI Plan Review → DeepSeek API: requests review (evidence: `scripts/ai_review.py`)
- AI Plan Review → PR Review Comment: writes review (evidence: `README.md`)
- CI Workflow → PR Review Comment: posts comment (evidence: `README.md`)
- CI Workflow → Human Approval: requires approval (evidence: `README.md`)
- Human Approval → Terraform Apply: approves apply (evidence: `README.md`)
- Terraform Apply → Azure: deploys changes (evidence: `README.md`)
- MCP Client → Scoped MCP Server: connects via stdio (evidence: `mcp-server/server.js`)
- Scoped MCP Server → Plan Tool: registers (evidence: `mcp-server/server.js`)
- Scoped MCP Server → Apply Tool: registers (evidence: `mcp-server/server.js`)
- Scoped MCP Server → Azure Query Tool: registers (evidence: `mcp-server/server.js`)
- Plan Tool → Terraform CLI: executes plan (evidence: `mcp-server/server.js`)
- Apply Tool → Terraform CLI: executes apply (evidence: `mcp-server/server.js`)
- Azure Query Tool → Azure: queries resources (evidence: `mcp-server/server.js`)
- Terraform CLI → Terraform Configuration: uses working directory
- Terraform CLI → Azure: plans or applies
