FEMNet MCP Apps Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FEMNet MCP Apps ServerCreate a simply supported steel beam, run static analysis, and show the bending moment diagram"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FEMNet MCP Apps サーバー
FEMNet(C++ 製 FEM ライブラリの Python バインディング)を解析エンジンとして、 Claude Desktop のチャット画面内に vtk.js の 3D 構造ビューアを開く MCP Apps サーバー。
Agent はモデル定義・解析実行・表示切り替えをツール呼び出しだけで行う。 描画コードを毎回生成させないので、トークン消費と生成エラーを避けられる。
Claude Desktop ──stdio── server.py ── fem_core.py ── femnet (.pyd)
│ │
│ ui://fem/app.html └── fem_view.py ──┐ 表示メッシュを
│ (iframe) │ バイナリで配信
└──────── fetch http://127.0.0.1:8781/view ┘メッシュは数 MB になるため MCP の JSON-RPC には載せず、
UI(iframe)からローカル HTTP へ直接 fetch させる。
HTTP が塞がれた場合は fem_view_chunk ツールで MCP チャネル経由の分割取得にフォールバックする。
必要環境
項目 | 条件 |
OS | Windows(FEMNet のビルド成果物が Windows 向け) |
Python | 3.12 固定( |
パッケージ |
|
外部依存 | FEMNet のビルド済み |
ホスト | Claude Desktop(ローカル stdio 接続) |
.venv は uv が管理する。uv.lock をコミット済み。
Related MCP server: freecad-mcp
セットアップ
1. 依存の取得
uv sync2. FEMNet の場所を合わせる
femnet_env.py の 2 つの定数を自分の環境に書き換える。
FEMNET_PYTHON_DIR = Path(r"C:\...\StructureMM\lib\FEMNet\python") # _femnet.pyd のあるディレクトリ
MKL_DLL_DIRS = [Path(r"C:\Program Files (x86)\Intel\oneAPI\mkl\latest\bin"), ...].pyd は MKL の DLL に依存する。Python 3.8 以降は PATH を DLL 検索に使わないため、
os.add_dll_directory() での明示登録が必須(femnet_env.setup() が行う)。
3. Claude Desktop に登録
claude_desktop_config.json:
{
"mcpServers": {
"femnet": {
"command": "C:\Users\<user>\.local\bin\uv.exe",
"args": ["run", "--directory", "C:\path\to\MCPAppTest", "server.py"]
}
}
}command は絶対パスにする(GUI 起動の Claude Desktop は PATH 解決が不安定)。
設定変更後はトレイから完全終了して再起動する。
ツール
ツール | UI | 役割 |
| ● | 節点・材料・断面・要素・支持・荷重を JSON で一括定義し、形状を表示 |
| ● | 線形静解析 → 変形図+変位コンター |
| ● | 解析済み結果の表示切り替え(変形図 / 板応力コンター / 部材断面力図) |
| ● | 固有値解析 → モード形状アニメーション |
| 節点変位・反力・部材応力を数値で返す(Agent の考察用) | |
| UI 専用。表示メッシュを base64 で分割取得するフォールバック |
show_view の指定:
view="deformation"…component=mag/ux/uy/uzview="beam_diagram"…component=N/Qy/Qz/Mx/My/Mz(M 図ならMz、Q 図ならQy)view="plate_stress"…component=Mx/My/Mxy/Qx/Qy/Nx/Ny/Qxy
LLM が書きがちな別名(moment, 曲げ, axial など)は server.py 側で正規名に吸収している。
モデル定義
単位系は N-mm 系。
量 | 単位 | 例(鋼) |
長さ・座標 | mm | |
力 | N | |
モーメント | N·mm | |
ヤング係数 | N/mm² | 205000 |
密度 | kg/m³ | 7850 |
節点付加質量 | kg | |
分布荷重 | N/mm |
要素タイプ(ElementSpec.type):
type | 節点数 | 必須 |
| 2 |
|
| 2 |
|
| 3 |
|
| 4 |
|
支持は preset="fixed" / "pinned" か、ux…rz の個別フラグ(True = 拘束)。
固有値解析には質量が要る(材料の density か node_masses)。
スキーマの全体は fem_core.py の ModelSpec を参照。
ファイル構成
ファイル | 役割 |
MCP サーバー本体。ツール定義、UI リソース登録、起動 | |
モデル定義スキーマ(pydantic)と FEMNet 呼び出し・解析実行 | |
解析結果 → 表示メッシュ変換、バイナリ化、ローカル HTTP 配信 | |
| |
ビューア UI。起動時に JS バンドルを差し込んで単一リソースとして配信 | |
vtk.js のツリーシェイク済みバンドル(693 KB) | |
| |
経路検証に使った初期プロトタイプ。現在のサーバーからは参照していない |
ui/*.js はビルド成果物だがリポジトリに含める。これによりサーバー実行時は
Python / uv だけで完結し、Node はバンドル生成時のみ必要になる。
npm install --no-save @kitware/vtk.js
npx esbuild entry.js --bundle --format=iife --global-name=VTK --minify \
--define:process.env.NODE_ENV='"production"' --loader:.glsl=text --outfile=ui/vtk.js実装上の制約メモ
実機でしか判明しなかった、変更時に踏み抜きやすい点。
structuredContentは UI に届かない。 Claude Desktop はui/notifications/tool-resultでstructuredContentを落とし、contentの text(JSON 文字列)だけを渡す。UI 側は必ず両方を見る。ローカル HTTP への fetch は CORS だけでは通らない。 iframe は公開オリジン(https)で動くため
http://127.0.0.1への要求は Private Network Access の対象になる。Access-Control-Allow-Private-Network: trueと OPTIONS への応答が要る。CSP の宣言が必須で、ポート確定との順序制約がある。 localhost も
_meta.ui.cspのconnect_domainsに書く。ポート番号を含むので、HTTP サーバーを起動して ポートを確定させてからadd_html_resource(csp=...)を呼ぶ。バイナリのヘッダ長は 4 バイト境界に揃える。
new Float32Array(buffer, offset, ...)は offset が 4 の倍数でないとRangeErrorになる。JSON ヘッダは空白でパディングする。<script src="...">は使えない。 iframe の中には取得元サーバーが無い。load_ui()が HTML 内のプレースホルダにバンドルを差し込む。支持条件は要素生成より前に適用する。 このビルドの FEMNet は要素生成後の
Fix代入で 板要素の解が壊れる(単純支持板のたわみが 1/10 になるのを実測)。MassData.Massは質量ではなく重量 [N]。 材料densityも内部では単位体積重量 [N/mm³] として扱われる(質量行列でgで割られる)。fem_core.pyが kg / kg·m⁻³ から換算している。取得経路は二重化してある。 UI は
ontoolresult(push)でdata_urlを受け取り、 ローカル HTTP → 失敗時はfem_view_chunkの MCP 分割取得、の順に落とす。 CSP 違反はsecuritypolicyviolationで拾って画面に出す。
表示メッシュのバイナリ形式(FEM4)
"FEM4" | uint32 ヘッダ長 | JSON ヘッダ(4 バイト境界) |
verts f32×3V | tris u32×3T |
fields × (f32×3V) … 変位ベクトル場(静解析=1本、モード=モード数)
plate_components × (f32×T) … 三角形ごとの板応力(板由来でなければ NaN)
beam_values f32 × (B × components × stations) … 部材断面力ダイアグラム用スカラー(|u| や成分)は UI 側でベクトルから計算する。
変形倍率の変更は非変形座標と変位ベクトルを別に持つことで、再取得なしに反映される。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Real FEA on CAD parts: validated setups, stress, safety factor, natural frequencies
First strength app Claude can write to: plan training in chat, it lands in the app ready to log.
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
AI-callable calculators and engineering models with real formulas. No hallucinated math.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables Claude Desktop to control FreeCAD for 3D CAD modeling, including creating, editing, and deleting objects, executing Python code, and running FEM analyses.14MIT
- AlicenseAqualityDmaintenanceAllows controlling FreeCAD from Claude Desktop to create and edit 3D models using natural language commands.10MIT
- AlicenseNot gradedqualityBmaintenanceBridges Claude Desktop to the HOOPS AI WebAPI, enabling 3D CAD analysis and interactive model operations through natural language.MIT
- AlicenseNot gradedqualityCmaintenanceEnables Claude Code to interact with Abaqus FEM software for model generation, job submission, log monitoring, and result extraction from ODB files.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ymzkd/FEMNetMCPAppTest'
If you have feedback or need assistance with the MCP directory API, please join our Discord server