Ask your AI about your MIDAS NX model.
A local MCP server that lets AI apps such as Claude Desktop read the model open in Gen NX / Civil NX, show analysis results, and apply only the changes you confirm.
Built by a MIDAS IT team member · alpha · not an official producthttps://mcp.midasapi.space/en/llms.txt
It sums up the install steps, the tools and the rules to follow, written for AI agents.
tools
tools that leave the model alone
tools that change, after you confirm
products: Gen NX · Civil NX
What it does
Keep the model open and ask; the AI picks the right tool and reads straight from NX.
Read the model
Ask "Summarise the Gen model" for counts of nodes, elements, materials, sections and load cases, and the unit system. Table schemas and records too.
Analysis results
"Show the DL reactions", "Beam forces for DL": result tables on request, and checks based on them.
Result pictures
"Show the DL moment diagram", "Show the WX deformed shape": NX draws the result and you get the picture.
Confirmed changes
Add nodes, edit or delete records, generate KDS load combinations, run the analysis, save a copy. Every change is previewed first and applied only after you agree.
How it works
Everything runs on your PC. The AI app starts and stops the server; you never run it yourself.
What you need
| OS | Windows |
|---|---|
| NX | Gen NX or Civil NX running on the same PC, with its Open API connected (Apps > API Settings) |
| MAPI key | One per product, shown under Apps > API Settings in each program. Use your own PC's key. |
| AI app | Claude Desktop, latest version (recommended). Claude Code, Codex, Gemini CLI and other MCP clients work too. |
Do not swap the Gen and Civil keys. The other product's key still reports "connected", but every real call fails. Do not share your key with anyone.
Install: Claude Desktop
No Python or uv to install.
-
Download
Get
midas-nx-mcp-<version>.mcpbfrom the latest release. -
Open it
Double-click the file, or drag it onto
Settings > Extensionsin Claude Desktop. -
Enter your keys
Enter the Gen and Civil keys; leave the one you do not use empty. The output folder (default
C:\temp, which must exist) and the analysis timeout are set here too. Change them later underSettings > Extensions. -
Check the connection
Open a model in NX and ask Claude "Check the Gen connection". If it reports connected and the program name, you are done.
Other apps / by hand
These need uv. Install it once from PowerShell:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Open claude_desktop_config.json with Settings > Developer > Edit Config, add the server under mcpServers, then quit Claude Desktop completely (tray icon too) and start it again.
{
"mcpServers": {
"midas-nx": {
"command": "uvx",
"args": ["midas-nx-mcp@latest"],
"env": {
"MIDAS_MAPI_KEY_GEN": "your Gen NX key",
"MIDAS_MAPI_KEY_CIVIL": "your Civil NX key"
}
}
}
}claude mcp add midas-nx -e MIDAS_MAPI_KEY_GEN=your-gen-key -e MIDAS_MAPI_KEY_CIVIL=your-civil-key -- uvx midas-nx-mcp@latestAdd this to ~/.codex/config.toml, or add a STDIO server in the settings screen.
[mcp_servers.midas-nx]
command = "uvx"
args = ["midas-nx-mcp@latest"]
env = { MIDAS_MAPI_KEY_GEN = "your Gen NX key", MIDAS_MAPI_KEY_CIVIL = "your Civil NX key" }Add this to %USERPROFILE%\.gemini\settings.json. Then run gemini in the folder you will work in and trust it: in an untrusted folder the server stays Disabled. /mcp shows whether it is connected.
{
"mcpServers": {
"midas-nx": {
"command": "uvx",
"args": ["midas-nx-mcp@latest"],
"env": {
"MIDAS_MAPI_KEY_GEN": "your Gen NX key",
"MIDAS_MAPI_KEY_CIVIL": "your Civil NX key"
}
}
}
}Signing in to Gemini: a Google AI Pro or Ultra subscription, or a company Gemini Code Assist Standard or Enterprise account, uses Login with Google. A free personal account is refused there with IneligibleTierError; get an API key from Google AI Studio, set it as GEMINI_API_KEY, and choose Gemini API Key as the sign-in method.
What to ask
Say "Gen" or "Civil" in your request, so the AI uses the right key.
| To | Ask |
|---|---|
| Get an overview | "Summarise the Civil model" |
| Find a table / its fields | "Which load tables does Gen have?", "What fields does the SECT table have?" |
| Read records | "Show the coordinates of nodes 1 to 10", "List the sections in use" |
| Design settings | "Which design code is set?" |
| Current selection | "What is selected in NX right now?" |
| Analysis results | "Show the DL reactions", "Show DL and LL displacements" |
| Check | "Do the reactions add up to the self-weight?" |
| Result pictures | "Show the DL moment diagram", "Show the WX deformed shape", "Reactions for gLCB1(CB)" |
| Story results (Gen) | "Show the X story drift" (needs the stories calculated in NX before the analysis) |
| Load combinations | "Generate the KDS concrete load combinations" (previewed first) |
| Ready-made checks | The app's prompt menu: reactions, story drift, model review |
| See it | "Show me the model" |
At most 200 rows come back at once. For more, ask for a range: "the next 200", "only 1001 to 1100".
Preview → confirm → apply
Anything that changes the model or its file (analysis, save a copy, create / update / delete records) takes two steps. The AI shows what will change first and applies it only after you say "go ahead". If the model changed in between, it is refused; afterwards the table is read back and reported.
- Any change discards the analysis results. Run the analysis again before reading results.
- NX saves over the open file before it analyses. To keep the original, ask for "save a copy" first.
- A document that was never saved cannot be analysed. Save a copy first to give it a file.
- Copies go to
C:\tempunder a generated name, and NX then works on the copy. - New / open / import document and emptying a table are never offered: they are too risky.
Try it on a copy of an important model first. This alpha has been verified on small test models, not yet on large production models.
Tools
The AI picks them; no need to remember the names. Every tool takes product (gen or civil).
| Tool | Kind | What it does |
|---|---|---|
check_connection | read | Connected or not, program name |
list_tables | read | The /db and /DESIGN tables (searchable) |
describe_table | read | NX's own field schema for a table |
read_table | read | Records, by id if given, up to 200 rows |
model_summary | read | Counts of the main tables, unit system |
read_model_info | read | Project status, section properties, story check parameters (Gen), current selection |
list_result_tables | read | Result table types |
result_table | read | One result table (load cases, components, keys) |
capture_view | read | The NX window as a PNG |
show_result | view | Has NX draw a result (reactions, displacement, deformed shape, beam, plate) and returns the PNG; the model is untouched |
run_analysis | change | Runs the analysis (NX saves the open file first) |
save_copy | change | Saves a copy to C:\temp under a generated name |
write_records | change | Creates or updates up to 50 records; elements naming a missing material or section are refused |
delete_records | change | Deletes up to 50 records by id; nodes, materials and sections in use are refused |
apply_operations | change | Creates, updates and deletes across several tables at once, in dependency order; stops at the step that fails |
generate_load_combinations | change | (Gen) Adds the KDS concrete, steel or SRC combinations; existing ones stay |
Troubleshooting
| Symptom | Check |
|---|---|
| Every call suddenly times out | Look for a dialog in NX and answer it in the NX window. Do not ask the AI to retry. |
| "... is not set" | That product's key is entered (Settings > Extensions) |
| Connected, but reads fail | The Gen and Civil keys are not swapped, and NX's API is connected |
| "NX is not running" | Start NX and connect under Apps > API Settings |
| "no analysis result" | No analysis yet, or a later change discarded the results |
| Capture or save fails | The output folder (C:\temp) exists |
| New version not picked up | .mcpb: install the new file. By hand: uv cache clean, then restart the app |
Other problems or ideas: GitHub Issues.
Try it now
Double-click one file, enter your key, and you are set.
