MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

MCP server for Ansys Electronics Desktop automation with PyAEDT, HFSS, Maxwell, Q3D, Icepak, native AEDT APIs, reports, sweeps, and simulation workflows.

Created 5/21/2026
Updated about 18 hours ago
Repository documentation and setup instructions
Ansys AEDT MCP Server logo

Ansys AEDT MCP Server

A Model Context Protocol server for Ansys Electronics Desktop, PyAEDT, HFSS, Maxwell, Q3D, Icepak, Circuit, reports, sweeps, and simulation automation.

Python MCP PyAEDT AEDT License

English · 简体中文 · Documentation · Verification

Why This Exists

ansys-aedt-mcp lets AI agents and MCP clients control Ansys Electronics Desktop through a structured server interface. It combines dedicated tools for common electromagnetic simulation workflows with a broad PyAEDT/native AEDT bridge for advanced automation.

SEO keywords: Ansys MCP, AEDT MCP server, Ansys Electronics Desktop automation, PyAEDT MCP, HFSS automation, HFSS far-field automation, Touchstone export, Touchstone import, signal integrity automation, Maxwell automation, Q3D automation, Icepak automation, AI simulation agent, electromagnetic simulation automation, EDA agent tools, CAE automation.

Highlights

  • MCP-ready: stdio, SSE, and streamable HTTP transports through the official Python MCP SDK.
  • PyAEDT-first: HFSS, Maxwell, Q3D/Q2D, Icepak, Circuit, Twin Builder, EMIT, RMxprt, Mechanical, and HFSS 3D Layout entry points.
  • Native AEDT bridge: odesktop, oproject, odesign, oeditor, and odesign.GetModule(...) access through controlled tools.
  • Simulation workflow tools: variables, datasets, geometry, materials, setup inspection/update, HPC options, sweeps, optimizations, analysis, reports, field plots, far-field, antenna/RCS data, signal-integrity expressions, Q3D nets, Icepak fan data, Touchstone data/import/export, monitors, and exports.
  • Agent-safe verification: unit tests run without AEDT licenses; Desktop/native smoke tests run on licensed Windows AEDT installations.
  • Non-commercial source availability: research, education, personal experimentation, and public knowledge use under PolyForm Noncommercial 1.0.0.

Quick Start

git clone https://github.com/LaplaceYoung/ansys-aedt-mcp.git
cd ansys-aedt-mcp
uv sync --extra dev
uv run ansys-aedt-mcp

Use the MCP inspector during development:

uv run mcp dev src/ansysmcp/server.py

Run streamable HTTP:

uv run ansys-aedt-mcp --transport streamable-http

MCP Client Config

{
  "mcpServers": {
    "ansys-aedt": {
      "command": "uv",
      "args": ["--directory", "F:\\实验\\ansysmcp", "run", "ansys-aedt-mcp"]
    }
  }
}

After cloning from GitHub, replace the local path with your checkout path.

Tool Surface

| Area | Tools | | --- | --- | | Environment/API discovery | aedt_environment, aedt_api_manifest | | Session | aedt_start_session, aedt_release_session, aedt_session_info | | Project/design | aedt_open_project, aedt_save_project, aedt_list_projects, aedt_new_project, aedt_insert_design, aedt_set_active_project, aedt_set_active_design, aedt_design_summary | | Variables/datasets | aedt_set_variable, aedt_get_variables, aedt_create_dataset, aedt_import_dataset | | Modeling/materials | aedt_create_geometry, aedt_modeler_summary, aedt_modeler_operation, aedt_assign_material, aedt_materials_summary, aedt_materials_operation, aedt_material_object_summary, aedt_mesh_operation, aedt_mesh_summary, aedt_import_cad | | Ports/sources | aedt_create_port, aedt_source_port_summary, aedt_assign_boundary_or_excitation | | Solver-specific controls | aedt_hfss_operation, aedt_maxwell_operation, aedt_q3d_operation, aedt_q3d_net_summary, aedt_icepak_operation, aedt_get_fans_operating_point, aedt_circuit_operation | | Simulation | aedt_create_setup, aedt_setup_summary, aedt_get_setup_properties, aedt_update_setup, aedt_create_frequency_sweep, aedt_create_open_region, aedt_analyze, aedt_analyze_setup, aedt_solve_in_batch, aedt_apply_solved_variation, aedt_validate_design, aedt_cleanup_solution, aedt_set_hpc_options, aedt_set_license_type, aedt_set_temporary_directory, aedt_list_variations | | Exploration | aedt_create_parametric_sweep, aedt_create_optimization, aedt_optimetrics_summary, aedt_parametric_operation, aedt_optimization_operation, aedt_optimetrics_setup_operation | | Post-processing | aedt_create_output_variable, aedt_get_output_variable, aedt_get_evaluated_value, aedt_get_nominal_variation, aedt_get_profile, aedt_create_report, aedt_create_field_plot, aedt_get_solution_data, aedt_get_traces_for_plot, aedt_get_touchstone_data, aedt_signal_integrity_expressions, aedt_get_monitor_data, aedt_insert_far_field, aedt_get_antenna_data, aedt_get_rcs_data, aedt_post_summary, aedt_post_operation, aedt_insert_near_field, aedt_import_touchstone_solution, aedt_create_touchstone_report | | Export | aedt_export_report, aedt_export_touchstone_data, aedt_export_field_plot, aedt_export_diagnostics, aedt_export_matrix_data, aedt_export_icepak_summary, aedt_export_app_data | | Deletion | aedt_delete_item | | Project/design maintenance | aedt_change_design_settings, aedt_change_validation_settings, aedt_edit_design_notes, aedt_read_design_data, aedt_project_design_operation | | Configuration | aedt_configuration_summary, aedt_configuration_operation, aedt_update_configuration_options | | Native/OO properties | aedt_native_module_call, aedt_native_module_summary, aedt_native_module_batch_call, aedt_native_get_properties, aedt_native_get_property_value, aedt_native_change_property, aedt_oo_object_names, aedt_oo_get_properties, aedt_oo_get_property_value, aedt_oo_set_property_value | | Broad API/workflows | aedt_run_app_method, aedt_list_api, aedt_call, aedt_batch_call |

Current MCP registration: 109 tools.

Example Workflows

Desktop/native workflow:

aedt_environment
aedt_start_session(app_name="desktop", version="2024.2", non_graphical=true)
aedt_new_project(project_name="MCPNativeProject")
aedt_insert_design(design_type="HFSS", design_name="HFSSDesign1", solution_type="DrivenModal")
aedt_call(target="omodule", module_name="AnalysisSetup", method="...")

PyAEDT solver workflow:

aedt_start_session(app_name="hfss", version="2024.2", non_graphical=true)
aedt_set_variable(name="w", expression="10mm")
aedt_create_geometry(primitive="box", args=[[0, 0, 0], ["w", "5mm", "1mm"]])
aedt_modeler_operation(method="move", args=[["Box1"], ["1mm", "0mm", "0mm"]])
aedt_assign_material(assignment="Box1", material="copper")
aedt_materials_summary
aedt_materials_operation(method="add_material", args=["demo_material"], kwargs={"properties": {"permittivity": 3.2}})
aedt_create_port(method="wave_port", args=["Face1"], kwargs={"name": "P1"})
aedt_hfss_operation(method="create_scattering", kwargs={"ports": ["P1"]})
aedt_create_setup(name="Setup1")
aedt_update_setup(name="Setup1", properties={"MaximumPasses": 8})
aedt_create_frequency_sweep(sweep_kind="linear_count", args=["Setup1", "GHz", 1, 10])
aedt_create_parametric_sweep(variable="w", start="5mm", stop="20mm", step="5mm")
aedt_optimetrics_summary
aedt_optimetrics_setup_operation(collection="parametrics", setup_name="Parametric1", method="update", kwargs={"update_dictionary": {"SaveFields": true}})
aedt_set_hpc_options(cores=8, tasks=2)
aedt_analyze_setup(name="Setup1", cores=8, blocking=true)
aedt_create_output_variable(variable="s11", expression="dB(S(1,1))")
aedt_get_evaluated_value(name="w", units="mm")
aedt_create_report(expressions="dB(S(1,1))")
aedt_post_summary
aedt_post_operation(method="export_report_to_jpg", args=["outputs", "S11"], kwargs={"width": 1200})
aedt_get_traces_for_plot(kwargs={"setup": "Setup1"})
aedt_get_touchstone_data(setup="Setup1")
aedt_signal_integrity_expressions(drivers=["P1"], receivers=["P2"], math_formula="dB")
aedt_insert_far_field(kwargs={"name": "FF1", "theta_step": 5, "phi_step": 5})
aedt_get_antenna_data(setup="Setup1", sphere="FF1")
aedt_get_rcs_data(setup="Setup1", expression="ComplexMonostaticRCSTheta")
aedt_export_report(report_name="S11", output_path="outputs")
aedt_export_touchstone_data(setup="Setup1", sweep="Sweep1", output_file="outputs/design.s2p")
aedt_export_diagnostics(export_kind="convergence", setup="Setup1")

AEDT Requirements

  • Windows with Ansys Electronics Desktop installed for real AEDT execution.
  • PyAEDT-compatible AEDT version. Local verification detected AEDT 2024.2.
  • Solver-specific licenses for solver app constructors and analysis workflows.
  • Python 3.10+; the repository pins local development to Python 3.12 through .python-version.

Verification

uv sync --extra dev
uv run ruff check .
uv run pytest
uv run ansys-aedt-mcp --help
uv run python scripts/aedt_smoke.py --mode environment
uv run python scripts/aedt_smoke.py --mode desktop --version 2024.2 --create-project MCPNativeProject

Current local status:

  • ruff check: passing
  • pytest: 39 passing tests
  • MCP tools registered: 109
  • Desktop/native AEDT smoke: passing on AEDT 2024 R2

Documentation

Roadmap

  • Add solver-license-backed end-to-end HFSS smoke examples.
  • Expand canonical templates for HFSS, Maxwell 3D, Q3D, Icepak, and Circuit workflows.
  • Add MCP prompts for common AEDT modeling and post-processing tasks.
  • Add solver-backed smoke examples around diagnostics, near-field extraction, Touchstone analysis, and monitor data.
  • Add generated API maps for PyAEDT modeler, post, modules, and native AEDT module names.

Community

Contributions are welcome for examples, solver-specific wrappers, docs, tests, and verified workflows. Read CONTRIBUTING.md, SECURITY.md, and CODE_OF_CONDUCT.md.

License

This project uses PolyForm Noncommercial License 1.0.0.

Commercial licensing and redistribution permissions require a separate written agreement.

Quick Setup
Installation guide for this server

Install Package (if required)

uvx ansys-aedt-mcp

Cursor configuration (mcp.json)

{ "mcpServers": { "laplaceyoung-ansys-aedt-mcp": { "command": "uvx", "args": [ "ansys-aedt-mcp" ] } } }