ETABS MCP
PYPI · ETABS-MCP
Agentic MCP server for CSI ETABS v22+: model, load, analyse, design and inspect structures.
Available components
Last scanned (6 hours ago)
Scores higher than 57% of PyPI servers
Category Developer Tools
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 0 of 35 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency71
- Repository check failed: the declared repository URL returned HTTP 404. See how to fix → View diagnostics → Fail
- Cryptographically verified build provenance (signed, bound to Moha2005269/etabs-mcp). View diagnostics → Pass
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 18 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability77
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 7975 tokens (~109/item across 73 items; 71 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage87
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 55% of tool parameters carry a description.Partial
- Structured output schemas are declared (97% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 73 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 −20
- Malware scan: pass → unverified ▼ security
- Source repository: pass → fail ▼ security
- Security disclosure: fail → unverified ▼ functional
- 29 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 18 Oct 26 65
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed pypi/etabs-mcp@0.3.2
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | Moha2005269/etabs-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/Moha2005269/etabs-mcp/.github/workflows/release.yml@refs/tags/v0.3.2 |
| Rekor log index | 3303297018 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:a830ed841625938b56c718e58bb44e273db1d62b59381487486779087aff9bd1 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 35 packages
| Packages resolved | 35 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
etabs_add_areas ~48
Draw floors, slabs and walls from corner points (like Draw > Floor/Wall). Returns new area names.
| Name | Type | Req | Description |
|---|---|---|---|
| areas | array | yes | – |
| csys | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_add_frames ~70
Draw beams, columns and braces between two points (like Draw > Frame). Joints are created or merged automatically. Returns the ETABS names of the new frames, in input order; failures are listed per item.
| Name | Type | Req | Description |
|---|---|---|---|
| csys | string | – | – |
| frames | array | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_add_points ~39
Add joints at coordinates (existing joints at the same location are reused).
| Name | Type | Req | Description |
|---|---|---|---|
| csys | string | – | – |
| points | array | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_analysis_status ~31
Per-case analysis status (not run / finished ...), run flags, and whether the model is locked.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
etabs_assign_diaphragm ~66
Define a rigid or semi-rigid diaphragm and assign it to the slabs (area objects) on the chosen stories.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | – |
| semi_rigid | boolean | – | – |
| stories | – | – | Stories to assign (default: all with slabs). |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_assign_label ~116
Assign objects to a group, pier or spandrel label (created if missing), like Assign > ... in ETABS.
| Name | Type | Req | Description |
|---|---|---|---|
| group | – | – | Assign to every object already in this group. |
| label | string | yes | – |
| label_type | string | yes | Groups organise selection and output; piers/spandrels drive wall design and forces. |
| names | – | – | – |
| object_kind | string | – | – |
| remove | boolean | – | Groups only: remove the objects from the group instead. |
| selected | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_assign_loads ~65
Assign loads (Assign > Frame/Shell/Joint Loads): distributed or point loads on frames, uniform loads on areas, and forces/moments on joints. Values are in present units; 'gravity' acts downward (-Z).
| Name | Type | Req | Description |
|---|---|---|---|
| loads | array | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_assign_section ~74
Assign a frame section or an area property (Assign > Frame > Section / Shell > Property).
| Name | Type | Req | Description |
|---|---|---|---|
| group | – | – | – |
| kind | string | yes | – |
| names | – | – | – |
| section | string | yes | Frame section or area (slab/deck/wall) property name. |
| selected | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_call_api ~146
Call any ETABS API method. Arguments are validated and converted against the live signature; ByRef values come back in 'outputs'. A non-zero 'ret' means ETABS rejected the call (ok=false).
| Name | Type | Req | Description |
|---|---|---|---|
| args | – | – | Arguments by parameter name. Omit ByRef outputs; enums accept names or numbers; arrays are JSON lists. |
| confirm | boolean | – | Required for destructive methods (Delete*, New*, OpenFile, unlocking...). Ask the user first. |
| max_items | – | – | Cap on returned array lengths. |
| path | string | yes | Method path relative to SapModel ('PointObj.SetRestraint'), or 'App.<method>' for the application object. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_call_api_batch ~86
Run several API calls in order in one round trip (for example, define and assign many properties). Each result is reported; with stop_on_error the batch halts at the first failure.
| Name | Type | Req | Description |
|---|---|---|---|
| calls | array | yes | – |
| confirm | boolean | – | Confirms every destructive call in the batch. |
| stop_on_error | boolean | – | Stop at the first failed call. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_checkpoint ~59
Save the model and keep a copy as a named checkpoint (an undo point before risky edits). Restore it with etabs_restore_checkpoint. Needs a saved model.
| Name | Type | Req | Description |
|---|---|---|---|
| label | string | yes | Short name, e.g. 'before-resize'. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_code_checks ~257
Run the standard post-analysis checks in one call: story drift against the allowable, torsional irregularity, soft story, weight (mass) irregularity, modal mass participation and response-spectrum base shear vs ELF. Each check reports its clause, the governing numbers and pass/fail.
| Name | Type | Req | Description |
|---|---|---|---|
| cases | – | – | Lateral cases/combos to check (default: every Quake, Wind and RS case). |
| checks | – | – | Default: all. |
| drift_amplification | number | – | Cd/Ie applied to elastic drifts (1.0 for wind or drifts already amplified). |
| drift_limit | number | – | Allowable story drift ratio Δa/h (ASCE 7-16 Table 12.12-1: 0.020 for most Risk Category I/II buildings). |
| elf_case | – | – | – |
| modal_case | string | – | – |
| modal_target | number | – | – |
| rs_case | – | – | – |
| rs_direction | string | – | – |
| rs_target | number | – | – |
| soft_story_limits | array | – | [ratio to story above, ratio to average of 3 above]. |
| torsion_limits | array | – | – |
| weight_limit | number | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_connect ~223
Connect to ETABS. Other tools connect automatically with mode 'auto', so call this only to choose a specific instance or version, to drive several ETABS instances, or to recover after ETABS was closed. Launching ETABS takes 10-30 s.
| Name | Type | Req | Description |
|---|---|---|---|
| install_dir | – | – | ETABS program folder, overrides 'version'. |
| instance | string | – | Name for this connection. Use a new name (e.g. 'b') to drive a second ETABS alongside the first; it becomes the active instance. |
| mode | string | – | attach = use a running ETABS; start = launch a new one; auto = attach if one is running, else start. |
| pid | – | – | Attach to this ETABS process id (see etabs_list_installations). |
| reconnect | boolean | – | Drop the current connection first. |
| version | – | – | ETABS major version to use, e.g. 22 or 23. Default: the running one, else the newest installed. |
| visible | boolean | – | Show the ETABS window when launching it. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_define_area_section ~82
Define a slab or wall property (Define > Section Properties > Slab/Wall Sections).
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | – |
| material | string | yes | – |
| name | string | yes | – |
| shell_type | string | – | – |
| slab_type | string | – | – |
| thickness | – | yes | Number in present units or e.g. '200 mm'. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_define_combinations ~74
Define load combinations (Define > Load Combinations) from load cases and other combinations, and/or generate the default design combinations for the active design codes.
| Name | Type | Req | Description |
|---|---|---|---|
| add_default_design_combos | array | – | Also generate the code default design combinations for these materials. |
| combinations | array | – | Combinations to create. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_define_frame_section ~230
Define a frame section: parametric concrete/steel shapes, or a steel shape imported from an ETABS section library. Dimensions are in present length units.
| Name | Type | Req | Description |
|---|---|---|---|
| bottom_flange_thickness | – | – | i_section only; defaults to flange_thickness. |
| bottom_flange_width | – | – | i_section only; defaults to width. |
| depth | – | – | t3: overall depth (rectangle, i_section, tube) or outside diameter (circle, pipe). |
| flange_thickness | – | – | – |
| library_file | – | – | from_library: section database file, e.g. 'AISC16.xml', 'Euro.xml', 'Indian.xml'. |
| library_section | – | – | from_library: section name in that file, e.g. 'W14X90'. |
| material | string | yes | Material name (see etabs_list_properties). |
| name | string | yes | – |
| shape | string | yes | – |
| web_thickness | – | – | Web thickness (i_section, tube) or wall thickness (pipe). |
| width | – | – | t2: width (rectangle, tube) or top flange width (i_section). |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_define_load_patterns ~36
Define load patterns (Define > Load Patterns), each optionally with its linear static load case.
| Name | Type | Req | Description |
|---|---|---|---|
| patterns | array | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_define_material ~228
Define a material, either from the ETABS library (region + standard + grade, the same lists as the 'Add Material' dialog) or as a custom isotropic material from E, weight and strength.
| Name | Type | Req | Description |
|---|---|---|---|
| elastic_modulus | – | – | Custom material: E (present force/length^2). |
| fc | – | – | Concrete compressive strength f'c. |
| fu | – | – | Steel/rebar tensile strength (default 1.25 fy). |
| fy | – | – | Steel/rebar yield strength. |
| grade | – | – | Library material: grade, e.g. 'Grade 50', 'C30/37'. |
| material_type | string | yes | – |
| name | string | yes | – |
| poisson_ratio | number | – | – |
| region | – | – | Library material: region, e.g. 'United States', 'Europe', 'India'. |
| standard | – | – | Library material: standard, e.g. 'ASTM A992', 'EN 1992-1-1'. |
| thermal_coefficient | number | – | – |
| unit_weight | – | – | Weight per unit volume (present units). |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_define_response_spectrum ~142
Define an ASCE 7-16 response spectrum function and a response-spectrum load case that uses it.
| Name | Type | Req | Description |
|---|---|---|---|
| case_name | string | – | – |
| damping | number | – | – |
| direction | string | – | – |
| eccentricity | number | – | – |
| function_name | string | – | – |
| importance | number | – | – |
| modal_case | string | – | – |
| r | number | – | – |
| s1 | number | – | – |
| scale_factor | – | – | Default g·I/R in present units (from importance and r). |
| site_class | string | – | – |
| ss | number | – | – |
| tl | number | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_define_seismic_load ~247
Define an ASCE 7-16 equivalent-lateral-force seismic load pattern (Define > Load Patterns > Auto Lateral Load). Creates the Quake pattern and its load case.
| Name | Type | Req | Description |
|---|---|---|---|
| bottom_story | – | – | Default: Base. |
| cd | number | – | Deflection amplification Cd. |
| ct_type | integer | – | Approximate-period Ct/x set (ETABS numbering, 2 = 0.03;0.75 'all other'). |
| directions | array | – | Directions and accidental eccentricity sense. |
| eccentricity | number | – | – |
| importance | number | – | – |
| name | string | – | – |
| omega | number | – | Overstrength factor Ω0. |
| period | string | – | Fundamental period source. |
| r | number | – | Response modification coefficient R. |
| s1 | number | – | Mapped MCER 1-s acceleration S1 (g). |
| site_class | string | – | – |
| ss | number | – | Mapped MCER short-period acceleration Ss (g). |
| tl | number | – | Long-period transition TL (s). |
| top_story | – | – | Default: the top story. |
| user_period | number | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_define_wind_load ~260
Define an automatic wind load pattern applied to diaphragms (Define > Load Patterns > Auto Lateral Load > Wind). ASCE 7-16 is fully parameterised; other codes take their table fields via 'fields'.
| Name | Type | Req | Description |
|---|---|---|---|
| angle | number | – | Wind direction angle in degrees (0 = +X, 90 = +Y). |
| bottom_story | – | – | – |
| cases | string | – | ASCE 7 wind load cases. |
| code | string | – | Auto-wind table code suffix, e.g. 'ASCE 7-16', 'ASCE 7-22', 'Eurocode1 2005'. Other codes need 'fields'. |
| exposure | string | – | – |
| fields | – | – | Extra/override table fields for the chosen code (see etabs_get_table on 'Load Pattern Definitions - Auto Wind - <code>'). |
| gust_factor | number | – | – |
| kd | number | – | – |
| kzt | number | – | – |
| leeward_cp | number | – | – |
| name | string | – | – |
| top_story | – | – | – |
| wind_speed | number | – | Basic wind speed V (mph for ASCE 7). |
| windward_cp | number | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_delete_objects ~72
Delete frames, areas or points chosen by name, by group, or the current selection.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Deleting cannot be undone through the API. Ask the user first. |
| group | – | – | – |
| kind | string | yes | – |
| names | – | – | – |
| selected | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_describe_api ~96
Show a method's exact signature (types, ByRef outputs, defaults, enum values, safety level), or list an interface's methods and sub-interfaces, or an enum's values. Reflects the connected ETABS version.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | A method path ('FrameObj.GetReleases'), an interface ('cFrameObj' or 'FrameObj') or an enum name ('eLoadPatternType'). |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_design_codes ~111
Read, list or change the design codes (Design > ... > View/Revise Preferences). 'list' returns every code this ETABS version supports for steel, concrete, shear wall, slab and composite design.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| code | – | – | For 'set': e.g. 'AISC 360-16', 'ACI 318-19', 'Eurocode 2-2004'. 'list' shows valid names. |
| kind | – | – | For 'set'. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_design_report ~84
Write an engineering summary in Markdown: model, loads, analysis status, base reactions, modal periods, drifts and the design check with the most critical members. Returns the text and the file.
| Name | Type | Req | Description |
|---|---|---|---|
| path | – | – | Write the Markdown here (default: <model>_report.md next to the model). |
| top | integer | – | Critical members to list. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_dialogs ~67
List or close dialogs ETABS has open. A modal dialog blocks the ETABS API, so close leftovers after etabs_menu or a design run.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| title | – | – | Close the dialog with this title ('close' with no title closes all). |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_disconnect ~73
Release the ETABS connection. ETABS keeps running unless close_etabs is true.
| Name | Type | Req | Description |
|---|---|---|---|
| close_etabs | boolean | – | Also exit the ETABS application. |
| confirm | boolean | – | Required when closing ETABS without saving. |
| save | boolean | – | Save the model before exiting (only with close_etabs). |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_edit_table ~153
Edit a model table the way the Interactive Database editor does: read it, change/append/delete rows, then apply. Returns ETABS's import log with error and warning counts.
| Name | Type | Req | Description |
|---|---|---|---|
| append_rows | – | – | New rows (field key -> value); missing fields are left blank. |
| apply | boolean | – | Apply the edits to the model. False validates and cancels (dry run). |
| delete_where | – | – | Remove rows matching any of these field filters. |
| group | string | – | – |
| replace_rows | – | – | Replace the entire table with these rows. |
| table_key | string | yes | An editable table key (etabs_list_tables shows editable=true). |
| updates | – | – | Change fields on rows matching 'match'. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_export_model ~136
Export the whole model as ETABS's .e2k text and return it (paged). One read gives the complete definition (stories, grids, materials, sections, objects, assignments, loads, cases), ideal for audits.
| Name | Type | Req | Description |
|---|---|---|---|
| max_chars | integer | – | – |
| offset | integer | – | Character offset into the file, for paging. |
| path | – | – | Where to write the .e2k text file (default: next to the model). |
| sections | – | – | Only return these $-sections (prefix match), e.g. ['STORIES', 'FRAME ASSIGNS', 'LOAD PATTERNS']. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_find_objects ~196
Find objects by engineering criteria: 'columns on Story3', 'beams longer than 8 m', 'members with D/C over 0.9', 'everything in this box'. Returns names usable by every other tool; can select them.
| Name | Type | Req | Description |
|---|---|---|---|
| box | – | – | Only objects whose centroid lies inside this box. |
| group | – | – | Only objects assigned to this group. |
| kind | string | – | – |
| limit | integer | – | – |
| max_length | – | – | – |
| max_ratio | – | – | – |
| min_length | – | – | Frames at least this long (number in present units or e.g. '8 m'). |
| min_ratio | – | – | Frames whose design D/C ≥ this (needs design results). |
| role | – | – | Frames only, from geometry. |
| sections | – | – | Frame sections or area properties. |
| select | boolean | – | Also select the matches in ETABS (clears the current selection). |
| stories | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_generate_building ~366
Build a complete regular building in one call: grids, stories, materials, sections, columns, beams, braces or shear walls (with pier labels), slabs, fixed supports, a rigid diaphragm, SDL/LL patterns with slab loads, and default design combinations. Follow with lateral loads (etabs_define_seismic_load ...), then analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| bays_x | array | yes | Bay widths along X, e.g. ['8 m', '8 m', '6 m']. |
| bays_y | array | yes | Bay widths along Y. |
| beam_section | – | – | Steel: AISC16 shape (default W18X35). |
| beam_size | array | – | Concrete beam [depth, width]. |
| brace_section | – | – | Steel braced: AISC16 shape (default W10X33). |
| column_section | – | – | Steel: AISC16 shape (default W14X90). Concrete: ignored, use column_size. |
| column_size | array | – | Concrete column [depth, width]. |
| confirm | boolean | – | Required when the open model has objects: it is replaced. |
| diaphragm | boolean | – | – |
| live | – | – | Live area load in present force/length² units. |
| slab_thickness | – | – | – |
| story_heights | array | yes | Story heights bottom-up, e.g. ['4.5 m', '3.5 m', '3.5 m']. |
| superimposed_dead | – | – | SDL area load in present force/length² units (e.g. 1.5 for kN/m²). |
| system | string | – | Lateral system. Braces/walls go in the end bays of every perimeter frame line. |
| units | string | – | – |
| wall_thickness | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_get_concrete_design ~104
Concrete frame design results (after etabs_run_design(kind='concrete')): required longitudinal and shear reinforcement for beams, PMM ratios and areas for columns, joint shear and beam/column capacity ratios. Areas are in present units.
| Name | Type | Req | Description |
|---|---|---|---|
| element | string | – | – |
| envelope | boolean | – | One row per frame (governing station) instead of every station. |
| limit | integer | – | – |
| names | – | – | Only these frames. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_get_design_summary ~75
Design results per member: steel demand/capacity ratios with governing combo, or concrete required reinforcement for beams and columns. Worst members first.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | – |
| limit | integer | – | – |
| only_failing | boolean | – | Steel: only members with ratio > 1 or errors. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_get_results ~148
Read analysis results the way they appear in ETABS tables: base reactions, story drifts and forces, joint displacements/reactions, modal periods and mass ratios, element forces, piers and spandrels. For any other result table use etabs_get_table.
| Name | Type | Req | Description |
|---|---|---|---|
| group | string | – | – |
| limit | – | – | – |
| load_cases | – | – | Load cases to include. Omit both lists for every case and combination. |
| load_combinations | – | – | – |
| offset | integer | – | – |
| result | string | yes | Which result table to read. |
| where | – | – | Row filter, e.g. {'Story': 'Story2'} or {'OutputCase': 'Dead'}. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_get_slab_design ~64
Concrete slab design results (after etabs_run_design(kind='concrete_slab')): design-strip flexure and shear reinforcement, or punching shear checks at columns, worst first.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| part | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_get_stories ~30
Story table, top story first: name, elevation, height, master/similar settings.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
etabs_get_table ~173
Read any ETABS database table as rows (Display > Show Tables). Values with units are in present units.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | – | – | Only these field keys (default: all). |
| group | string | – | Only objects in this group ('' = all). |
| limit | – | – | – |
| load_cases | – | – | Result tables: load cases to show. Omit both lists for all cases and combinations. |
| load_combinations | – | – | – |
| numeric | boolean | – | Convert fields that carry units to numbers. |
| offset | integer | – | – |
| table_key | string | yes | Exact table key from etabs_list_tables, e.g. 'Story Drifts' or 'Frame Assignments - Section Properties'. |
| where | – | – | Keep rows whose fields equal these values, e.g. {'Story': 'Story3'}. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_get_wall_design ~81
Shear wall design results: piers (reinforcing ratio, D/C, boundary zones, messages) or spandrels (flexural and shear reinforcement), worst first. Run etabs_run_shear_wall_design first.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | – |
| label | – | – | – |
| limit | integer | – | – |
| story | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_instances ~100
List the ETABS instances this server drives, switch which one every other tool acts on, or remove one. Typical use: compare two design options side by side, or copy data from one model into another.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| close_etabs | boolean | – | 'remove' only: also exit that ETABS (needs confirm). |
| confirm | boolean | – | – |
| name | – | – | Instance for 'use' or 'remove'. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_job_status ~67
Status of a background job (analysis or design): running / done / failed, elapsed time, the tail of the ETABS analysis log while it runs, and the full result once done. Never blocks.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | – | – | Job id; omit for the most recent job. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_job_wait ~85
Wait for a background job to finish, up to timeout_seconds, then report it (same shape as etabs_job_status). Call again if it is still running.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | – | – | Job id; omit for the most recent job. |
| timeout_seconds | number | – | Give up waiting after this long (the job keeps running). Keep it under your client's tool timeout. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_list_checkpoints ~22
Checkpoints saved for the open model, newest first.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
etabs_list_installations ~34
List ETABS installations on this machine (v22+ are supported) and ETABS instances that are running now.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
etabs_list_load_definitions ~39
Load patterns (with type and self-weight multiplier), load cases (with type) and combinations (with their cases and scale factors).
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
etabs_list_objects ~107
List frames, areas or points with their geometry (in present units), sections and stories. ETABS 'name' is the unique name used by every API call; 'label' is what the GUI shows per story.
| Name | Type | Req | Description |
|---|---|---|---|
| include_labels | boolean | – | Add the label and story of each object (one extra call per object). |
| kind | string | yes | – |
| limit | integer | – | – |
| offset | integer | – | – |
| story | – | – | Only objects on this story. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_list_properties ~46
List materials (with type), frame sections (with shape and dimensions in present units) and area properties (slabs, decks, walls).
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_list_tables ~89
List ETABS database tables (definitions, assignments, analysis and design results), with whether each has data and whether it can be edited. Result tables appear after analysis/design.
| Name | Type | Req | Description |
|---|---|---|---|
| contains | – | – | Case-insensitive filter on the table key, e.g. 'drift', 'frame assign', 'material'. |
| include_empty | boolean | – | Include tables with no data in the current model. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_menu ~142
Use ETABS menu commands that have no API, exactly as a person would click them (through Windows UI Automation, no mouse). 'list' browses the menus; 'invoke' runs a command. Commands that open a dialog leave it open: check with etabs_screenshot and close it with etabs_dialogs.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| confirm | boolean | – | Required for 'invoke': menu commands can change or delete model data. Ask the user first. |
| path | – | – | Menu path, e.g. ['Design', 'Shear Wall Design'] to list, or ['Analyze', 'Check Model...'] to invoke. |
Structured output declared, but exposes no named fields.
No examples provided.
etabs_model_overview ~52
One-call summary of the open model: file, version, units, lock state, object counts, stories, load patterns/cases/combinations, materials, sections and groups. Start every task with this.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
etabs_new_model ~202
Start a new model (replaces the open one). Lengths are in the chosen units.
| Name | Type | Req | Description |
|---|---|---|---|
| bottom_story_height | – | – | Number in the new model's units or e.g. '6 m'. |
| confirm | boolean | – | Required when the current model has objects: it is replaced without saving. |
| grid_lines_x | integer | – | – |
| grid_lines_y | integer | – | – |
| number_of_stories | integer | – | – |
| spacing_x | – | – | Number in the new model's units or e.g. '6 m'. |
| spacing_y | – | – | Number in the new model's units or e.g. '6 m'. |
| template | string | – | blank = empty model; grid_only = grids + stories; steel_deck = grids, stories and a steel floor system. |
| typical_story_height | – | – | Number in the new model's units or e.g. '6 m'. |
| units | string | – | Units for the new model. |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the ETABS MCP server?
ETABS MCP runs locally as a PyPI package, launched with uvx etabs-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · etabs-mcp
claude mcp add moha2005269-etabs-mcp -- uvx etabs-mcp
What is the ETABS MCP server?
ETABS MCP is listed in the public MCP registry as io.github.Moha2005269/etabs-mcp. Agentic MCP server for CSI ETABS v22+: model, load, analyse, design and inspect structures. This page covers its PyPI package (etabs-mcp).
Is the ETABS MCP server safe to use?
ETABS MCP scores 60 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the ETABS MCP server expose?
ETABS MCP exposes 71 tools: etabs_list_installations, etabs_connect, etabs_instances, etabs_status, etabs_disconnect, and 66 more. Their descriptions and schemas cost roughly 7,484 tokens of context every time the server is loaded.
Is the ETABS MCP server still maintained?
ETABS MCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the ETABS MCP server under?
ETABS MCP declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.