FERS — structural FEM MCP server
online · 100% uptimecom.ferscloud/fers·v2.82.0·2 starsStructural FEM for AI agents: frames, plates, buckling, seismic and Eurocode checks, solved locally.
not scanned yet
2 stars23 downloads/wk
Reviews
Write oneNobody has reviewed FERS — structural FEM yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
FERS — structural FEM tools
Tool list not cached yet. `describe` through the gateway fetches it live.
How FERS — structural FEM compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 98/100
- higher than 99% of 48,255 servers
- Uptime
- 100%
- of our recent checks; the typical remote server answers 100%
- Response time
- 576 ms
- faster than 25% of 30,031 servers
- GitHub stars
- 2
- more than 75% of 28,688 servers
- Downloads a week
- 23
- more than 9% of 12,191 servers with a package
Release history: 6 versions in the registry since 2026-10-21, latest 2026-11-03, typically one every 2 days.
Install FERS — structural FEM in Claude Code, Cursor or VS Code
claude mcp add --transport http fers https://ferscloud.com/api/mcp
What the publisher says
From the FERS — structural FEM repository's README, as published. We do not edit it. Read it on GitHub
FERS: structural analysis in Python
FERS: structural finite-element analysis (3D frames, trusses, plates, Eurocode 3 checks) for engineers and AI agents. This is its Python SDK and the fers command. The solver is a compiled engine that runs on your machine, with no account and no network call: free for non-commercial use up to 100 members.
pip install FERSfrom fers_core import check_beam
# IPE200 in S235, simply supported over 6 m, 10 kN/m. SI units: m, N, Pa.
# check_beam adds an EN 1993-1-1 member check on a ULS combination of 1.35 x the load.
model = check_beam(6.0, "IPE200", udl=10_000.0)
model.settings.analysis_options.include_member_deflected_shape = True
model.run_analysis()
beam = model.resultsbundle.loadcases["Q"].member_results["1"]
x_frac, (_, dy, _) = beam.member_displacement_peak
ec3 = model.unity_check_results()[0]
print(f"M {beam.local_minimums.mz / 1e3:.1f} kNm, sag {dy * 1e3:.1f} mm at x/L {x_frac:.2f}")
print(f"EC3 utilization {ec3['max_utilization']:.2f}")M -45.0 kNm, sag -41.8 mm at x/L 0.50
EC3 utilization 2.85The sag is 41.3 mm of bending (5wL⁴/384EI) plus 0.4 mm of shear deformation, which the engine includes. The beam fails: the ULS moment of 60.75 kNm exceeds its bending resistance of 51.9 kNm, and with nothing restraining its compression flange, lateral-torsional buckling takes the utilization to 2.85.
model JSON file, print one line (or --json) and say in their exit code whether the numbers can be used; see From the terminal and from coding agents. fers skill --install . gives a coding agent the FERS skill, and MCP clients can use the FERS MCP server. In Claude Code, both come as one plugin: /plugin install fers --marketplace Jeroen124/FERS_core.
- Agents and scripts: fers solve, fers check and fers validate take a
your own dimensions ("FERS[sections]") and DXF import ("FERS[dxf]"); "FERS[all]" installs everything 0.1.x did. Catalogue sections (IPE200, HEB300, UB 457x191x67, W14X30, ...) need no extra.
- Extras: plots (pip install "FERS[plot]"), section properties meshed from
non-commercial use (Licence).
- Licence: the SDK is BSD-3-Clause; the engine it installs is free for
Solving a model
Building a model by hand, create the FERS object first, then its nodes, members and loads. Creating a FERS restarts the id counters, so a node made before it would share an id with one made after it, and the solver refuses node ids that do not run from 1 without gaps.
Reading results
run_analysis() puts the results on model.resultsbundle. Load cases and load combinations are keyed by name. Within each, nodes and members are keyed by their id as a string, because results round-trip through JSON.
case = model.resultsbundle.loadcases["Load"] # or .loadcombinations["ULS 1"]
case.displacement_nodes["5"].dy # dx dy dz rx ry rz warp
case.reaction_nodes["1"].nodal_forces.fy # fx fy fz mx my mz bw
beam = case.member_results["4"]
beam.local_maximums.mz, beam.local_minimums.mz # envelope along the member
beam.local_start_forces.fy # end forces, member axesSince 0.1.98, memberresults and displacementnodes are read-only tables rather than dicts of objects. That is what keeps a large result small in memory. They read like dicts: [], get, in, len, .items(), and iteration in the solver's order. Each lookup builds a fresh object, and nothing in it can be changed:
beam.local_maximums.mz = 0.0 # AttributeError: read-only
editable = case.member_results.copy() # a plain dict of editable objects
editable["4"].local_maximums.mz = 0.0 # fineShortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
FERS — structural FEM: common questions
- Is FERS — structural FEM MCP server safe?
- Yes, by our scan: it is graded A (98/100). Read the FERS — structural FEM safety report
- How do I install FERS — structural FEM?
- It runs remotely at ferscloud.com. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
- Does FERS — structural FEM need an API key?
- Yes. The registry entry asks for
FERS_API_KEY. - Is FERS — structural FEM maintained?
- The last commit was 12 days ago (2026-10-23). The latest release is v2.82.0.
- Is FERS — structural FEM up?
- 100% of our last 28 checks got an answer. We check remote servers about four times a day.
- How does FERS — structural FEM compare with other MCP servers?
- safety score 98/100 (higher than 99% of 48,255 servers); uptime 100% (of our recent checks; the typical remote server answers 100%); response time 576 ms (faster than 25% of 30,031 servers). Full comparison.