FEA (finite element analysis)

io.github.TheRoboMaster123由 GitHub 帳號 TheRoboMaster123 發布v1.0.0更新於 Oct 25, 2026

Real FEA on CAD parts: validated setups, stress, safety factor, natural frequencies

已驗證Streamable HTTP可網頁執行開發者工具資料與分析

概覽

AI 產生的概覽

遠端 MCP 伺服器,對 STEP CAD 零件執行真實的有限元素分析,回傳應力、安全係數、變形與自然頻率。

可以做什麼
檢查 STEP 零件,取得面表、包圍盒與體積,方便把負載與拘束對應到面 ID,並列出內建材料庫的彈性參數與降伏強度。提交線性靜力分析,經驗證、網格劃分與求解後回傳峰值 von Mises 應力、安全係數、變形、應力圖與 3D 檢視器資料。提交模態分析,取得自然頻率、振型及誇大變形圖。讀取已完成工作的完整報告,可選擇包含表面網格資料。
適用情境
適合在對話中對單一實體 CAD 零件做快速工程確認,例如某個支架在給定負載下是否安全,或其一階自然頻率是多少,而不必自行架設求解器。
執行需求
遠端 streamable HTTP 端點,無需本機安裝。需要營運方簽發的 bearer 權杖,透過 Authorization 標頭傳送。STEP 檔案須小於 25 MB 且為單一實體。需能連線至託管端點。
安裝前請注意
Authorization bearer 權杖屬於機密,必須妥善保管。每次分析都在營運方的 Modal 部署上耗用算力並計費,因此有速率、並行與每日預算限制。結果僅為線性靜力或模態分析,反應平衡檢查未通過時會標記為不可信;超過降伏與大變形僅是警告,不能視為已驗證設計。上傳的 CAD 幾何會傳送至第三方託管服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 FEA (finite element analysis),將其新增到工作區。
  2. 連接 Authorization token 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.TheRoboMaster123%2Fmcp-fea/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "fea-finite-element-analysis": {
      "type": "http",
      "url": "https://therobomaster123--mcp-fea-mcp-endpoint.modal.run/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

mcp-fea

[ci] [validation] [license] [MCP]

Real finite element analysis from a conversation. An AI assistant sends a STEP file and a plain-English question ("does this arm survive a 6 g maneuver with a 400 g motor?"); this MCP server maps the words onto geometry, rejects bad setups deterministically before any compute is spent, meshes and solves with CalculiX on Modal as an async MCP task, and returns a verdict backed by numbers — peak von Mises stress, factor of safety, deflection, natural frequencies — plus rendered stress plots and an interactive 3D viewer. Every study ends with a non-skippable reaction-balance check; every benchmark on the validation page is regenerated by CI on every commit.

[mode 1 animation]

Measured on the live deployment (2026-07-31): cold start 3.8 s · cantilever study submit→completed 9.3 s warm / 12.9 s with a cold solver container · ~$0.002 per study at Modal's posted rates.

BenchmarkReferenceComputedError
Cantilever tip deflection (PL³/3EI)0.58055 mm0.58046 mm0.02%
NAFEMS LE10 σ_yy @ D−5.38 MPa−5.456 MPa1.41%
Plate-with-hole peak (Heywood Kt)62.8 MPa61.92 MPa1.40%
Cantilever f₁ (Euler–Bernoulli)816.0 Hz815.4 Hz0.08%

Full table, mesh stats, and an explicit limitations section: docs/validation.md — regenerated by CI, never hand-edited.

Protocol: MCP 2026-07-28 (stateless core) with the io.modelcontextprotocol/tasks extension implemented per SEP-2663 (the official Python SDK v2 shipped without it — this repo also contains the client-side extension that teaches the official SDK to consume task-augmented servers) and an MCP Apps (SEP-1865) 3D viewer. See docs/decisions.md for every engineering call and why.

Deploy (3 commands)

bash
uv syncuv run modal secret create mcp-fea-token MCP_FEA_TOKEN=$(openssl rand -hex 24)uv run modal deploy -m src.server.modal_app

Modal prints the endpoint URL (https://<workspace>--mcp-fea-mcp-endpoint.modal.run). Connect any 2026-07-28 MCP client with Authorization: Bearer <your token>. First-time Modal users: uv run modal token new once. Then verify the live deployment end to end:

bash
MCP_FEA_LIVE_URL=https://... MCP_FEA_TOKEN=... make verify-live

Tools

ToolSync/asyncWhat it does
inspect_geometrysyncSTEP → face table (face_id, type, centroid, normal/axis, area, bbox) + part bbox/volume. Call first: it's how English maps to face ids.
list_materialssyncBuilt-in library: Al 6061-T6, Al 7075-T6, Steel 4140, Stainless 304, Ti-6Al-4V, ABS, PLA, Nylon 12, PC (E, ν, yield, density).
submit_fea_studytaskLinear static: validate → mesh (C3D10, curvature-adaptive, local thin-wall refine) → CalculiX → verdict/stress/FoS + 3 stress PNGs.
submit_modal_studytaskNatural frequencies + mode shapes (*FREQUENCY), first N modes (default 6), one exaggerated-deformation PNG per mode. Requires constraints and density.
get_reportsyncFull payload for a completed task; include_mesh_data: true adds the surface-mesh payload the 3D viewer app fetches.

Task lifecycle: working (statusMessage walks validating → meshing → solving → postprocessing) → completed | failed | cancelled; tasks/cancel kills the running container. Tasks are retained 24 h.

Units policy

One conversion boundary, at ingest. Internally everything is consistent mm–N–MPa(–tonne): lengths mm, forces N, stress/moduli MPa, density tonne/mm³ (kg/m³ × 1e-12 — done once, in Material.density_tonne_mm3), which makes modal frequencies come out directly in Hz. STEP coordinates are interpreted in the declared units (mm|m|in); gmsh's own unit conversion is disabled so the declared unit is authoritative — and sanity-checked (a 100 mm part declared "m" gets flagged).

Validation codes

Every rejection returns {code, message, suggested_fix}.

CodeMeaningStage
GEOMETRY_REF_INVALIDSTEP missing/unreadable/over 25 MB, bad units fieldparse
GEOMETRY_KERNEL_CRASH / GEOMETRY_TIMEOUTCAD kernel crashed / hung on the file (isolated subprocess; endpoint unaffected)inspect
MATERIAL_UNKNOWN / MATERIAL_UNPHYSICALNot in library / E ∉ [0.01, 1500] GPa, ν ∉ (0, 0.5), yield ≤ 0, density ∉ [10, 25000] kg/m³, missing density for modalparse
CONSTRAINT_INVALID / CONSTRAINT_CONFLICTBad type; node pinned in two local framesparse/deck
LOAD_INVALID / LOAD_MISSING / MODAL_INVALIDBad type/units/direction; zero loads; bad n_modesparse
GEOM_NO_SOLID / GEOM_MULTIPLE_SOLIDSNot a single solid body (assemblies = v2)pre-mesh
FACE_ID_INVALIDFace id not on this partpre-mesh
RIGID_BODY_MOTIONConstraints leave free motion (named, e.g. "rotation about the hole axis") — SVD rank checkpre-mesh
LOAD_ON_FIXED_FACELoad applied to a fully fixed facepre-mesh
UNITS_SUSPECT (warning)Part > 5 m or < 0.5 mm — declared units probably wrongpre-mesh
LOAD_MAGNITUDE_EXTREME / _NEGLIGIBLE (warnings)σ ≈ F/A > 10× yield or < 1e-6× yieldpre-mesh
MESH_ELEMENT_CAP> 400k elements even after coarsening / local refinemesh
MESH_QUALITY_JACOBIAN / MESH_QUALITY_ASPECT / MESH_THIN_WALLSQuality gates; thin walls get one local auto-refine firstmesh
MESH_TIMEOUTMeshing exceeded its wall budget (near-tangent slivers, helical threads) — the worker is killed from outsidemesh
SOLVER_SINGULAR / SOLVER_MESH_DEGENERATE / SOLVER_TIMEOUT / SOLVER_FAILEDMapped ccx failures (>150k elements auto-switch to the iterative solver)solve
EQUILIBRIUM_FAIL (warning, untrusted result)ΣRF vs free-node applied loads off by > 0.5%post
LOAD_INTO_SUPPORT (warning)> 5% of the load lands on constrained nodes (loaded face touches a fixed face) and is carried directly by the supportpost
BEYOND_YIELD / LARGE_DEFLECTION (warnings)FoS < 1 (post-yield numbers flagged non-physical) / u > 5% of min dimensionpost

Abuse limits (all env-tunable)

25 MB STEP cap · 40 MB request cap (413) · per-token rate limit (MCP_FEA_RATE_LIMIT/_WINDOW_S, 429) · concurrent-solve cap (MCP_FEA_MAX_CONCURRENT) · daily budget (MCP_FEA_MAX_SPAWNS_PER_DAY) · kill switch (MCP_FEA_DISABLE_SPAWN=1). CAD parsing never runs in the endpoint process (see SECURITY.md).

Local development

bash
uv synccurl -Ls https://micro.mamba.pm/api/micromamba/osx-arm64/latest | tar -xj bin/micromamba./bin/micromamba create -y -p .tools/ccx-env -c conda-forge calculix=2.23make test        # fast suite (protocol, benchmarks, validation, hardening)make torture     # 21 real-world STEP files through the endpointmake validation-pageuv run uvicorn --factory src.server.app:create_local_app --port 8000  # local server

Repo map

src/pipeline/ geometry, meshing, deck, solver, validation, post, render · src/materials/ library · src/server/ protocol, tools, tasks, limits, worker host, Modal app, Apps UI · src/client/ SDK tasks extension · tests/ (incl. torture/) · demo/ · docs/ decisions, validation, upstream notes. License: Apache-2.0.

來源:README.md,提交 f11fe6a

工具

0
該伺服器需要 API 金鑰等憑證,因此 SourceWeft 無法在沒有憑證的情況下讀取其工具,也未收錄。

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 85%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分