Skip to main content
Glama

CST-MCP — CST Studio Suite 2026 through the Model Context Protocol

English | 简体中文

License: MIT Python 3.10+ MCP Platform: Windows Tools: 84 CI

An MCP server that drives CST Studio Suite 2026 through CST's own automation API (cst.interface, cst.results): modelling, materials, ports, boundaries, mesh, solver selection, frequency range, monitors, solver runs, result reading and evidence export.

84 tools · 14 categories · stdio transport · no network access.

New here? Install → Quick start → Verify with the demo project.


Origin

This server is a refactor of the CST MCP inside Cai-aa/CAE-Agent-Hub (MCP/CST/). That project is MIT-licensed and its copyright notice is retained in LICENSE.

Upstream

Here

Tools

51, in one 623-line mcp_server.py

84 across 14 categories, in a cst_mcp/ package

Vendored runtime CLI

824 files

none — a built-in command registry

Offline checks, CI

none covering this component

9 gates on every push, Python 3.10 and 3.12

Documentation, skills

one README; skills at the hub root

17 documents, 2 bundled skills

Added here: guard rails that refuse a history block CST would hang on, mesh sizing derived from the smallest feature, project overwrite that does not strand a Result/ directory, and a port verdict instead of raw numbers. Full comparison: Differences from upstream.


Related MCP server: CST Studio Orchestrator MCP

Why this exists

A model with generic CST knowledge produces automation that looks right and fails in specific, quiet ways. Every trap below was measured on CST 2026.2; the raw messages are recorded in tests/evidence/known_failures.md.

Trap

What it looks like

Evanescent port mode

A waveguide port on a 1.6 mm microstrip cross-section had a 51.9 GHz cutoff and a 6.2 kΩ wave impedance at 2.4 GHz. S-parameters were referenced to 7623 Ω instead of 50 Ω and S11 was a flat −0.6 dB line — easy to mistake for an antenna. The solver had reported success.

Rebuild inside a structure macro

CST refuses it, and in testing the Design Environment was left permanently unresponsive — every later call hung.

Library material + parameter change

A library-loaded material does not survive save/reopen, so the next rebuild fails at the solid that uses it. A parameter sweep over such a project fails on every case.

Overwriting a project by deleting the .cst

A CST project is the file plus a companion directory holding Model/ and Result/. Deleting only the file leaves the directory, and CST answers The project directory … already exists and is non-empty. Interactively that is the "delete the previous results?" prompt.

Ports in a local coordinate system

Endpoint coordinates are read as global xyz, so a uvw port silently lands somewhere else.

The server turns those findings into guards, defaults and refusal messages, so the mistake fails loudly at the tool call instead of quietly in the results.

What it does

Category

Tools

Covers

session

14

health, detect, connect, project create/open/save/close, messages, raw VBA, history blocks, release

parameters

4

read, create, change, delete design parameters

geometry

14

brick, cylinder, sphere, cone, torus, elliptical cylinder, bond wire, boolean, transform, extrude, component

material

3

create, assign, load from library

port

3

discrete port, waveguide port, list ports

solver

11

solver choice, frequency range, FD/TD/eigenmode configuration, boundary, symmetry, background, run

mesh

2

mesh type and density, including smallest_feature_mm

monitor

2

add and list field monitors

results

2

result tree, read a 1D item

verify

5

S11, reference impedance, port info with verdict, energy budget, model audit

export

3

Touchstone, ASCII, summary JSON

sweep

2

parameter sweep: preview the case count, then run

runtime

16

built-in command bridge and typed wrapper generation

meta

3

list tools, full manifest, dynamic dispatch

The full surface, with parameters and examples, is in docs/mcp_tools.json — machine-readable, so another agent can read it directly.

Requirements

CST Studio Suite 2026

Commercial software. Not distributed here — obtain and license it separately. Verified against the 2026.2 build.

Operating system

Windows. CST's automation API is Windows-only.

Python

3.10 or newer, able to import mcp. The Python bundled with CST works.

Network

Not required. Configuration is read from a local .env file.

Quick start

# 1. find CST on this machine and write .env for you
python check_install.py --fix

# 2. verify: Python, packages, .env, the tool registry, and a real MCP handshake
python check_install.py

# 3. point your MCP client at it
#    command: python
#    args:    ["<path to>\\mcp_server.py"]
#    cwd:     <path to this folder>

# 4. first call
#    cst_health_check_tool  {}

check_install.py exits 0 when ready, 1 on warnings, 2 on problems. The full walkthrough — including what to do on a machine with no internet access — is in Installation.

Verify the installation

check_install.py proves the server loads. To prove it can actually drive CST — open a project, build geometry, place a port, set the band, solve — hand the prompt below to your AI. It installs the MCP and the two skills, then runs a verification task against the demo project bundled in test_demo/.

Fill in the two placeholders and copy the whole block.

Install this cst-studio-suite-mcp into my local harness (<your harness: dsh, codex,
WorkBuddy, ...>). The MCP path is: <the folder you installed it in>. Also install the two
skills in the skills folder: `cst-studio-suite-mcp` and `cst2026-simulation-execution`.

Then verify the installation through that MCP and those two skills. The verification task:

1. Open the project at `<MCP folder>\test_demo\test_demo.cst`.
2. Create a cube named box, 50 mm per side, material iron.
3. Create a thin sheet 2 mm below the box, 5 mm thick, 50 mm x 50 mm, material PEC.
4. Place an excitation port at the centre of that sheet: a discrete port connecting the
   box and the sheet.
5. Set the frequency range to 0-100 MHz.
6. Solve for S-parameters.

When the install and the verification are done, report the files used, the steps taken and
the result.

A Chinese version of the same prompt is in README.zh-CN.md.

What a pass looks like — and the two traps worth knowing, namely that the reference impedance must read 50 Ω and that a 50 mm cube at 0–100 MHz is far below resonance so S11 near 0 dB is the correct answer — is in Verify with the demo project.

What a session looks like

A complete worked run against live CST: build a model, configure the solver, solve, read the result and export evidence — 30 tool calls, 0 failures. Condensed:

cst_connect_tool                {"launch_if_needed": true}
cst_new_project_tool            {"project_type": "mws", "path": "…\\123.cst"}
cst_define_parameters_tool      {"parameters": {"L": 50, "gap": 2, "tsheet": 5}}
cst_create_brick_tool           {"component": "parts", "name": "box", "xrange": ["-L/2","L/2"], …}
cst_add_discrete_port_tool      {"port_number": 1, "point1": [0,0,"-gap"], "point2": [0,0,"0"], "impedance": 50.0}
cst_set_solver_tool             {"solver": "HF Frequency Domain"}
cst_set_frequency_range_tool    {"fmin": 0, "fmax": 100, "unit": "MHz"}
cst_set_mesh_tool               {"mesh_type": "Tetrahedral", "steps_per_wavelength": 8}
cst_save_project_tool           {"path": "…\\123.cst", "overwrite": true}
cst_run_solver_tool             {}
cst_read_s11_tool               {"target_frequency": 100}
cst_read_reference_impedance_tool {}
cst_export_touchstone_tool      {"filename": "…\\evidence\\123_s11", "impedance": 50.0}

The per-call record is in tests/evidence/mcp_calls_123_report.md.

Documentation

Everything lives in docs/, indexed in docs/README.md.

I want to

Read

Install on this machine

Installation

Prove it works end to end

Verify with the demo project

Hand the install to another AI

Install via another agent

Update an existing installation

Upgrading

Start using the server

Quick start

See what a session looks like

Usage

Browse the tools

Tool catalogue

Know the rules that keep results trustworthy

Rules

Know what CST 2026.2 does not expose

CST 2026.2 limits

Know the server's own limits

Known limits

Add a tool or a tool family

Extending

Understand the repository layout

Layout

Run the verification

Verification

Documentation follows progressive disclosure: each file is short and links to its siblings. Read only the file that answers the current question.

Verification

The offline checks need no CST installation and run in CI:

python check_install.py --quick
python tests/smoke_registry.py
python tests/check_mcp_compliance.py
python tests/check_self_description.py
python tests/check_skill_tool_refs.py
python tests/check_skill_layout.py
python tests/check_docs_consistency.py
python tests/test_audit_regressions.py
python tests/test_port_info_verdict.py
python tests/test_save_overwrite.py

The live runners need a licensed CST and a spare ~2 GB of RAM; they are run by hand, and their results are recorded in Verification.

Repository layout

├── mcp_server.py         MCP entry point, registry bootstrap, manifest builder
├── check_install.py      installation acceptance check
├── cst_mcp/              server implementation, one module per tool category
├── skills/               two bundled agent skills
├── docs/                 documentation, grouped index in docs/README.md
├── tests/                offline gates, live runners, curated evidence
└── .env.example          configuration template (`.env` is never committed)

Full tree with per-file notes: Layout.

Contributing

Read AGENTS.md first — it defines the documentation-sync requirement, and it is enforced by the checks above. Then see CONTRIBUTING.md.

Two ground rules, because the project drives a commercial simulator:

  1. A change includes its documentation. If your change makes a document inaccurate, that document is corrected in the same pull request.

  2. Do not document behaviour you have not verified. Read the implementation, or measure it against CST. Untested claims are removed, not merged.

Security

The server runs locally, speaks MCP over stdio and makes no network requests. Report vulnerabilities privately — see SECURITY.md.

License

MIT © 2026 Thompson Labs.

This project does not distribute CST Studio Suite, which is commercial software and must be obtained and licensed separately. It calls the automation API that CST ships.

Available Tools

84 tools
cst_add_discrete_port_toolB

Add a discrete S-parameter port with an explicit reference impedance (safe for microstrip feeds).

Inputs: point1 (required), point2 (required), port_number (required), label, +2 more. Returns: object

cst_add_monitor_toolC

Add a field monitor: far field, E/H field, power flow, current or loss.

Inputs: name (required), field_type (required), domain, frequency, +2 more. Returns: object

cst_add_to_history_toolC

Append one named block to the model history tree (geometry, mesh, solver, ...).

Inputs: title (required), vba_code (required). Returns: object

cst_add_waveguide_port_toolC

Add a waveguide port on a plane of the calculation domain.

Inputs: xrange (required), yrange (required), zrange (required), orientation (required), +5 more. Returns: object

cst_assign_material_toolC

Assign an existing material to a solid.

Inputs: solid (required), material (required). Returns: object

cst_boolean_toolC

Combine two solids: add (unite), subtract, intersect or insert.

Inputs: tool (required), target (required), operation (required), title. Returns: object

cst_call_toolC

Call any registered CST MCP tool by name through the registry (dynamic dispatch).

Inputs: tool_name (required), args. Returns: object

cst_close_project_toolB

Close the active project without quitting CST.

Inputs: no named parameters. Returns: object

cst_configure_eigenmode_solver_toolC

Configure the eigenmode solver (number of modes, target frequency).

Inputs: method, n_modes, accuracy, frequency, +1 more. Returns: object

cst_configure_fd_solver_toolC

Configure the frequency domain solver: mesh method, sweep type, element order, accuracy, adaption.

Inputs: mesh, order, sweep, accuracy, +3 more. Returns: object

cst_configure_td_solver_toolC

Configure the time domain (transient) solver.

Inputs: accuracy, mesh_type, pulse_widths, double_precision, +2 more. Returns: object

cst_connect_toolC

Connect to a running CST Design Environment, optionally launching one.

Inputs: pid, launch_if_needed. Returns: object

cst_create_bondwire_toolC

Create a bond wire between two points.

Inputs: name (required), height (required), point1 (required), point2 (required), +4 more. Returns: object

cst_create_brick_toolC

Create a rectangular brick (box) as a history block.

Inputs: name (required), xrange (required), yrange (required), zrange (required), +3 more. Returns: object

cst_create_cone_toolC

Create a cone or truncated cone.

Inputs: axis (required), name (required), ranges (required), component (required), +6 more. Returns: object

cst_create_cylinder_toolC

Create a cylinder along x, y or z.

Inputs: axis (required), name (required), radius (required), ranges (required), +5 more. Returns: object

cst_create_elliptical_cylinder_toolC

Create an elliptical cylinder.

Inputs: axis (required), name (required), ranges (required), xradius (required), +6 more. Returns: object

cst_create_material_toolC

Define a material explicitly (permittivity, permeability, conductivity, loss tangent).

Inputs: name (required), mue, rho, sigma, +5 more. Returns: object

cst_create_sphere_toolC

Create a sphere (optionally truncated by top/bottom radius).

Inputs: name (required), center (required), radius (required), component (required), +5 more. Returns: object

cst_create_torus_toolC

Create a torus (ring_radius = ring, tube_radius = tube).

Inputs: name (required), center (required), component (required), ring_radius (required), +5 more. Returns: object

cst_define_parameters_toolB

Create or update several parameters at once (the usual first modelling step).

Inputs: parameters (required), save. Returns: object

cst_delete_parameter_toolC

Delete a design parameter from the parameter list.

Inputs: name (required). Returns: object

cst_delete_solid_toolC

Delete a solid from the model.

Inputs: name (required). Returns: object

cst_detect_toolB

Detect the CST executable, automation libraries and running Design Environments.

Inputs: no named parameters. Returns: object

cst_energy_summary_toolC

Report the power budget and efficiencies at a frequency (radiated / accepted / losses).

Inputs: cst_file, frequency. Returns: object

cst_export_ascii_toolC

Export one result tree item to an ASCII/CSV file for external checking.

Inputs: filename (required), tree_path (required), mode. Returns: object

cst_export_touchstone_toolB

Export the S-parameters as a Touchstone file at a chosen reference impedance.

Inputs: filename (required), impedance, data_format, export_type, +1 more. Returns: object

cst_extrude_curve_toolC

Extrude a closed planar curve item into a solid.

Inputs: name (required), curve (required), component (required), thickness (required), +4 more. Returns: object

cst_frequency_overview_toolB

Report the solver, the solver frequency range and every monitor frequency in one view.

Inputs: no named parameters. Returns: object

cst_generate_mesh_toolD

Mesh generation is not exposed through CST's VBA API.

Inputs: no named parameters. Returns: object

cst_get_parameters_toolA

Read every design parameter of the active project (name and value).

Inputs: no named parameters. Returns: object

cst_get_solver_toolB

Read the currently active solver.

Inputs: no named parameters. Returns: object

cst_health_check_toolA

Check CST install, Python libraries, workspace and running Design Environments.

Inputs: no named parameters. Returns: object

cst_list_design_environments_toolA

List the PIDs of running CST Design Environments.

Inputs: no named parameters. Returns: object

cst_list_mcp_tools_toolC

List every CST MCP tool with its category, summary and parameters.

Inputs: category. Returns: object

cst_list_monitors_toolB

List the monitors defined in the project.

Inputs: no named parameters. Returns: object

cst_list_ports_toolA

List the ports defined in the project and their types.

Inputs: no named parameters. Returns: object

cst_list_results_toolB

List the items of the 3D or schematic result tree.

Inputs: module, cst_file. Returns: object

cst_load_material_from_library_toolC

Add a material to the project from the CST material library.

Inputs: library_path (required), replace, material_name. Returns: object

cst_messages_toolB

Read the CST message window (INFO / WARNING / ERROR).

Inputs: limit, errors_only. Returns: object

cst_model_audit_toolB

Audit the built model: solids, materials, volumes and bounding boxes.

Inputs: no named parameters. Returns: object

cst_move_solid_to_component_toolC

Move a solid into another component.

Inputs: solid (required), component (required). Returns: object

cst_new_component_toolC

Create a new (empty) component in the model tree.

Inputs: name (required). Returns: object

cst_new_project_toolC

Create a new CST project and save it into the workspace immediately.

Inputs: path, project_type. Returns: object

cst_open_project_toolC

Open a .cst project in the connected Design Environment.

Inputs: path (required). Returns: object

cst_project_info_toolB

Report the active project, all open projects and the recent CST messages.

Inputs: no named parameters. Returns: object

cst_quit_toolA

Close every open project and release the Design Environment process.

Inputs: no named parameters. Returns: object

cst_read_port_info_toolC

Read port mode information: cutoff frequency, wave impedance, effective permittivity.

Inputs: cst_file, operating_frequency. Returns: object

cst_read_reference_impedance_toolB

Read the S-parameter reference impedance (ZRef) - must match the impedance you intend.

Inputs: cst_file. Returns: object

cst_read_result_toolC

Read a 1D result tree item (S-parameters, efficiency, power, convergence).

Inputs: tree_path (required), module, cst_file, max_points, +1 more. Returns: object

cst_read_s11_toolB

Read S11 and report it in dB at a target frequency (the usual acceptance check).

Inputs: cst_file, tree_path, target_frequency. Returns: object

cst_rename_solid_toolC

Rename an existing solid.

Inputs: new_name (required), old_name (required). Returns: object

cst_run_solver_toolB

Run the configured solver and report CST's own diagnostics on failure.

Inputs: allow_low_memory. Returns: object

cst_runtime_args_template_toolC

Return an argument template for one runtime command.

Inputs: tool_name (required). Returns: object

cst_runtime_describe_toolC

Describe one runtime command.

Inputs: tool_name (required). Returns: object

cst_runtime_detect_toolB

Report the built-in runtime command bridge and its commands.

Inputs: no named parameters. Returns: object

cst_runtime_invoke_toolC

Invoke a runtime command by name with JSON arguments.

Inputs: tool_name (required), args. Returns: object

cst_runtime_list_pipelines_toolB

List the runtime workflow recipes.

Inputs: no named parameters. Returns: object

cst_runtime_list_tools_toolB

List the runtime commands available through this MCP server.

Inputs: no named parameters. Returns: object

cst_runtime_usage_guide_toolA

Return the machine-readable usage guide for the runtime family.

Inputs: no named parameters. Returns: object

cst_run_vba_toolB

Execute raw CST VBA immediately (not stored in the history tree).

Inputs: vba_code (required). Returns: object

cst_save_project_toolC

Save the active project, optionally to a specific path.

Inputs: path, overwrite. Returns: object

cst_set_background_toolC

Set the background material and the extra space added around the model.

Inputs: mue, epsilon, xmax_space, xmin_space, +5 more. Returns: object

cst_set_boundary_toolC

Set the boundary conditions on the six domain sides.

Inputs: all, xmax, xmin, ymax, +3 more. Returns: object

cst_set_frequency_range_toolC

Set the solver frequency range (the band that is actually simulated).

Inputs: fmax (required), fmin (required), unit. Returns: object

cst_set_mesh_toolC

Set the mesh type and its density (steps per wavelength, minimum steps).

Inputs: mesh_type, min_step_number, smallest_feature_mm, lines_per_wavelength, +1 more. Returns: object

cst_set_parameters_toolC

Change one or more design parameters through the CST parameter list.

Inputs: parameters (required), save. Returns: object

cst_set_solver_toolC

Select the solver (high frequency time domain / frequency domain / eigenmode / ...).

Inputs: solver (required). Returns: object

cst_set_symmetry_toolC

Set electric/magnetic symmetry planes (halves the solve time).

Inputs: x, y, z. Returns: object

cst_sweep_preview_toolA

Expand a parameter sweep spec into concrete cases and report the case count. Does not start CST.

Inputs: parameters (required), mode, max_cases. Returns: object

cst_sweep_run_toolC

Run a parameter sweep: one copied project per case, parameters applied, optional solve and export.

Inputs: parameters (required), project_path (required), mode, max_cases, +8 more. Returns: object

cst_toolbox_args_template_toolD

Alias of cst_runtime_args_template_tool.

Inputs: tool_name (required). Returns: object

cst_toolbox_describe_toolD

Alias of cst_runtime_describe_tool.

Inputs: tool_name (required). Returns: object

cst_toolbox_detect_toolC

Alias of cst_runtime_detect_tool.

Inputs: no named parameters. Returns: object

cst_toolbox_generate_typed_wrappers_toolC

Generate typed Python wrappers for the runtime commands into a file.

Inputs: category, output_path. Returns: object

cst_toolbox_invoke_toolD

Alias of cst_runtime_invoke_tool.

Inputs: tool_name (required), args. Returns: object

cst_toolbox_list_pipelines_toolC

Alias of cst_runtime_list_pipelines_tool.

Inputs: no named parameters. Returns: object

cst_toolbox_list_tools_toolC

Alias of cst_runtime_list_tools_tool.

Inputs: no named parameters. Returns: object

cst_toolbox_schema_catalog_toolC

Return the JSON-schema catalog of the runtime commands.

Inputs: category. Returns: object

cst_toolbox_usage_guide_toolC

Alias of cst_runtime_usage_guide_tool.

Inputs: no named parameters. Returns: object

cst_tool_manifest_toolC

Return the full machine-readable manifest of the CST MCP (write it to a file with out_path).

Inputs: out_path. Returns: object

cst_transform_toolC

Transform a solid: translate, rotate, scale or mirror.

Inputs: name (required), operation (required), axis, angle, +8 more. Returns: object

cst_workspace_toolB

Report the workspace and evidence folders and what they contain.

Inputs: no named parameters. Returns: object

cst_write_summary_json_toolC

Write a single JSON file summarising solver, frequency range, S11 and efficiencies.

Inputs: out_path (required), target_frequency. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.4/5.0

    Scored across 84 tools

    Disambiguation2/5

    Several tools are explicit aliases or overlapping dispatch mechanisms (e.g., cst_runtime_detect_tool / cst_toolbox_detect_tool, cst_runtime_invoke_tool / cst_toolbox_invoke_tool, plus cst_call_tool and cst_run_vba_tool). While many geometry and solver tools are distinct, the runtime/toolbox/meta families create real confusion about which tool to call.

    Naming Consistency4/5

    Almost all tools follow a consistent cst_ prefix, snake_case, and _tool suffix pattern. The main deviation is the runtime vs. toolbox alias naming, which is still readable and predictable.

    Tool Count1/5

    With 84 tools, this server is far beyond the typical well-scoped range. The count is inflated by duplicate aliases and meta/runtime wrappers, making the surface heavy and hard to manage.

    Completeness4/5

    The tool set covers project lifecycle, geometry creation, materials, ports, boundaries, solver configuration, results reading, sweeps, and exports broadly. Some operations such as mesh generation are explicitly unsupported, leaving minor gaps rather than major dead ends.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      An MCP server that integrates CST Studio Suite with the Model Context Protocol to enable automated electromagnetic simulation workflows. It provides specialized tools for material definition management and direct interaction with the CST Studio Suite environment.
      38
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables AI agents to control CST Studio Suite for 3D electromagnetic simulation, antenna design, and schematic-based field-circuit co-simulation through 177 MCP tools.
      100
      11
      AGPL 3.0
    • A
      license
      B
      quality
      B
      maintenance
      Python-first MCP server for CST Studio Suite (2024–2026) that lets AI assistants drive CST from Windows: open projects, build geometry, set materials and ports, run solvers, read S-parameters and farfield metrics, and generate design reports.
      2
      184
      11
      AGPL 3.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables safe, audited automation of CST Studio Suite 2026.2 by inspecting projects, building models from structured parameters and fixed History templates, running periodic unit-cell solves, and computing R/T/A and PCR from saved complex channels with CSV, HTML, and Touchstone export. Writes are confined to a work directory, mutations and solver actions require explicit confirmation, and unresolved solver outcomes are blocked rather than reported as success.
      Apache 2.0