ツール一覧
公開されている MCP ツールは以下の 6 個です。
model_query
節点・部材・断面・壁版・床板・床領域・壁領域・二次部材を検索します。
| 引数 | 型 | 必須/任意 | 意味 |
|---|---|---|---|
kind | String | 必須 | "node"/"nodes"、"member"/"members"/"element"/"elements"、"section"/"sections"、"wall_plate"/"wall_plates"、"slab"/"slabs"、"floor_region"/"floor_regions"、"wall_region"/"wall_regions"、"unassigned_joist"/"unassigned_joists"、"unassigned_post"/"unassigned_posts"、"secondary_joist"/"secondary_joists" のいずれか。それ以外は空配列を返す |
filter | Option<String> | 任意 | 各アイテムを JSON 文字列化した内容に対する部分一致フィルタ |
返り値:
{ "items": [ /* 検索結果の JSON オブジェクト配列 */ ] }
node:{ "id", "coord", "story" }member/element:{ "id", "kind", "nodes", "section", "material" }。部材付帯情報(ハンチ・継手位置)があればhaunch_i/haunch_j(length/depth_increase/width_increase)とjoints(distance/kind)を追加。入力モデルに保存されている部材だけを返す(壁版から都度生成する耐震壁は含まない。壁はkind=wall_plateで照会する)section:{ "id", "name", "area", "iy", "iz" }wall_plate:{ "id", "shape", "section", "opening_area", "opening_weight", "slit", "openings", "loads", "becomes_element" }。slitは{ "column_face": [bool, bool], "beam_face": [bool, bool] }(耐震スリット。梁際は 0 が下辺、1 が上辺)、loadsは仕上げ・増打ちの面荷重 [N/mm²](躯体の自重は含まない)、becomes_elementはその壁版から壁エレメントが生成されるか。shape.kindは"Enclosed"(boundary)または"Attached"(anchor・extent・resolved_extent)。extentは入力値そのものでnullは階高いっぱいを表し、resolved_extentは階レベルから解決した高さ(nullは直上に階が無く解決できない。解析前チェックが止める)slab:{ "id", "shape", "section", "loads", "usage", "method", "one_way" }。shapeは壁版と同じく"Enclosed"/"Attached"floor_region:{ "id", "name", "boundary", "slab_ids", "secondary_joists" }。secondary_joistsは所属小梁の実体配列wall_region:{ "id", "name", "boundary", "wall_plate_ids", "posts" }。postsは所属間柱の実体配列unassigned_joist/unassigned_post: どの領域にも入らなかった二次部材の配列secondary_joist: 領域内と未割当を合わせた小梁の実体配列
model_edit
モデルを編集します。GUI と同じ EditCommand と Undo 履歴を使います。引数は command キーで種別を指定する JSON オブジェクトです(トップレベルに command を置く)。{ "body": { "command": "...", ... } } という入れ子も受け付けます。
返り値:
{ "op_id": "op-1", "applied": true, "undoable": true, "summary": "..." }
appliedがfalseのときは、参照検証などでコマンドが Noop になった(モデルは変わらない)- 節点・部材・荷重・断面そのものの追加削除など、下表にない
EditCommandは未対応(エラー)
壁版(7)
command | 必須 | 任意と既定 |
|---|---|---|
AddEnclosedWallPlate | boundary(ちょうど 4 節点。重複不可) | section(既定 null)、opening_area(既定 0)、opening_weight(既定 0) |
AddAttachedWallPlate | anchor | extent(2 要素 [mm]。省略または null で階高いっぱい。自立壁のみ)、section(既定 null)、opening_area(既定 0)、opening_weight(既定 0) |
DeleteWallPlate | id | — |
SetWallPlateSection | id | section(null で未割当) |
SetWallPlateAttrs | id | opening_area(既定 0)、opening_weight(既定 0)、openings(既定 [])、loads(仕上げ・増打ちの面荷重。既定 [])、slit({ "column_face": [bool, bool], "beam_face": [bool, bool] }。片方のキーだけでも可。既定は 4 辺とも false) |
SetAttachedWallPlateExtent | id | extent(省略または null で階高いっぱい。自立壁のみ) |
SetAttachedWallPlateAnchor | id、anchor | — |
囲まれた壁版の例:
{
"command": "AddEnclosedWallPlate",
"boundary": [0, 1, 2, 3],
"section": null,
"opening_area": 0.0,
"opening_weight": 0.0
}
取付き先 anchor が線のときの形(nodes は取付き梁の 2 節点、span は梁全長に対する無次元区間):
{
"Line": { "nodes": [0, 1], "span": [0.0, 1.0], "transfer": "Anchor" }
}
床板(8)
command | 必須 | 任意と既定 |
|---|---|---|
AddSlab | boundary(3 節点以上) | loads(既定 [])、method(既定 "TriTrapezoid")、usage(既定 null)、section(既定 null) |
AddAttachedSlab | anchor、extent | 版仕様はフラット引数(section/loads/usage/method/one_way)か plate オブジェクト。method 未指定は "TriTrapezoid"。loads 未指定は [] |
DeleteSlab | id | — |
SetSlabSection | id | section(null で未割当) |
SetSlabUsage | id | usage(null で積載荷重なし) |
SetSlabOneWay | id | one_way(null で境界辺 0・2 が負担) |
SetAttachedExtent | id、extent | — |
SetAttachedAnchor | id、anchor | — |
AddAttachedSlab のフラット引数の例:
{
"command": "AddAttachedSlab",
"anchor": { "Line": { "nodes": [0, 1], "span": [0.0, 1.0], "transfer": "Anchor" } },
"extent": [1000.0, 1000.0],
"section": 0
}
床領域(3)
command | 必須 | 任意と既定 |
|---|---|---|
SetFloorRegionName | id、name | — |
SetFloorRegionSecondaryJoists | floor_region(別名 id)、secondary_joists(SecondaryMember の配列。空にするときは []。空にすると旧所属は未割当へ移る) | — |
secondary_joists を省略するとエラーになります(欠落を空配列とみなしてリストを消すことはしません)。SetFloorRegionJoists・SetSlabSecondaryJoistIds、およびキー secondary_joist_ids / ids は受け付けずエラーになります。
未割当二次部材(4)
command | 必須 | 任意と既定 |
|---|---|---|
AddUnassignedJoist | joist(SecondaryMember) | — |
DeleteUnassignedJoist | index | — |
AddUnassignedPost | post(SecondaryMember) | — |
DeleteUnassignedPost | index | — |
同じ端点の小梁・間柱が既にあるときは適用されず applied: false になります。
壁領域(1)
command | 必須 | 任意と既定 |
|---|---|---|
SetWallRegionPosts | wall_region(別名 id)、posts(SecondaryMember の配列。空にするときは []) | — |
posts を省略するとエラーになります。壁領域の新規作成・削除は公開していません(準備計算が壁領域を作り直すため)。
床領域の新規作成・削除は公開していません(準備計算が床領域を作り直すため)。
quantity_takeoff
数量積算(コンクリート体積・型枠面積・鉄筋/鉄骨重量の概算)を集計します。
| 引数 | 型 | 必須/任意 | 意味 | 既定値 |
|---|---|---|---|---|
group_by | Option<String> | 任意 | "category"(部位別)/"story"(階別)/"steel"(鉄骨種類別)/"rebar"(鉄筋径別)/"detail"(明細) | "category" |
返り値:
{ "rows": [ /* group_by に応じた行 */ ], "totals": { "concrete_m3": .., "formwork_m2": .., "rebar_t": .., "steel_t": .., "rebar_joints": .. }, "notes": [ /* 注記 */ ] }
rows の形は group_by により異なります。
group_by | 行の形 |
|---|---|
category(既定) | { category, concrete_m3, formwork_m2, rebar_t, steel_t, rebar_joints } |
story | { story, concrete_m3, formwork_m2, rebar_t, steel_t, rebar_joints } |
steel | { section, length_m, weight_t } |
rebar | { dia_mm, length_m, weight_t } |
detail | { elem, slab, label, story, category, structure, concrete_m3, formwork_m2, rebar_t, steel_t, rebar_joints } |
数量の算定式は計算根拠 10. 数量積算を参照してください。
analysis_run
解析を非同期で実行し、ジョブを登録して job_id を即座に返します(計算完了は待ちません)。
| 引数 | 型 | 必須/任意 | 意味 | 既定値 |
|---|---|---|---|---|
kind | JobKind | 必須 | LinearStatic/Eigen/Pushover/TimeHistory/DesignCheck/UltimateCheck(質点系は含まれません) | — |
load_case | Option<u32> | 任意 | LinearStatic/DesignCheck/UltimateCheck: 対象荷重ケース ID | 先頭の荷重ケース |
n_modes | Option<usize> | 任意 | Eigen: モード数 | 3 |
dir | Option<String> | 任意 | Pushover/TimeHistory: 加力・入力方向。"X"/"Y" 以外はエラー | "X" |
steps | Option<usize> | 任意 | Pushover: 最大ステップ数 | 50 |
max_disp | Option<f64> | 任意 | Pushover: 目標変位 [mm]。未指定なら目標層間変形角のみで判定 | なし |
max_drift_denom | Option<f64> | 任意 | Pushover: 目標最大層間変形角の分母 n(角度 1/n)。max_disp と両方指定した場合は早く達した方で終了 | 150(max_disp 未指定時) |
dt | Option<f64> | 任意 | TimeHistory: サンプル波の時間刻み [s] | 0.01 |
duration | Option<f64> | 任意 | TimeHistory: サンプル波の継続時間 [s] | 2.0 |
period | Option<f64> | 任意 | TimeHistory: サンプル波の周期 [s] | 0.5 |
amp | Option<f64> | 任意 | TimeHistory: サンプル波の振幅 [mm/s²] | 1000 |
z | Option<f64> | 任意 | 荷重自動同期: 地域係数 Z(令88条) | 1.0 |
soil | Option<String> | 任意 | 荷重自動同期: 地盤種別。"I"/"II"/"III" 以外はエラー | "II" |
c0 | Option<f64> | 任意 | 荷重自動同期: 標準せん断力係数 C0 | 0.2 |
ai_mode | Option<String> | 任意 | 荷重自動同期: Ai 算定法。"Approx"/"SemiPrecise" 以外はエラー | "Approx" |
design_period | Option<f64> | 任意 | 荷重自動同期: 精算時の設計用基本周期 T [s]。ai_mode="SemiPrecise" かつ未指定なら EX/EY を同期しない | なし |
返り値:
{ "job_id": "job-0" }
kind ごとに使用するパラメータと概略処理:
kind | 使用パラメータ | 処理概要 |
|---|---|---|
LinearStatic | load_case, z, soil, c0, ai_mode, design_period | 指定/先頭の荷重ケースで線形静解析(解析前に荷重自動同期) |
Eigen | n_modes, z, soil, c0, ai_mode, design_period | 固有値解析(周期・刺激係数・有効質量。解析前に荷重自動同期) |
Pushover | dir, steps, max_disp, max_drift_denom(解析前同期: z, soil, c0, ai_mode, design_period) | 増分解析(プッシュオーバー解析)。水平載荷の Ai 分布は solver 側で略算 T・Z=1・地盤 II・C0=0.2 固定。地震引数は階重量・EX/EY の同期にのみ効く。結果ストアには書かずサマリ JSON のみを返す |
TimeHistory | dir, dt, duration, period, amp, z, soil, c0, ai_mode, design_period | サンプル波(amp * sin(ωt) * e^{-0.3t})による時刻歴応答解析。減衰は剛性比例減衰(h=0.02、1 次固有振動数使用)固定(解析前に荷重自動同期)。結果ストアには書かずサマリ JSON のみを返す |
DesignCheck | load_case, z, soil, c0, ai_mode, design_period | 荷重ケースの線形静解析結果に対する断面検定(鋼/RC 許容応力度、危険断面位置基準)。検定条件は荷重ケース種別で決まる(地震・風は短期、それ以外は長期)。地震時短期は重力ケースを別途解析して長期内力を重ね、Q0 も算定する(重力の再解析に失敗した分は gravity_failed に件数を載せ、成功分だけで組む)。付着は Rc1999、QD は既定方式、一本部材は未対応。検定結果自体はサマリ JSON のみに入り、結果ストアには断面力のみを書く |
UltimateCheck | load_case, z, soil, c0, ai_mode, design_period | RC 部材の終局せん断・付着・軸余裕度、CFT 柱の軸終局検定(靭性保証型耐震設計指針)。QL・Q0 は設定しない。結果ストアには書かずサマリ JSON のみを返す |
Done の result_ref(サマリ JSON)には、解析結果に加え、前処理の注意事項があれば notices 配列が付きます。たとえば ai_mode="SemiPrecise" かつ design_period 未指定のときは EX/EY を同期せず、その旨が notices に入ります(ジョブ自体は完了します)。
analysis_status
ジョブの状態を取得します。
| 引数 | 型 | 必須/任意 | 意味 |
|---|---|---|---|
job_id | String | 必須 | analysis_run が返した ID |
返り値:
{ "id": "job-0", "kind": "LinearStatic", "status": { /* Queued | Running{progress} | Done{result_ref} | Failed{error} */ } }
statusは次のいずれかの形を取ります。"Queued"(ジョブ登録直後の内部状態。通常はanalysis_runがすぐに実行を開始するため、ポーリングではほとんど見えません){ "Running": { "progress": 0.0 } }{ "Done": { "result_ref": "<サマリ JSON 文字列>" } }{ "Failed": { "error": "<エラーメッセージ>" } }
job_idが存在しない場合はエラー(invalid_params)。
result_get
解析結果ストアから結果を取得します。
| 引数 | 型 | 必須/任意 | 意味 |
|---|---|---|---|
case | u32 | 必須 | 荷重ケース ID(Eigen の結果は case=0 固定) |
kind | String | 必須 | "NodalDisp"/"MemberForce"/"Modal"/"TimeHistory" のいずれか |
node_ids | Option<Vec<u32>> | 任意 | 節点 ID での絞り込み |
member_ids | Option<Vec<u32>> | 任意 | 部材 ID での絞り込み |
step_range | Option<Vec<u64>> | 任意 | [start, end) のちょうど 2 要素。それ以外はエラー |
返り値:
{ "case": 1, "kind": "NodalDisp", "rows": [ /* 明細行 */ ], "truncated": false }
(case, kind) の組が結果ストアにない場合はエラーになります(analysis_run を先に実行する必要があります)。
各 kind の列構成は解析ジョブのフローと結果ストアを参照してください。