# guardianer9-debug/cst-studio-orchestrator-mcp architecture

> Architecture diagram of the GitHub repository guardianer9-debug/cst-studio-orchestrator-mcp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/guardianer9-debug/cst-studio-orchestrator-mcp
- Repository: https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp

## Overview

CST Studio Orchestrator MCP exposes CST modeling and simulation controls to AI clients. The principal workflow is an MCP request to a registered tool, which prepares a CST action or VBA and uses the connection layer for live execution; when CST is unavailable, tools can return scripts for manual execution. Separate tool families cover antenna/RF design, PCB/SI, solver setup, results, optimization, and Design Studio schematics. The README documents these capabilities; only selected tool and client implementations were sampled, so uncertain internal links are omitted.

Main entry points: [`src/mcp_cst_studio/tools`](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/tree/main/src/mcp_cst_studio/tools) (Registered tools), [`src/mcp_cst_studio/cst_client.py`](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/cst_client.py) (CST connection), [`src/mcp_cst_studio/vba_builder.py`](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/vba_builder.py) (VBA generation), [`src/mcp_cst_studio/server.py`](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/server.py) (MCP server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["MCP entry"]
  node_server["MCP server<br/>[server.py]"]
  node_toolset["Registered tools"]
end

subgraph group_design["Design tools"]
  node_antenna["Antenna design"]
  node_geometry["3D modeling<br/>[geometry.py]"]
  node_materials["Materials<br/>[materials.py]"]
  node_matching["RF matching<br/>[matching.py]"]
  node_pcb["PCB and SI<br/>[pcb.py]"]
  node_ports["Ports and boundaries<br/>[ports.py]"]
end

subgraph group_analysis["Simulation analysis"]
  node_mesh["Mesh setup<br/>[mesh.py]"]
  node_solvers["Solver setup<br/>[solvers.py]"]
  node_simulation["Simulation control<br/>[simulation.py]"]
  node_results["Result extraction<br/>[results.py]"]
  node_optimization["Antenna optimization<br/>[optimization.py]"]
  node_project["Project control<br/>[project.py]"]
end

subgraph group_schematic["Schematic workflows"]
  node_schematic_tools["Schematic tools<br/>[schematic.py]"]
end

subgraph group_core["Execution core"]
  node_client["CST connection<br/>[cst_client.py]"]
  node_vba["VBA generation<br/>[vba_builder.py]"]
  node_validation["Input guardrails<br/>[validators.py]"]
  node_dialogs["Dialog watcher<br/>[dialog_handler.py]"]
end

node_agent(("AI client"))
node_cst["CST Studio Suite"]

node_agent -->|"sends requests"| node_server
node_server -->|"registers tools"| node_toolset
node_server -->|"connects"| node_client
node_toolset -->|"dispatches"| node_antenna
node_toolset -->|"dispatches"| node_geometry
node_toolset -->|"dispatches"| node_materials
node_toolset -->|"dispatches"| node_matching
node_toolset -->|"dispatches"| node_pcb
node_toolset -->|"dispatches"| node_ports
node_toolset -->|"dispatches"| node_mesh
node_toolset -->|"dispatches"| node_solvers
node_toolset -->|"dispatches"| node_simulation
node_toolset -->|"dispatches"| node_results
node_toolset -->|"dispatches"| node_optimization
node_toolset -->|"dispatches"| node_project
node_toolset -->|"dispatches"| node_schematic_tools
node_pcb -->|"executes VBA"| node_client
node_results -->|"reads or exports"| node_client
node_optimization -->|"runs solve loop"| node_client
node_client -->|"controls projects"| node_cst
node_client -->|"starts watcher"| node_dialogs
node_antenna -->|"builds scripts"| node_vba
node_materials -->|"builds scripts"| node_vba
node_matching -->|"builds scripts"| node_vba
node_pcb -->|"builds scripts"| node_vba
node_vba -->|"validates input"| node_validation

click node_server "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/server.py"
click node_toolset "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/tree/main/src/mcp_cst_studio/tools"
click node_antenna "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/antenna_templates.py"
click node_geometry "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/geometry.py"
click node_materials "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/materials.py"
click node_matching "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/matching.py"
click node_pcb "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/pcb.py"
click node_ports "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/ports.py"
click node_mesh "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/mesh.py"
click node_solvers "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/solvers.py"
click node_simulation "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/simulation.py"
click node_results "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/results.py"
click node_optimization "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/optimization.py"
click node_project "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/project.py"
click node_schematic_tools "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/schematic.py"
click node_client "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/cst_client.py"
click node_vba "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/vba_builder.py"
click node_validation "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/validators.py"
click node_dialogs "https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/dialog_handler.py"

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_server,node_toolset,node_agent toneBlue
class node_antenna,node_geometry,node_materials,node_matching,node_pcb,node_ports toneAmber
class node_mesh,node_solvers,node_simulation,node_results,node_optimization,node_project toneMint
class node_schematic_tools toneRose
class node_client,node_vba,node_validation,node_dialogs,node_cst toneIndigo
```

## Components

### MCP entry

- [MCP server](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/server.py): `src/mcp_cst_studio/server.py`
- [Registered tools](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/tree/main/src/mcp_cst_studio/tools): `src/mcp_cst_studio/tools`

### Design tools

- [Antenna design](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/antenna_templates.py): `src/mcp_cst_studio/tools/antenna_templates.py`
- [3D modeling](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/geometry.py): `src/mcp_cst_studio/tools/geometry.py`
- [Materials](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/materials.py): `src/mcp_cst_studio/tools/materials.py`
- [RF matching](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/matching.py): `src/mcp_cst_studio/tools/matching.py`
- [PCB and SI](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/pcb.py): `src/mcp_cst_studio/tools/pcb.py`
- [Ports and boundaries](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/ports.py): `src/mcp_cst_studio/tools/ports.py`

### Simulation analysis

- [Mesh setup](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/mesh.py): `src/mcp_cst_studio/tools/mesh.py`
- [Solver setup](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/solvers.py): `src/mcp_cst_studio/tools/solvers.py`
- [Simulation control](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/simulation.py): `src/mcp_cst_studio/tools/simulation.py`
- [Result extraction](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/results.py): `src/mcp_cst_studio/tools/results.py`
- [Antenna optimization](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/optimization.py): `src/mcp_cst_studio/tools/optimization.py`
- [Project control](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/project.py): `src/mcp_cst_studio/tools/project.py`

### Schematic workflows

- [Schematic tools](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/tools/schematic.py): `src/mcp_cst_studio/tools/schematic.py`

### Execution core

- [CST connection](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/cst_client.py): `src/mcp_cst_studio/cst_client.py`
- [VBA generation](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/vba_builder.py): `src/mcp_cst_studio/vba_builder.py`
- [Input guardrails](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/validators.py): `src/mcp_cst_studio/validators.py`
- [Dialog watcher](https://github.com/guardianer9-debug/cst-studio-orchestrator-mcp/blob/main/src/mcp_cst_studio/dialog_handler.py): `src/mcp_cst_studio/dialog_handler.py`

### Other components

- **AI client**
- **CST Studio Suite**

## Connections

- AI client → MCP server: sends requests
- MCP server → Registered tools: registers tools
- MCP server → CST connection: connects
- Registered tools → Antenna design: dispatches
- Registered tools → 3D modeling: dispatches
- Registered tools → Materials: dispatches
- Registered tools → RF matching: dispatches
- Registered tools → PCB and SI: dispatches
- Registered tools → Ports and boundaries: dispatches
- Registered tools → Mesh setup: dispatches
- Registered tools → Solver setup: dispatches
- Registered tools → Simulation control: dispatches
- Registered tools → Result extraction: dispatches
- Registered tools → Antenna optimization: dispatches
- Registered tools → Project control: dispatches
- Registered tools → Schematic tools: dispatches
- PCB and SI → CST connection: executes VBA
- Result extraction → CST connection: reads or exports
- Antenna optimization → CST connection: runs solve loop
- CST connection → CST Studio Suite: controls projects
- CST connection → Dialog watcher: starts watcher
- Antenna design → VBA generation: builds scripts
- Materials → VBA generation: builds scripts
- RF matching → VBA generation: builds scripts
- PCB and SI → VBA generation: builds scripts
- VBA generation → Input guardrails: validates input
