Skip to main content
Glama
FD Solutions MCP Server

FD Solutions MCP Server

by SimWorksSoft

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FDSOLUTIONS_HOMENoFD Solutions install root (uses `<home>/api/python`). Highest priority; if unset or invalid, config.json is used instead.
FDSOLUTIONS_PYTHON_APINoDirectory that contains simworks.py (usually `<FD Solutions install root>/api/python`). Highest priority; if unset or invalid, config.json is used instead.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
addA

Add a simulation object (SimWorks add* only; configure with set_property).

After success, the reply includes Name='...'. Record that exact name for later select / set / delete. Do not call add again for an object that already exists (especially port_group, mode_port, fdtd) — if select fails, use object_action path forms instead of re-adding. Docs: https://simworks.net/knowledge-base/Script-Commands_setting-objects

object_actionC

Manipulate selection and objects in the project tree (SI meters for vertices).

Select cheat-sheet (SimWorks select / selectpartial / shiftselect*):

  • Structures at root: select('Ring').

  • Under FDTD: select('FDTD::MonitorName').

  • Mode ports: select('FDTD::Ports::Port_input') — include solver + port group + port. Omitting FDTD:: is the usual reason select fails.

  • Discover group: select_partial('::Ports') or select_partial('FDTD::Port').

  • Multi-select: shift_select / shift_select_partial add without clearing (same group only); then set_property applies to all selected.

  • If select fails: retry with FDTD::<Group>::<Child>; never re-add or disable.

switch_viewC

Switch the CAD camera or view plane.

switch_layoutA

Switch between run and design layout modes.

Workflow: run simulation → (extract results) → switch_layout('design') before further edits → switch_layout('run') only when you need the run/results UI again. Never assume set_property works while still in run layout after a solve.

run_actionA

Run solvers, sweeps, or analysis scripts.

Confirm with the user before action=run / run_sweep / eme_sweep. If the call blocks until done and the MCP request times out, the solver may still be running in SimWorks — do not issue a second start to "retry" a timeout.

project_actionC

Open, save, or create a simulation project. Prefer absolute paths.

set_propertyA

Set one property on the currently selected object(s).

Prefer calling directly when you know the exact SimWorks property name. Numbers are SI only. On failure, get_info(kind="property"), then retry only the failed property — do not invent names from similar software. If you set name, remember the new name for later object_action select (use Parent::Child when nested).

After a simulation finishes, many properties can only be set in design layout. If set fails with a design-layout / inactive message, call switch_layout(layout="design") (confirm first if results would be lost), then retry — do not re-add objects to work around this.

group_membershipB

Add the selected object to a group, or remove it from its current group.

add_group_variableB

Configure a setup, parameter, or result variable on the selected group.

set_source_signalA

Assign a user-defined time-domain signal to an existing source (setsourcesignal).

Used in FDTD / FDFD for custom pulses (modulated Gaussian, multi-peak, etc.). This is not set_property — ordinary wavelength / pulse settings still use set_property on the selected source.

t, amplitude, and phase must be equal-length 1D vectors (SI: s, —, rad). Prefer starting t at 0 so the initial field is zero.

set_eme_analysisA

Set one parameter on the EME Analysis Window (setemeanalysis).

Use this before run_action(eme_sweep) / eme_propagate when you need to configure sweep type, wavelength range, cell group span, tolerances, energy conservation, etc.

This is not set_property: it does not touch the selected object and get_info(kind="property") will not list these names. Read back with get_info(kind="eme_analysis"). After a sweep, fetch results with get_results(kind="eme_sweep").

get_infoA

Discover properties and metadata. Prefer this before inventing property names for set.

kind=eme_analysis calls getemeanalysis(name) for the EME Analysis Window (not object get). Pair with set_eme_analysis; sweep results use get_results(kind="eme_sweep").

get_resultsA

Extract simulation results. For kind=data, call with no dataset/data first (LIST MODE) to discover available names, then call again with object_name + dataset_name [+ data_name].

kind=eme_sweep: getemesweep(dataset_name) after run_action(eme_sweep). Configure the analysis window with set_eme_analysis / get_info(eme_analysis).

material_actionB

List, add, set, or query materials. Do not invent material names — list first if unsure.

jobs_actionC

Manage the simulation job queue.

workspace_actionC

Clear workspace variables or the script console.

load_dataA

Load a script file, data files, or import NK / raw arrays into the workspace.

  • kind="script": SimWorks load('file_path') — loads and runs a script (e.g. .msf). Prefer an absolute path.

  • To open a project (.sim / .mpps etc.), use project_action(action="open").

  • Other kinds load data into the workspace (mdf/mat/h5/…), not scripts.

save_dataA

Save workspace variables to a file. Use project_action(save) to save the .sim project.

file_ioC

Low-level file open/close/write helpers.

dataset_queryC

Query parameters or attributes on a dataset object (not fd_instance).

Prompts

Interactive templates invoked by user choice

NameDescription
system_instructionsSystem instructions for the SimWorks FD Solutions MCP simulation assistant. Operational rules only: MCP tools only, SI units, confirm before run, name tracking / select paths. No separate guideline-fetch tool required.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 20 tools

Disambiguation3/5

The set covers distinct domains, but several tools are generic action multiplexers (object_action, run_action, project_action, material_action, jobs_action, workspace_action), so their exact boundaries depend on action parameters rather than names. get_info, dataset_query, and get_results also overlap in discovery/query roles, though descriptions help clarify.

Naming Consistency3/5

Names are all snake_case, but conventions are mixed: bare add, noun_action multiplexers, verb_noun getters/setters, and noun-only tools like group_membership and file_io. It remains readable, but the pattern is not predictable across the surface.

Tool Count4/5

Twenty tools is at the upper end but reasonable for a broad simulation platform spanning projects, objects, properties, solvers, results, materials, jobs, and files. Most tools map to distinct workflow areas, though the generic action tools inflate the surface somewhat.

Completeness4/5

The surface covers the main simulation lifecycle: project management, object creation/manipulation, property configuration, solver runs, results extraction, materials, jobs, workspace, and file/data handling. Minor gaps remain around explicit deletion/close operations and some actions hidden behind generic multiplexers.

Maintenance

ActivityMaintained
ResponsivenessSyncing