Skip to main content
Glama
ismailakdag

cst-studio-mcp

by ismailakdag
README.md
# cst-studio-mcp

**Python-first MCP server for CST Studio Suite (2024–2026)**

Drive CST from an AI assistant: open projects, build geometry, set materials and ports,
run solvers, read S-parameters and farfield metrics, and generate design reports — through
structured MCP tools on your Windows machine.

| | |
|--|--|
| **Package** | `cst-studio-mcp` · entry point `cst-studio-mcp` |
| **Tools** | 180 (workflows, geometry, antennas, solvers, results, PCB, …) |
| **Python** | 3.10+ (3.12 recommended) |
| **OS** | Windows 10/11 + licensed CST Studio Suite |
| **Docs** | Interactive EN/TR browser: [`docs/index.html`](docs/index.html) |

Project presentation: [`presentation/index.html`](presentation/index.html), a self-contained
Turkish architecture and validation overview. See [the reliability review](docs/RELIABILITY_REVIEW.md)
for the tested scope and remaining live-CST checks.

```
Agent (Cursor / Claude / …)
        │  MCP stdio
        ▼
   cst-studio-mcp server
        │
        ├─ Python API   connect · project · solve · results (cst.interface / cst.results)
        └─ History VBA  geometry · materials · ports · monitors (model3d.add_to_history)
                │
                ▼
        CST Studio Suite (local install + license)
```

---

## Table of contents

1. [What you get](#what-you-get)
2. [Requirements](#requirements)
3. [Installation](#installation)
4. [Environment variables](#environment-variables)
5. [MCP client setup](#mcp-client-setup)
6. [Verify the install](#verify-the-install)
7. [Quick start (agents)](#quick-start-agents)
8. [Farfield & results notes](#farfield--results-notes)
9. [Architecture](#architecture)
10. [Documentation site](#documentation-site)
11. [Development & tests](#development--tests)
12. [Troubleshooting](#troubleshooting)
13. [License](#license)
14. [Full tool catalog](#full-tool-catalog-180-tools)

---

## What you get

- **Full tool surface** — project control, geometry, booleans, transforms, materials, ports,
  boundaries, mesh, solvers, simulation control, results, import/export, parameters,
  optimization helpers, antenna templates, arrays, PCB/SI, matching networks, VBA escape hatch.
- **Workflow helpers** — one-shot patch antenna, solve + S11, design report, structure views,
  farfield discovery/metrics.
- **Portable paths** — auto-detects CST on any drive letter; prefers `AMD64\python_cst_libraries`
  (CST 2024–2026). No hard-coded `E:\` in library code.
- **Bilingual docs** — English / Türkçe tool browser with light/dark theme.
- **Offline fallback** — if CST is unreachable, many tools still return VBA for manual paste.

---

## Requirements

| Component | Notes |
|-----------|--------|
| **Windows** | 10 or 11 (64-bit) |
| **CST Studio Suite** | 2024 or newer; **2026** recommended and tested |
| **CST license** | Valid license for the solver you use |
| **Python** | **3.10 – 3.13** (3.12 works well with CST’s bundled `cp312` libs) |
| **Disk** | CST install + project work directory (simulations can be large) |

CST Python libraries ship with the product, typically:

```text
<CST_ROOT>\AMD64\python_cst_libraries
```

Examples:

- `C:\Program Files\CST Studio Suite 2026\AMD64\python_cst_libraries`
- `E:\CST Studio Suite 2026\AMD64\python_cst_libraries`

---

## Installation

### 1. Clone the repository

```powershell
git clone https://github.com/ismailakdag/cst-studio-mcp.git
cd cst-studio-mcp
```

### 2. Create a virtual environment and install (recommended)

In **PowerShell**, from the repo root (the folder that contains `pyproject.toml`):

```powershell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -U pip
pip install -e ".[dev]"
```

This installs:

- Runtime dependencies: `mcp>=1.29,<3`, `anyio>=4.5`, and `jsonschema>=4.20`
- Console script: **`cst-studio-mcp`** (also at `.\.venv\Scripts\cst-studio-mcp.exe`)
- Dev extras: `pytest`, `pytest-asyncio`, `ruff`

> Tip: open [`docs/index.html`](docs/index.html) — the **Setup** section has **Copy** buttons for every PowerShell block, and a form that fills **CST_PATH / PYTHONPATH / MCP JSON** from the path you type.

### 3. Point Python / MCP at your CST install

You must tell the process where CST lives. Typical roots:

- `C:\Program Files\CST Studio Suite 2026`
- `E:\CST Studio Suite 2026`

**Not** the `AMD64` folder itself — one level above. `PYTHONPATH` then points at:

`%CST_PATH%\AMD64\python_cst_libraries`

#### Session-only (current PowerShell window)

Replace the path with yours, then paste:

```powershell
$env:CST_PATH = "C:\Program Files\CST Studio Suite 2026"
$env:PYTHONPATH = "$env:CST_PATH\AMD64\python_cst_libraries"
$env:CST_WORK_DIR = "C:\cst_projects"
$env:CST_VERSION = "2026"
New-Item -ItemType Directory -Force -Path $env:CST_WORK_DIR | Out-Null
```

#### Permanent (optional, Windows user env)

```powershell
[Environment]::SetEnvironmentVariable("CST_PATH", "C:\Program Files\CST Studio Suite 2026", "User")
[Environment]::SetEnvironmentVariable("PYTHONPATH", "C:\Program Files\CST Studio Suite 2026\AMD64\python_cst_libraries", "User")
[Environment]::SetEnvironmentVariable("CST_WORK_DIR", "C:\cst_projects", "User")
```

For **Cursor / Claude / other MCP clients**, prefer putting the same keys in the server **`env`** block (next section) — that is what the AI process actually sees.

---

## Environment variables

Nothing in the library hard-codes a drive letter. Discovery order:

1. If **`CST_PATH`** is set → use it
2. Else scan **all drive letters** for `CST Studio Suite {CST_VERSION}`
3. Resolve `AMD64\python_cst_libraries` (fallback `LinuxAMD64\...` on dual layouts)

| Variable | Required | Meaning | Example |
|----------|----------|---------|---------|
| `CST_PATH` | Recommended | CST install root | `C:\Program Files\CST Studio Suite 2026` |
| `PYTHONPATH` | **Strongly recommended** | Official CST Python package path | `…\AMD64\python_cst_libraries` |
| `CST_WORK_DIR` | Optional | Projects, exports, reports | `%USERPROFILE%\cst_projects` |
| `CST_VERSION` | Optional | Year for auto-detect (default `2026`) | `2026` |
| `CST_QUIET` | Legacy | Accepted for compatibility; connecting no longer changes the user's CST UI mode | `1` |
| `CST_CONNECT_MODE` | Optional | Startup behavior: `auto`, `manual`, or `disabled` (default `manual`) | `manual` |
| `CST_LOG_LEVEL` | Optional | Logging level | `INFO` |

`auto` attaches to a running Design Environment or starts one when the MCP process starts.
Use `disabled` for catalog inspection, client setup checks, and offline VBA generation: it does
not import the CST Python package or connect to CST. `manual` skips the startup connection while
leaving CST available to the explicit `cst_connect` tool and connection workflows. It is the default, so adding an MCP server never implicitly launches CST. `cst_disconnect` detaches the MCP session; it does not close the application or its projects.

Template file: **[`.mcp.example.json`](.mcp.example.json)**  
Local machine paths: **`.mcp.json`** (edit paths only; keep out of shared commits if needed).

---

## MCP client setup

### Claude Desktop / Cursor JSON config

```json
{
  "mcpServers": {
    "cst-studio": {
      "command": "cst-studio-mcp",
      "args": [],
      "env": {
        "CST_PATH": "C:\\Program Files\\CST Studio Suite 2026",
        "CST_WORK_DIR": "C:\\cst_projects",
        "CST_VERSION": "2026",
        "CST_CONNECT_MODE": "manual",
        "PYTHONPATH": "C:\\Program Files\\CST Studio Suite 2026\\AMD64\\python_cst_libraries",
        "CST_LOG_LEVEL": "INFO"
      }
    }
  }
}
```

If `cst-studio-mcp` is not on `PATH` (for example a venv), use the full executable:

```json
"command": "C:\\path\\to\\cst-studio-mcp\\.venv\\Scripts\\cst-studio-mcp.exe"
```

Or:

```json
"command": "python",
"args": ["-m", "cst_mcp.server"]
```

(with `PYTHONPATH` including CST libs).

### Codex

Add the server to your Codex `config.toml`. Literal single-quoted TOML strings keep Windows
backslashes intact; replace the example paths with your local installation paths.

```toml
[mcp_servers.cst-studio]
command = 'C:\path\to\cst-studio-mcp\.venv\Scripts\cst-studio-mcp.exe'
args = []

[mcp_servers.cst-studio.env]
CST_PATH = 'C:\Program Files\CST Studio Suite 2026'
CST_WORK_DIR = 'C:\cst_projects'
CST_VERSION = '2026'
CST_CONNECT_MODE = 'manual'
PYTHONPATH = 'C:\Program Files\CST Studio Suite 2026\AMD64\python_cst_libraries'
```

Reload the MCP configuration, confirm the `cst-studio` tools are available, and call
`cst_connect` only when you are ready to attach to CST. See the
[official Codex MCP documentation](https://learn.chatgpt.com/docs/extend/mcp) for current
configuration locations and controls.

### Cursor

1. Open **Cursor Settings → MCP** (or project MCP JSON / root `.mcp.json`, depending on Cursor version).
2. Add the `cst` server block with **your** `CST_PATH` and `PYTHONPATH`.
3. Restart MCP / reload the window.
4. Confirm ~170+ tools under server `cst`.

After code changes, **restart the MCP server process** so Python reloads the package.

### Claude Desktop

Edit the Claude Desktop config JSON (Windows typically under `%APPDATA%\Claude\`) and add the same `mcpServers.cst-studio` block. Fully quit and restart Claude Desktop.

### Claude Code / CLI

Add the server via your usual MCP config (project or user), same `command` + `env`. Restart the session after edits.

### Other MCP hosts

Any client that supports MCP **stdio** servers can use `cst-studio-mcp` with the same environment variables.

The process uses newline-delimited JSON-RPC on stdout. Logs and diagnostics are written to stderr,
so clients must keep stdout reserved for MCP messages. For a first client-side check, set
`CST_CONNECT_MODE` to `disabled`, restart the MCP process, and verify that initialize, `tools/list`,
and `cst_connection_status` succeed. Change it to `auto` only when the client configuration points
to the intended CST installation.

MCP clients use two common configuration envelopes. Clients such as Claude Desktop and Cursor use
the `mcpServers` object shown above. Clients whose schema uses a `servers` object generally need the
same process definition in this shape:

```json
{
  "servers": {
    "cst-studio": {
      "type": "stdio",
      "command": "C:\\path\\to\\.venv\\Scripts\\cst-studio-mcp.exe",
      "args": [],
      "env": {
        "CST_PATH": "C:\\Program Files\\CST Studio Suite 2026",
        "CST_WORK_DIR": "C:\\cst_projects",
        "CST_CONNECT_MODE": "manual"
      }
    }
  }
}
```

Use the field names required by the client, but keep `command`, `args`, and `env` unchanged. Prefer
the absolute console-script path on Windows; it avoids differences in each client's `PATH`.

---

## Verify the install

```powershell
# 1) Package entry point exists
Get-Command cst-studio-mcp

# 2) CST Python libs importable
python -c "import cst.interface; print('CST interface OK')"

# 3) Config auto-detect
python -c "from cst_mcp.config import CSTConfig; c=CSTConfig.from_env(); print(c.cst_path); print(c.python_lib_path); print('available', c.cst_available)"

# 4) Offline unit tests (no live solve required)
$env:PYTEST_DISABLE_PLUGIN_AUTOLOAD = "1"
python -m pytest tests/ -q
```

From an MCP client, call:

1. `cst_connect` — explicitly attach to CST when ready (or opt into `CST_CONNECT_MODE=auto`); then `cst_connection_status` reports the session. With `disabled`, the server remains offline.
2. Prefer workflows for smoke tests (see below)

---

## Quick start (agents)

Recommended order for a first successful run:

| Step | Tool | Purpose |
|------|------|---------|
| 1 | `cst_connection_status` | Confirm connected mode |
| 2 | `cst_workflow_patch_antenna` | Parametric microstrip patch (substrate, ground, feed, WG port, farfield monitor) |
| 3 | `cst_workflow_simulate_and_report` **or** `cst_run_simulation` | Solve |
| 4 | `cst_get_s_parameters` / `cst_get_farfield_metrics` | S11 + antenna metrics |
| 5 | `cst_workflow_design_report` | Package: params, S-params, farfield, views |

Other useful entry points:

- `cst_antenna_patch` — template builder (similar geometry stack)
- `cst_design_patch_only` — offline dimension calculator (no CST)
- `cst_export_structure_views` — multi-view structure images
- `cst_discover_farfield_monitors` — find farfield results on disk

**Parametric tip:** dimensions should live in the CST Parameter List and geometry history
should use **expressions** (for example `patch_L/2`). Then parameter change → delete results →
rebuild → solve updates the model without rewriting history by hand.

---

## Farfield & results notes

These details matter for reliable automation on CST 2026:

| Topic | Guidance |
|-------|----------|
| **Monitor VBA** | Official `Monitor` API: `.Frequency`, `FieldType "Farfield"`, frequency domain. Prefer `EnableNearfieldCalculation "True"`. |
| **Tree path** | After TD solve: `Farfields\farfield (f=2.4) [1]` (port excitation suffix `[1]`). |
| **Metrics API** | Prefer `FarfieldPlot.Plot` then **`GetMax` / `GetRadiationEfficiency`**. Do not rely on `ASCIIExportSummary` (often fails with export/HEX mesh errors and Message spam). |
| **MCP tool** | `cst_get_farfield_metrics` — 1D Results (S11, efficiencies) + GetMax when the tree item is available. |
| **1D Results** | `cst.results.ProjectFile` is reliable for S-parameters and efficiencies when the `.cst` path is known. |

---

## Architecture

```
src/cst_mcp/
  server.py          MCP entry (stdio)
  config.py          Multi-drive CST discovery
  session.py         Design Environment / project / solve / export / farfield metrics
  cst_client.py      Public client façade used by tools
  tools/             One module per category (workflows, geometry, …)
  execution/         VBA helpers, port VBA, farfield, results_api, CSV readers
  domain/            Pure design math (e.g. patch sizing)
  data/              Material / template JSON
```

| Layer | Role |
|-------|------|
| **MCP tools** | Schemas + handlers; agent-facing |
| **CSTClient / Session** | Connection lifecycle, history VBA, Python solver/results |
| **execution/** | Portable VBA snippets (ports, farfield metrics dump) |
| **CST product** | Mesh, TD/FD solvers, result tree |

Reference / upstream history (not required at runtime): `_reference/`.  
Official VBA object dump for alignment: `vba_cst/`.

---

## Documentation site

| Path | Content |
|------|---------|
| [`docs/index.html`](docs/index.html) | **Interactive** EN/TR tool browser, light/dark, search, copy full tool text, install guide |
| [`docs/TOOLS.md`](docs/TOOLS.md) | Markdown catalog |
| [`docs/tools.json`](docs/tools.json) | Machine-readable schemas |
| [`docs/VBA_ALIGNMENT.md`](docs/VBA_ALIGNMENT.md) | VBA fixes vs CST Online Help dump |
| [`docs/README.md`](docs/README.md) | How to open/rebuild docs |

```powershell
# Open UI
start docs\index.html

# Or local server
python -m http.server 8080 --directory docs

# Rebuild HTML + JSON + Markdown + README catalog from live tools
python scripts/build_docs.py
```

---

## Development & tests

```powershell
pip install -e ".[dev]"
$env:PYTEST_DISABLE_PLUGIN_AUTOLOAD = "1"   # avoid broken global pytest plugins
python -m pytest tests/ -v
python scripts/build_docs.py
ruff check src tests
```

Optional live CST scripts under `scripts/` (require license). Prefer unit tests for offline checks.

---

## Troubleshooting

| Symptom | What to try |
|---------|-------------|
| `import cst` / `cst.interface` fails | Set `PYTHONPATH` to `…\AMD64\python_cst_libraries` (not only install root). |
| MCP shows few tools / old behavior | Restart the MCP server process after `pip install -e .` or code edits. |
| `mode=offline` | Set `CST_PATH` + `PYTHONPATH`. Confirm license. Start Design Environment once. |
| Port “floating” in air | Free port plane with `PortOnBound False` flush to feed edge (workflow port helper). |
| Farfield Message spam / “No HEX mesh” | Avoid `ASCIIExportSummary` spam. Use `cst_get_farfield_metrics`. Create monitor before solve. |
| SelectTreeItem fails for farfield | Full path `Farfields\farfield (f=<freq>) [1]`. |
| Parameter List empty / rebuild no shape change | History must use **parameter expressions**, not only bare numbers. |
| Dialogs block automation | `CST_QUIET=1`; diagnostics / dismiss-dialog tools. |
| pytest plugin import errors | `PYTEST_DISABLE_PLUGIN_AUTOLOAD=1`. |

---

## License

MIT

---


<!-- TOOL_CATALOG_START -->
## Full tool catalog (180 tools)

Interactive bilingual docs: open [`docs/index.html`](docs/index.html) (EN/TR toggle, search, full-width cards). Rebuild: `python scripts/build_docs.py`.

VBA for geometry/ports/transforms is cross-checked against the CST help dump in [`vba_cst/`](vba_cst/).

### Explicit connection (2)

Attach to CST explicitly; disconnect without closing user projects.

| Tool | What it does |
|------|--------------|
| `cst_connect` | Explicitly attach to a running CST Design Environment or start one. Disabled mode never connects. |
| `cst_disconnect` | Detach this MCP session without closing CST, projects, or a running solver. |

### Workflows (start here) (8)

One-shot helpers for common tasks. New users should start here.

| Tool | What it does |
|------|--------------|
| `cst_workflow_patch_antenna` | END-TO-END / Uçtan uca: size a rectangular microstrip patch, build substrate/ground/patch/feed, frequency, open BCs, waveguide port, farf… |
| `cst_workflow_run_and_s11` | Run solver and return structured S11/Sij with metrics (min dB, bandwidth). Solver çalıştırır ve S parametrelerini metriklerle döner. |
| `cst_design_patch_only` | Calculate microstrip patch dimensions only (offline, no CST). Sadece boyut hesabı — CST gerekmez. |
| `cst_export_structure_views` | Export structure screenshots (perspective/xy/xz/yz) via Plot.ExportImage. Yapı görünüm görsellerini dışa aktarır. Connected mode required. |
| `cst_workflow_design_report` | ONE-SHOT design package after modeling/simulation: project status, parameters/dimensions, S-parameters (+metrics), best-effort farfield e… |
| `cst_workflow_simulate_and_report` | Run the solver, then immediately build a design report (S-params + views + optional farfield). Simülasyonu çalıştırıp rapor paketini üretir. |
| `cst_discover_farfield_monitors` | Discover farfield monitors from the project Result folder and tree-path heuristics. Uzak alan monitörlerini disk + path sezgisiyle listeler. |
| `cst_get_farfield_metrics` | Read antenna metrics after a solve: S11 + radiation/total efficiency from 1D Results, plus max realized gain via official FarfieldPlot.Ge… |

### Project & connection (8)

Create, open, save projects and check CST connection.

| Tool | What it does |
|------|--------------|
| `cst_create_project` | Create a new CST Studio Suite project file. In connected mode the project is created directly; in offline mode a VBA script is returned f… |
| `cst_open_project` | Open an existing CST Studio Suite project. In connected mode the project is opened in the running instance; in offline mode a reference i… |
| `cst_save_project` | Save the currently open CST project. Optionally provide a new path to 'Save As'. |
| `cst_close_project` | Close the currently open CST project and release its resources. |
| `cst_project_info` | Get information about the currently open CST project, including connection mode, project path, and status. |
| `cst_project_tree` | List items in the CST project navigation tree. Optionally specify a subtree path such as 'Components', 'Materials', 'Ports', 'Monitors', … |
| `cst_export_project` | Export the current CST project or its geometry to another format such as STL, STEP, IGES, SAT, OBJ, or NASTRAN. |
| `cst_connection_status` | Get the current CST Studio connection status, including mode (connected/offline), CST availability, version, and work directory. |

### Geometry (13)

3D shapes: bricks, cylinders, spheres, extrusions, wires…

| Tool | What it does |
|------|--------------|
| `cst_create_brick` | Create a rectangular brick (box) in CST Studio. |
| `cst_create_cylinder` | Create a cylinder in CST Studio. Use inner_radius=0 for a solid cylinder. |
| `cst_create_cone` | Create a cone or truncated cone in CST Studio. |
| `cst_create_sphere` | Create a sphere in CST Studio. |
| `cst_create_torus` | Create a torus in CST Studio. |
| `cst_create_extrude` | Extrude a 2D polygon profile into a 3D solid in CST Studio. |
| `cst_create_loft` | Create a lofted solid between two or more 2D profiles in CST Studio. |
| `cst_create_wire` | Create a bondwire / wire between two points in CST Studio. |
| `cst_create_polygon3d` | Create a 3D polygon curve in CST Studio. |
| `cst_create_analytical_curve` | Create a parametric analytical curve in CST Studio using expressions of parameter t. |
| `cst_create_face_from_curves` | Create a planar face from one or more closed curves in CST Studio. |
| `cst_create_ecylinder` | Create an elliptical cylinder in CST Studio. |
| `cst_create_polygon_extrude` | Create a polygon and extrude it along an axis in CST Studio. Convenience tool combining polygon profile creation and extrusion. |

### Boolean operations (4)

Combine solids: add, subtract, intersect, insert.

| Tool | What it does |
|------|--------------|
| `cst_boolean_add` | Unite/add two solids together. The result replaces solid1 with the combined volume of both shapes. |
| `cst_boolean_subtract` | Subtract solid2 from solid1. The overlapping volume of solid2 is removed from solid1. Solid2 is deleted. |
| `cst_boolean_intersect` | Intersect two solids. Only the overlapping volume is kept, replacing solid1. Solid2 is deleted. |
| `cst_boolean_insert` | Insert solid2 into solid1. Solid2 is embedded within solid1, maintaining both material regions at the overlap. |

### Transforms (4)

Move, rotate, mirror, and scale solids.

| Tool | What it does |
|------|--------------|
| `cst_transform_translate` | Translate (move) a solid by a displacement vector (dx, dy, dz). Optionally create a translated copy. |
| `cst_transform_rotate` | Rotate a solid by a given angle around an axis (x, y, or z). An optional center point can be specified. |
| `cst_transform_mirror` | Mirror a solid across a plane (xy, xz, or yz). An optional center point can be specified. |
| `cst_transform_scale` | Scale a solid by independent factors along each axis. An optional center point can be specified. |

### Materials (15)

Metals, dielectrics, and advanced material models.

| Tool | What it does |
|------|--------------|
| `cst_create_material` | Create a new material with electromagnetic properties in CST Studio. Specify relative permittivity (epsilon), relative permeability (mu),… |
| `cst_create_lossy_metal` | Create a lossy metal material in CST Studio. Lossy metals model finite conductivity skin-effect losses, essential for accurate loss calcu… |
| `cst_create_anisotropic_material` | Create an anisotropic material with per-axis permittivity, permeability, and loss tangent values. Used for crystals, metamaterials, and c… |
| `cst_load_material` | Load a material from the CST material library by its library name. The material is added to the project under the given name. |
| `cst_list_materials` | List available materials from the bundled material database. Optionally filter by category: 'metals', 'dielectrics', or 'substrates'. Ret… |
| `cst_assign_material` | Assign a material to an existing solid in CST Studio. The solid is specified as 'Component:SolidName'. |
| `cst_get_material_info` | Get electromagnetic properties of a material from the bundled database. Returns epsilon_r, mu_r, conductivity, loss tangent, and usage no… |
| `cst_delete_material` | Delete a material from the current CST project. |
| `cst_create_debye_material` | Create a frequency-dependent dielectric material using the Debye relaxation model. Models polar dielectrics where permittivity decreases … |
| `cst_create_lorentz_material` | Create a Lorentz oscillator dispersive material. Models resonant dielectric behaviour near absorption bands: eps(w) = eps_inf + delta_eps… |
| `cst_create_drude_material` | Create a Drude metal model material for plasmonic and metamaterial simulations. Models free-electron metals: eps(w) = 1 - wp^2 / (w^2 + j… |
| `cst_create_ferrite_material` | Create a ferrite material with gyrotropic permeability tensor (Polder model). Essential for circulators, isolators, and phase shifters. T… |
| `cst_create_temperature_dependent_material` | Create a material with temperature-dependent electromagnetic properties. Specify base properties and temperature coefficients for thermal… |
| `cst_create_cole_cole_material` | Create a Cole-Cole dispersive material. Generalisation of the Debye model with a distribution parameter alpha (0-1) that broadens the rel… |
| `cst_list_ferrite_materials` | List available ferrite materials from the bundled database. Returns name, permittivity, saturation magnetisation, linewidth, loss tangent… |

### Ports & excitations (8)

Waveguide, discrete, plane wave, Floquet…

| Tool | What it does |
|------|--------------|
| `cst_add_waveguide_port` | Add a waveguide port for S-parameter excitation. Defines a port face on the boundary of the simulation domain for guided-wave excitation.… |
| `cst_add_discrete_port` | Add a discrete (lumped) port between two points. Used for circuit-level excitation with a defined impedance. |
| `cst_add_lumped_element` | Add a lumped R, L, C, or RLC element between two points. Value is in ohms for R, henries for L, farads for C. |
| `cst_add_plane_wave` | Add a plane wave excitation source. Defines an incident plane wave with given direction and polarization for scattering / RCS analysis. |
| `cst_add_floquet_port` | Add a Floquet port for periodic structures such as frequency selective surfaces, metamaterials, and phased arrays. |
| `cst_list_ports` | List all ports defined in the current CST project. Returns VBA to query port information, or a description in offline mode. |
| `cst_delete_port` | Delete a port by its port number. |
| `cst_add_multipin_port` | Add a waveguide port with multiple mode monitoring for higher-order mode analysis. Used for multimode waveguides, mode converters, and st… |

### Boundaries & setup (6)

Open/electric walls, background, symmetry, frequency range.

| Tool | What it does |
|------|--------------|
| `cst_set_boundary` | Set boundary conditions for the simulation domain. Each face of the bounding box can be assigned an independent boundary type (open, elec… |
| `cst_set_background` | Set the background material properties of the simulation domain. The background fills all space not occupied by defined solids. |
| `cst_set_symmetry` | Set symmetry planes to reduce computation time. Each axis can be assigned electric or magnetic symmetry, or none. Requires the model geom… |
| `cst_set_frequency_range` | Set the simulation frequency range in GHz. This determines the bandwidth over which the solver computes results. |
| `cst_set_periodic_boundary` | Configure periodic boundary conditions with optional phase shift for unit cell simulation. Sets X and Y boundaries to periodic and config… |
| `cst_set_floquet_port_advanced` | Configure advanced Floquet port settings for periodic structures. Controls the number of Floquet modes and scan angle for phased array el… |

### Mesh (8)

Mesh type, density, refinement, adaptive meshing.

| Tool | What it does |
|------|--------------|
| `cst_set_mesh_type` | Set the mesh type for the simulation. Hexahedral is used for time-domain, Tetrahedral for frequency-domain, Surface for integral-equation… |
| `cst_set_mesh_density` | Set global mesh density parameters controlling automatic mesh generation. Higher cells_per_wavelength gives finer mesh and better accurac… |
| `cst_add_mesh_refinement` | Add local mesh refinement to a specific solid. This creates finer mesh around critical geometry features like feed points, gaps, or thin … |
| `cst_set_adaptive_mesh` | Configure adaptive mesh refinement. When enabled, the solver runs multiple passes, refining the mesh in regions of high field gradient un… |
| `cst_get_mesh_info` | Get current mesh statistics and settings. In connected mode this queries the live mesh data; in offline mode it returns the VBA to retrie… |
| `cst_get_mesh_quality` | Extract mesh quality metrics including total cells, aspect ratios, and cells per wavelength. In connected mode this queries actual mesh s… |
| `cst_set_pml_properties` | Configure PML (Perfectly Matched Layer) absorbing boundary properties. Controls the number of absorbing layers and the target reflection … |
| `cst_add_fixpoint_mesh` | Add a fixed mesh point at specific coordinates for precise field sampling. Ensures the mesh contains a node exactly at the specified loca… |

### Solvers (8)

Time domain, frequency domain, eigenmode, IE…

| Tool | What it does |
|------|--------------|
| `cst_configure_time_domain_solver` | Configure the time domain (transient) solver. This is CST's flagship solver for broadband simulations — it excites the structure with a p… |
| `cst_configure_frequency_domain_solver` | Configure the frequency domain solver. Best for narrowband problems, resonant structures, and when field distributions at specific freque… |
| `cst_configure_eigenmode_solver` | Configure the eigenmode solver. Computes resonant frequencies and field distributions of cavity structures. Used for filter design, reson… |
| `cst_configure_integral_equation_solver` | Configure the integral equation (IE) solver. Best for electrically large, open-boundary problems like antenna placement on vehicles, RCS … |
| `cst_get_solver_info` | Get current solver configuration and status. In connected mode this queries the active solver settings; in offline mode it describes expe… |
| `cst_configure_eigenmode_advanced` | Advanced eigenmode solver configuration for higher-order modes. Use this for waveguide mode analysis, cavity resonator design, and filter… |
| `cst_configure_ie_solver_advanced` | Advanced Integral Equation solver configuration for electrically large structures. Provides control over preconditioner, MLFMM accelerati… |
| `cst_configure_multilayer_solver` | Configure the solver for planar multilayer structures. Optimised for antenna-on-PCB, frequency selective surfaces (FSS), and radome analy… |

### Simulation control (6)

Run, pause, resume, stop simulations.

| Tool | What it does |
|------|--------------|
| `cst_run_simulation` | Start a CST simulation with the current solver settings. This is a blocking call that waits for the simulation to complete. Use cst_run_s… |
| `cst_run_simulation_async` | Start a CST simulation asynchronously (non-blocking). The simulation launches and control returns immediately. Use cst_get_simulation_sta… |
| `cst_get_simulation_status` | Read whether a CST simulation is running and return any solver-run metadata exposed by the CST Python API. This does not show a dialog or… |
| `cst_pause_simulation` | Pause a currently running CST simulation. The simulation can be resumed later with cst_resume_simulation. |
| `cst_resume_simulation` | Resume a previously paused CST simulation. Use after cst_pause_simulation to continue from where it stopped. |
| `cst_stop_simulation` | Stop and abort a running CST simulation. Unlike pause, a stopped simulation cannot be resumed — it must be restarted from the beginning. |

### Results (22)

S-parameters, far-field, VSWR, gain, Smith, bandwidth…

| Tool | What it does |
|------|--------------|
| `cst_get_s_parameters` | Extract S-parameter results from a completed CST simulation. Returns S-parameter data (magnitude, phase, real/imaginary) for the specifie… |
| `cst_get_farfield` | Get far-field radiation pattern results from a completed CST simulation at a specific frequency. Returns gain, directivity, radiation eff… |
| `cst_add_field_monitor` | Add a field monitor at a specific frequency to the CST project. Field monitors must be defined before running a simulation to capture fie… |
| `cst_get_impedance` | Get input impedance (Z-parameters) for a port from a completed CST simulation. Returns real and imaginary impedance vs frequency. Useful … |
| `cst_get_vswr` | Get Voltage Standing Wave Ratio (VSWR) for a port from a completed CST simulation. VSWR indicates impedance matching quality: 1.0 is perf… |
| `cst_get_gain` | Get antenna gain at a specific frequency from a completed CST simulation. Returns peak gain in dBi and the direction (theta, phi) of maxi… |
| `cst_get_efficiency` | Get antenna radiation efficiency from a completed CST simulation at a specific frequency. Returns total efficiency (including mismatch), … |
| `cst_list_results` | List all available results in the CST result tree. Optionally specify a subtree path to narrow the listing. Useful for discovering what s… |
| `cst_export_result` | Export a simulation result to a file (CSV, Touchstone, or text). Specify the result tree path and desired output format. Useful for post-… |
| `cst_get_result_summary` | Get a summary of all key simulation results from a completed CST simulation. Returns an overview of S-parameters, gain, efficiency, and i… |
| `cst_get_s_parameter_phase` | Extract S-parameter phase response from a completed CST simulation. Returns the phase of the specified S-parameter vs frequency. Optional… |
| `cst_get_group_delay` | Compute group delay from S-parameter phase for a port pair. Group delay is defined as tau = -d(phase)/d(2*pi*f) and represents the signal… |
| `cst_get_pattern_cut` | Extract an E-plane, H-plane, or custom radiation pattern cut from a completed CST simulation at a specific frequency. Returns gain vs ang… |
| `cst_get_cross_polarization` | Extract cross-polarization level and cross-polarization discrimination (XPD) from a completed CST simulation. Supports Ludwig-3, Ludwig-2… |
| `cst_get_axial_ratio` | Extract axial ratio for circularly polarized antennas from a completed CST simulation. Axial ratio (AR) indicates the quality of circular… |
| `cst_get_surface_current` | Extract surface current density distribution from a completed CST simulation at a specific frequency. Useful for understanding current fl… |
| `cst_get_efficiency_breakdown` | Get a detailed efficiency breakdown with loss budget from a completed CST simulation. Returns radiation efficiency, total efficiency, and… |
| `cst_get_time_domain_signal` | Extract time-domain port signal waveforms from a completed CST time-domain simulation. Returns incident, reflected, or transmitted signal… |
| `cst_get_smith_chart_data` | Extract Smith chart formatted impedance data from a completed CST simulation. Computes normalized impedance from S11 reflection coefficie… |
| `cst_get_bandwidth` | Calculate impedance bandwidth from S-parameter results. Finds the frequency range where S11 (or VSWR) meets the specified threshold. Retu… |
| `cst_get_radiation_pattern_3d` | Export full 3D radiation pattern data from a completed CST simulation at a specific frequency. Returns gain values over the full sphere i… |
| `cst_get_current_distribution` | Extract volume current distribution from a completed CST simulation at a specific frequency. Complements surface current extraction by pr… |

### Import / export (5)

CAD and Touchstone import/export, far-field export.

| Tool | What it does |
|------|--------------|
| `cst_import_cad` | Import a CAD file into CST Studio. Supports STEP (.stp/.step), IGES (.igs/.iges), STL (.stl), SAT/ACIS (.sat), DXF (.dxf), and OBJ (.obj)… |
| `cst_export_cad` | Export the current CST model (or a specific component) to a CAD format. Supports STL, SAT/ACIS, STEP, IGES, OBJ, and NASTRAN. |
| `cst_import_touchstone` | Import a Touchstone S-parameter file (.s1p, .s2p, .snp) into CST Studio for use as a reference or circuit element. |
| `cst_export_touchstone` | Export S-parameter simulation results to a Touchstone file. Requires a completed simulation with S-parameter data. |
| `cst_export_farfield` | Export far-field radiation pattern data to a file. Requires a completed simulation with far-field monitor results. |

### Parameters & optimizers (11)

Design parameters, sweeps, optimizers, sensitivity, yield.

| Tool | What it does |
|------|--------------|
| `cst_set_parameter` | Set or create a design parameter in CST Studio. Parameters can hold numeric values or string expressions referencing other parameters. |
| `cst_get_parameter` | Get the current value of a design parameter. Returns both the stored expression and the evaluated numeric value. |
| `cst_list_parameters` | List all design parameters in the current CST project with their names, expressions, and evaluated numeric values. |
| `cst_delete_parameter` | Delete a design parameter from the CST project. The parameter must not be referenced by other parameters or geometry. |
| `cst_parameter_sweep` | Set up a parameter sweep in CST Studio. The sweep runs the simulation multiple times, varying the specified parameter across a range of v… |
| `cst_optimizer` | Set up an optimization in CST Studio. Define a goal (minimize, maximize, or target a specific value for a result), specify which paramete… |
| `cst_multi_objective_optimizer` | Set up a multi-objective optimization with weighted goals and optional constraints. Supports Pareto-front exploration using Genetic Algor… |
| `cst_sensitivity_analysis` | Set up a one-at-a-time sensitivity analysis to rank parameters by their impact on a result. Varies each parameter individually while keep… |
| `cst_yield_analysis` | Set up a Monte Carlo yield analysis to estimate manufacturing yield. Randomly varies parameters according to their tolerances and evaluat… |
| `cst_constrained_optimizer` | Single-objective optimization with explicit inequality constraints. Example: minimize S11 subject to gain > 8 dBi and bandwidth > 100 MHz. |
| `cst_parameter_interpolation` | Interpolate results between parameter sweep data points to estimate performance at a specific parameter value without running a new simul… |

### Antenna evaluation (3)

Goal-driven evaluation and refinement helpers.

| Tool | What it does |
|------|--------------|
| `cst_evaluate_antenna` | Evaluate current antenna simulation results against performance goals. Exports S-parameter data and checks VSWR (or return loss) against … |
| `cst_analyze_impedance` | Analyze antenna impedance match quality across frequency bands using S-parameter data. Exports S11 from a completed simulation, computes … |
| `cst_refine_antenna` | Run an automated Nelder-Mead optimization loop to tune CST design parameters toward VSWR goals across specified frequency bands. Each ite… |

### Diagnostics (5)

Logs, delete results, auto-dismiss blocking CST dialogs.

| Tool | What it does |
|------|--------------|
| `cst_delete_results` | Delete simulation results from the current CST project. This prevents the 'Results May Get Incompatible With Model' dialog that blocks au… |
| `cst_read_project_log` | Read solver log files and project status information from the current CST project. Returns solver running state and the contents of the m… |
| `cst_dismiss_dialogs` | Find and dismiss any visible CST dialog windows (error popups, 'Results Incompatible' dialogs, solver warnings). Returns the title and te… |
| `cst_start_dialog_watcher` | Start a background thread that automatically detects and dismisses CST dialog windows as they appear. Essential for long-running operatio… |
| `cst_stop_dialog_watcher` | Stop the background dialog watcher and return its log of all dialogs that were auto-dismissed. Use after completing an operation that req… |

### Antenna templates (13)

Parametric antennas: patch, dipole, horn, Yagi, helix…

| Tool | What it does |
|------|--------------|
| `cst_antenna_patch` | Create a rectangular microstrip patch antenna with calculated dimensions for a target frequency. Supports inset, microstrip, and probe fe… |
| `cst_antenna_dipole` | Create a half-wave dipole antenna at a target frequency. Generates two wire arms with a discrete port at the feed gap. |
| `cst_antenna_monopole` | Create a quarter-wave monopole antenna over a ground plane. Generates a vertical wire element, ground plane, and feed port. |
| `cst_antenna_horn` | Create a pyramidal horn antenna for a target frequency and gain. Generates the waveguide section, flared horn, and waveguide port. |
| `cst_antenna_yagi` | Create a Yagi-Uda antenna with a reflector, driven element, and configurable number of directors. Generates wire elements and a discrete … |
| `cst_antenna_helix` | Create an axial-mode helical antenna for circular polarization. Generates helix coil, ground plane, and feed. |
| `cst_antenna_vivaldi` | Create a Vivaldi (tapered slot) antenna on a dielectric substrate. Generates substrate, exponential taper metallisation, and feed. |
| `cst_antenna_slot` | Create a slot antenna in a ground plane. Generates the ground plane with a resonant slot and microstrip feed. |
| `cst_antenna_ifa` | Create an Inverted-F antenna (IFA) suitable for mobile devices. Generates ground plane, radiating arm, shorting pin, and feed. |
| `cst_antenna_pifa` | Create a Planar Inverted-F Antenna (PIFA) for compact wireless devices. Generates ground plane, top patch, shorting wall, and feed. |
| `cst_antenna_spiral` | Create a wideband Archimedean spiral antenna. Generates two spiral arms with a discrete port feed at the center. |
| `cst_antenna_bowtie` | Create a planar bowtie antenna. Generates two triangular arms with a discrete port at the feed gap. |
| `cst_list_antenna_templates` | List all available parametric antenna templates with descriptions and typical use cases. No arguments required. |

### Antenna arrays (8)

Linear/planar/circular arrays, beam steering, taper.

| Tool | What it does |
|------|--------------|
| `cst_array_linear` | Create a linear antenna array by replicating an element along a chosen axis. Uses Transform.Translate to produce copies named Element_1 t… |
| `cst_array_planar` | Create a 2D planar antenna array with rectangular or triangular lattice. Replicates an element in X and Y using Transform.Translate. |
| `cst_array_circular` | Create a circular antenna array by placing elements at equal angular intervals around a circle of given radius. |
| `cst_array_compute_factor` | Compute the array factor analytically for a linear or planar array. Returns AF(theta) in dB, half-power beamwidth, first null beamwidth, … |
| `cst_array_beam_steering` | Calculate progressive phase weights to steer the main beam to a specified angle. Returns phase weights and VBA to set port phases in CST. |
| `cst_array_taper_design` | Design amplitude taper weights for sidelobe control. Supports uniform, cosine, Hamming, Hanning, Blackman, Taylor, and Chebyshev window f… |
| `cst_array_grating_lobe_analysis` | Analyse whether grating lobes exist for a given element spacing and maximum scan angle. Returns safe spacing and grating lobe angles. |
| `cst_array_mutual_coupling` | Set up a multi-port S-parameter simulation in CST for mutual coupling extraction between array elements. |

### PCB / SI (12)

Stackups, traces, vias, ground planes, Gerber import.

| Tool | What it does |
|------|--------------|
| `cst_pcb_create_stackup` | Create a PCB layer stackup in CST Studio. Generates brick geometry for each layer (signal, ground, power, dielectric) positioned vertical… |
| `cst_pcb_create_trace` | Create a PCB trace (microstrip, stripline, coplanar waveguide, or grounded CPW) in CST Studio. Optionally calculates trace width from a t… |
| `cst_pcb_create_via` | Create a PCB via (through, blind, or buried) in CST Studio. Generates the cylindrical via barrel with specified drill and pad dimensions.… |
| `cst_pcb_create_ground_plane` | Create a ground or power plane with optional cutouts (split planes, isolation slots) in CST Studio. Generates a solid copper brick and su… |
| `cst_pcb_import_gerber` | Import a Gerber/ODB++/DXF file for PCB analysis in CST Studio. Generates VBA for the CST Gerber import wizard. In offline mode, explains … |
| `cst_pcb_list_stackup_templates` | List predefined PCB stackup templates with complete layer definitions. Includes standard 2/4/6-layer FR-4 and RF-grade Rogers stackups. U… |
| `cst_pcb_differential_pair` | Create a differential pair of PCB traces in CST Studio. Generates two parallel bricks separated by a gap and calculates the differential … |
| `cst_pcb_via_model` | Create a detailed PCB via model in CST Studio with parasitic inductance and capacitance estimates. Uses the Goldfarb model for via induct… |
| `cst_pcb_via_fence` | Create a row (or multiple rows) of vias along a path for isolation or Substrate Integrated Waveguide (SIW) construction. Generates an arr… |
| `cst_pcb_cpw_transition` | Create a coplanar waveguide (CPW) to microstrip transition in CST Studio. Generates a tapered geometry that linearly tapers the center co… |
| `cst_pcb_calculate_coupling` | Calculate electromagnetic coupling between parallel PCB traces. Computes even/odd mode impedances, coupling coefficient, and near-end/far… |
| `cst_pcb_siw_waveguide` | Create a Substrate Integrated Waveguide (SIW) in CST Studio. Generates top and bottom copper planes with two rows of via fences forming t… |

### Matching networks (8)

L / Pi / T networks, stubs, quarter-wave, Smith transforms.

| Tool | What it does |
|------|--------------|
| `cst_matching_l_network` | Design an L-section impedance matching network. Computes inductor and capacitor values for matching a source impedance to a load impedanc… |
| `cst_matching_pi_network` | Design a Pi-section impedance matching network (C-L-C or L-C-L). Uses two back-to-back L-sections via a virtual resistance for controllab… |
| `cst_matching_t_network` | Design a T-section impedance matching network (L-C-L). Dual of Pi-network, uses two back-to-back L-sections. Pure Python computation. |
| `cst_matching_stub` | Design a single-stub impedance matching network. Computes the stub length and distance from the load using Smith chart transmission-line … |
| `cst_matching_quarter_wave` | Design a quarter-wave transformer matching network. Supports single and multi-section designs with maximally flat (binomial) or Chebyshev… |
| `cst_matching_create_lumped` | Generate CST VBA code to create a lumped-element matching network. Each component (inductor, capacitor, resistor) is placed as a CST Lump… |
| `cst_impedance_smith_transform` | Apply a reactive element transformation to an impedance on the Smith chart. Supports series L/C, shunt L/C, and transmission line operati… |
| `cst_matching_microstrip_impedance` | Calculate microstrip transmission line characteristic impedance from physical dimensions using the Hammerstad-Jensen model with optional … |

### VBA escape hatch (3)

Raw VBA execution and built-in VBA object reference.

| Tool | What it does |
|------|--------------|
| `cst_execute_vba` | Execute raw VBA code in CST Studio Suite. The code is validated for safety (shell access, file I/O, and external process execution are bl… |
| `cst_vba_help` | Get VBA reference documentation for a CST Studio object. Returns the object description and a list of its common methods and properties. |
| `cst_list_vba_objects` | List available CST Studio VBA objects, optionally filtered by category. Returns object names with brief descriptions. |

<!-- TOOL_CATALOG_END -->