
ETABS MCP
io.github.Moha2005269由 GitHub 帳號 Moha2005269 發布v0.3.2更新於 Nov 8, 2026
Agentic MCP server for CSI ETABS v22+: model, load, analyse, design and inspect structures.
概覽
讓 AI 助理透過官方 ETABS API 驅動 CSI ETABS v22+,完成建模、載重、分析、設計與結構檢查。
- 可以做什麼
- 管理 ETABS 工作階段:列出安裝、連線、查看狀態、中斷連線,並可同時操作多個實例。
- 建模與編輯:樓層、軸網、構架、面物件、點、斷面、材料、支承,並可一次呼叫產生整棟建築。
- 定義載重與抗側力系統:載重模式、組合、ASCE 7 地震與風載重、反應譜、質量源、剛性樓版。
- 執行分析與設計,讀取結果、D/C 比、混凝土與剪力牆設計,以及層間位移、不規則性等規範檢核。
- 讀寫互動式資料庫表格,渲染或截取視圖,匯出 .e2k 模型與 Markdown 設計報告。
- 以純 JSON 搜尋、描述並呼叫約 1,300 個 ETABS API 方法,支援批次呼叫。
- 適用情境
- 適合在 Windows 上已安裝合法授權 ETABS 的環境,讓助理產生並反覆調整建築模型、執行分析與規範檢核,或把原本在圖形介面中手動完成的重複性 ETABS 工作自動化。
- 執行需求
- Windows 桌面環境,已安裝並授權的 ETABS 22 或更新版本,Python 3.10+ 與 .NET 8 Desktop Runtime(隨 ETABS 22+ 安裝);可從 PyPI 安裝或以 uvx 執行。選用環境變數如 ETABS_MCP_CONNECT_MODE、ETABS_MCP_READ_ONLY、ETABS_MCP_TOKEN 可設定連線、安全與 HTTP 驗證。長時間分析可能需要調高用戶端的工具逾時。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 ETABS MCP,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Rendered from a live ETABS 23 session: every member, deflection and D/C ratio is real. MP4
etabs-mcp
Your AI agent, inside ETABS.
An agentic Model Context Protocol server for CSI ETABS v22+. Claude Code, Codex, Factory Droid, Cursor and any other MCP client can model, load, analyse, design and inspect structures the way an engineer does, through the official ETABS API, with every call checked against the real signatures.
[Python] [ETABS] [MCP] [Tests] [License: Apache-2.0]
Quick start · Tools · How it works · Testing · Configuration
Why
ETABS has a huge automation API: 143 interfaces, 1,293 reachable methods, 58 enums. It's also full of
ref arrays, status codes and silent quirks. Agents should be designing buildings, not wrestling with COM marshalling.
etabs-mcp gives agents two layers:
Highlights
Quick start
Requirements: Windows · ETABS 22 or newer (licensed) · Python 3.10+ · the .NET 8 Desktop Runtime (installed with ETABS 22+).
Install from PyPI:
Or run it without installing, using uv:
Claude Desktop, one click: download etabs-mcp-<version>-py3XX.mcpb for your Python version from the
latest release and open it. Claude Desktop installs
the extension with every dependency bundled.
Check that it finds ETABS:
Connect your agent
Claude Code
Analyses can take minutes on big models; raise the tool timeout with MCP_TOOL_TIMEOUT=600000.
OpenAI Codex
~/.codex/config.toml
Factory Droid · Cursor · Claude Desktop · Windsurf · any MCP client
HTTP (remote agents, multiple clients)
Then just ask:
"Model a 2-storey steel frame, 2×1 bays of 6 m × 5 m, W14X90 columns, W18X35 beams, 200 mm slab. Apply 1.5 kPa SDL and 3 kPa live, run the analysis, report T₁, wind drift and the worst steel D/C ratio, and show me the 3D view."
The server connects on its own: it attaches to a running ETABS, or launches one.
71 tools
Plus resources (etabs://api/interfaces, etabs://api/interface/{name}, etabs://api/enum/{name},
etabs://server/info) and a prompt (etabs_build_and_check) that walks an agent through the full workflow.
Example: anything the curated tools don't cover
What the agent sees
The film above is cut from one recorded session. An agent built a 6-storey, 4×3-bay braced steel building
through etabs-mcp, analysed it, ran the AISC 360-16 check, found 48 overstressed girders, upsized them,
and re-ran everything until no member was over capacity.
etabs_render_view
The agent's own view of the model, drawn from its data. It works with ETABS hidden, never takes focus, and shows what the ETABS API cannot switch the GUI to.
[The same model in the real ETABS window, captured by etabs_screenshot]The same model in ETABS itself, captured by the agent with etabs_screenshot.
How it works
Reverse-engineering the API, not ETABS. This server stays on the official, documented OAPI and never patches or decompiles the ETABS engine. Its API surface was mapped from the shipped interop assembly:
- REA static metadata analysis of
ETABSv1.dll: 365 types, 3,275 method defs, 14,752 parameters. - A reflection dumper (
tools/ApiDump) emits every public interface, signature, ByRef flag, default and enum intoetabs_api_spec.json. - Cross-check: reflection and raw metadata agree exactly (e.g.
cFrameObj+cAnalysisResults+cDatabaseTables= 136 methods + 1 property accessor = REA's 137). - At runtime the server re-reflects the loaded DLL, so validation always matches the ETABS you run.
Engineering details that make it "just work":
- Typed marshalling. pythonnet boxes Python
intasPyIntinsideobject[], which reflection rejects forInt32. Every argument is routed through a one-element typed array andArray.Copy, so ETABS gets realInt32/Double/enum boxes and ByRef arrays. - One thread. ETABS and COM proxies aren't thread-safe; every call is serialised on a single worker.
- Lost connections (ETABS closed or crashed) are detected from HRESULTs and reported with a reconnect hint.
- ETABS quirks handled:
- Library imports that ETABS silently renames (
W14X90→W14X90-1) are detected and renamed back. - After table edits, ETABS reports the model file as the temporary
.$et; saving is mapped back to.EDB. - Unitless result columns (drift ratios, mass ratios) are turned into numbers, while IDs like
Label: "1"stay strings. - GPU-drawn viewports are blank to
PrintWindow, so screenshots come from the composed screen and focus is handed back afterwards.
- Library imports that ETABS silently renames (
Tested against real ETABS
Offline (CI): 58 tests. Every curated tool runs through FastMCP against a fake backend that resolves and
coerces every call against the real ETABSv1.dll catalog. A wrong method or parameter name fails exactly as it
would in ETABS.
Live end-to-end: tests/live/test_live_e2e.py starts the server as a real
MCP subprocess, launches ETABS 23.3.2, and runs 42 tool calls with 0 failures in ~42 s:
Live v0.2 suite: tests/live/test_live_v2.py drives every new tool against
ETABS on a 3-storey, 63-member model:
Live v0.3 suite: tests/live/test_live_v3.py:
Showcase run (tools/record_demo_data.py): a 6-storey braced steel building,
354 members and 72 slabs. LL ΣFz = 9,720 kN (= 3 kPa × 30 m × 18 m × 6 floors, exact), wind ΣFx = 432 kN
(= 18 kN × 24 joints, exact), T₁ = 1.71 s. The redesign loop took max D/C from 1.22 to 0.91.
Configuration
Publishing (maintainers)
Tagging vX.Y.Z runs release.yml, which tests, builds the wheel, sdist and
.mcpb bundles, and publishes the GitHub release. PyPI and the MCP Registry use tokenless trusted publishing:
add a trusted publisher on pypi.org (this repo, workflow release.yml, environment pypi), then set the
repository variable PUBLISH_PYPI=true. Later tags publish to PyPI and list the server in the MCP Registry.
Version support
Safety model
Menu commands run through etabs_menu need confirm=true as well, and over HTTP every request must carry the
bearer token.
Project layout
Troubleshooting
install_not_found: runetabs-mcp --list-installs; setETABS_MCP_INSTALL_DIRif ETABS lives somewhere unusual.- Attaching does nothing: wait until ETABS has finished starting and close any modal dialogs; or pass
pidtoetabs_connect. - Edits fail after analysis: the model is locked.
etabs_unlock_model(confirm=true)deletes results and unlocks it. - Long analyses time out in the client: raise the client's MCP tool timeout (see Connect your agent).
- Switching ETABS major versions: restart the server; one process hosts one
ETABSv1.dll.
Apache-2.0 © Moha2005269 · ETABS is a trademark of Computers and Structures, Inc. This project is independent and not affiliated with or endorsed by CSI.
來源:README.md,提交 288df2b
工具
0版本歷史
1- v0.3.2最新Oct 18, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分