opennodex
Structural finite-element analysis and structural health monitoring from .ndx decks — from Python, the
command line, and any MCP-capable agent harness.
pip install opennodex (Python 3.10+) brings everything a run needs: the .ndx compiler, the native nodex
engine and the native nodex-mesher, built for your platform; the nodex-shm SHM engine (operational
modal analysis, damage localization, monitoring) with its numpy/scipy/pandas/matplotlib; and Node.js as a
dependency wheel. Nothing else to install, no solver to configure.
pip install opennodex
opennodex selftest # a beam, an auto-meshed slab, the slab over MCP, and an SHM analysis
Command line
opennodex check viga.ndx # compile only: positioned diagnostics
opennodex run viga.ndx # compile + solve, one summary line per solve
opennodex run viga.ndx --json r.json # …and the full result
opennodex info # compiler, engine contract version, mesher
Python
import opennodex
out = opennodex.run("viga.ndx") # a path, or the deck's text
for solve, result in zip(out["solves"], out["results"]):
print(solve["kind"], len(result["nodes"]))
opennodex.check("viga.ndx") # {"ok", "diagnostics", ...} — never raises for a bad deck
MCP — the opennodex tools in any agent harness
opennodex mcp is a local MCP server (stdio) with the opennodex agent's tools: validate, run (native engine,
real runId), query results, check design criteria, section catalog, suggest a section, compare modal data,
twin training, damage localization and mechanism diagnosis (nodex-shm), generate a frame, import SAP2000 /
ETABS / Abaqus / OpenSees / SOFiSTiK models, bake a parametric deck, model patches and more.
It never edits your files: your agent does, with its own tools, as diffs you see. The generators
(generate_frame, import_model, bake_deck) return the .ndx they would write, for your agent to save.
Your agent also gets the opennodex agent's own instructions — its FEM rules and the whole .ndx reference —
through the server's instructions and the opennodex_instructions tool (some hosts shorten or drop server
instructions; the tool is never shortened). File paths resolve against the folder the host starts it in (your
project), or --root DIR.
Install it once so opennodex is on your PATH (pipx install opennodex or uv tool install opennodex), or let
uvx fetch it on demand ("command": "uvx", "args": ["opennodex", "mcp"]). Then register it:
Claude Code
claude mcp add opennodex -- opennodex mcp
opencode — opencode.json
{ "mcp": { "opennodex": { "type": "local", "command": ["opennodex", "mcp"], "enabled": true } } }
OpenAI Codex CLI — ~/.codex/config.toml
[mcp_servers.opennodex]
command = "opennodex"
args = ["mcp"]
Claude Desktop / Cursor — claude_desktop_config.json / .cursor/mcp.json
{ "mcpServers": { "opennodex": { "command": "opennodex", "args": ["mcp"] } } }
VS Code — .vscode/mcp.json
{ "servers": { "opennodex": { "type": "stdio", "command": "opennodex", "args": ["mcp"] } } }
opennodex selftest also drives the MCP server the way a host does and runs a deck through it.
A deck looks like this:
model units kN, m
material steel E=210e6 nu=0.3 rho=7.85
section s A=0.00538 Iy=8.36e-5 Iz=6.04e-6 J=2.01e-7
node A at (0,0,0)
node B at (6,0,0)
beam B1 from A to B steel s div 4
fix A
load 1 nodal B fz=-10
solve linear_static
Every number comes from a real engine run. The deck carries its own section properties, so it runs the same on any machine.
Platforms
Linux x86_64 (glibc as tagged on the wheel), Windows x64, macOS (Apple Silicon and Intel). The desktop app (editor, 3D viewer and the optional agent) is a separate download: opennodex releases.
Español. pip install opennodex instala el compilador de .ndx, el motor nativo nodex, el mallador
nativo y el motor SHM nodex-shm para tu plataforma, más Node.js. opennodex selftest comprueba la
instalación; opennodex run deck.ndx compila y resuelve; opennodex mcp expone las herramientas de
opennodex como servidor MCP local para Claude Code, opencode, Codex, Cursor o VS Code (configuración arriba).
La aplicación de escritorio se descarga aparte.
Release files for opennodex 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| opennodex-0.1.3-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| opennodex-0.1.3-py3-none-manylinux_2_38_x86_64.whl | Python 3 | none | Linux glibc 2.38+ x86-64 | Details |
| opennodex-0.1.3-py3-none-macosx_15_0_x86_64.whl | Python 3 | none | macOS 15.0+ x86-64 | Details |
| opennodex-0.1.3-py3-none-macosx_14_0_arm64.whl | Python 3 | none | macOS 14.0+ ARM64 | Details |
Total release size: 13.2 MB
Release files / opennodex-0.1.3-py3-none-win_amd64.whl
| Download URL | opennodex-0.1.3-py3-none-win_amd64.whl |
|---|---|
| Size | 4.9 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3ab973a6e9d944709ab587a3052a2424ddb5a672483e7dcd785dde3e49c41d79
|
|
BLAKE2b-256 checksum How to use checksums |
69b5659d56e4bac6b02e529dacce8a95805fdbdf2e72169c9f82ac614dd2c04a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency logRelease files / opennodex-0.1.3-py3-none-manylinux_2_38_x86_64.whl
| Download URL | opennodex-0.1.3-py3-none-manylinux_2_38_x86_64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | Linux glibc 2.38+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
49d99c28d96e6cc40d76901ca85216fd74ec0a193eb2f62a95554f53493afa3f
|
|
BLAKE2b-256 checksum How to use checksums |
80a00d68d28acbe3c947f5326a19a3d9b3f179d61a876889aa4ea0a44fd579df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency logRelease files / opennodex-0.1.3-py3-none-macosx_15_0_x86_64.whl
| Download URL | opennodex-0.1.3-py3-none-macosx_15_0_x86_64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | Python 3 macOS 15.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
da0879667a1a50a5c7a824783f7f1f03591641723bbba5ab2ad903717a7d0eda
|
|
BLAKE2b-256 checksum How to use checksums |
dea3cea4a3ed182aff2796d2f5066ee65613d9a848070342ffd8fca0ca66a6c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency logRelease files / opennodex-0.1.3-py3-none-macosx_14_0_arm64.whl
| Download URL | opennodex-0.1.3-py3-none-macosx_14_0_arm64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | Python 3 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a2af7f0fe14e839aefb676e6a5e73e1d9d66421dfd35cf7a301317f2b1c30ad3
|
|
BLAKE2b-256 checksum How to use checksums |
c00b122851284bd23081f0f13ac331d7adecd672b6f4dd8708d47b86ca1cba07
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency log