mcp-server-solidworks について
SolidPilot(リポジトリ名 mcp-server-solidworks)は、AI モデルが SolidWorks の API メソッドを個別に呼び出すのではなく、フィーチャー単位で操作できるようにする MCP サーバーです。ユーザーの意図を CAD 非依存の Feature Graph IR に変換し、決定的コンパイラで SolidWorks の操作に展開します。対象バージョンは SolidWorks 2026 SP3 です。
主な機能
- 01フィーチャー単位の CAD 操作の抽象化
- 02CAD 非依存の Feature Graph IR
- 03順序付けされた SolidWorks 操作を生成する決定的コンパイラ
- 04DXF・DWG 図面からのソリッド部品の再構築
- 05体積とトポロジーの比較による結果検証
活用シーン
- 01DXF・DWG 図面から SolidWorks の部品を再構築する
- 02rebuild_from_ir で既存の部品やアセンブリを再現する
- 03AI クライアントが少ないツール呼び出しでモデリングを行う
MCP 対応
本プロジェクトは MCP サーバーであり、低レベルのモデリングツールや rebuild_from_ir などを MCP クライアントが呼び出します。手順のガイダンスはリソースとして提供されます。MCP はアダプター層にあり、他の層は特定のクライアントに依存しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SolidPilot
SolidWorks 向けの AI 駆動 CAD 自動化 — MCP(Model Context Protocol)サーバーです。
SolidPilot を使うと、AI モデルが SolidWorks をCAD フィーチャーレベルで操作できます。目指しているのは、モデルが「どの API メソッドを呼び出せばよいか」ではなく、「どの CAD 設計意図を実現しているのか」という観点で推論することです。設計意図は CAD に依存しない中間表現に変換され、決定論的なコンパイラーによって、具体的な SolidWorks 操作へと変換されます。
SolidPilot はClaude 専用のプラグインではありません。SolidWorks と AI をつなぐ汎用ブリッジです。 MCP はオープン標準であるため、MCP に対応したあらゆる AI クライアントが接続できます。Claude に加え、OpenClaw、OpenAI ベースのエージェント、ローカル LLM も対象です。この拡張性を考慮したアーキテクチャは、当初から設計されています。実行レイヤーとプランナーレイヤーは、どのクライアントから呼び出されているかを認識しません。クライアントごとの薄いアダプターが、共有ブリッジコアを再利用します。現在の実装は adapters/claude/ です。新しい AI クライアントへの対応には、新しいアダプターを追加するだけです。
リポジトリ:
mcp-server-solidworks· 公開名:SolidPilot · 対象バージョン:SolidWorks 2026 SP3
コアアイデア
SolidWorks API には、何千ものメソッドがあります。それぞれを個別の「ツール」として AI に提示すると、コンテキストサイズとトークンコストが爆発的に増大します。これが、同様のプロジェクトの進展を妨げている経済的な課題です。
SolidPilot は、抽象化のレベルを引き上げることでこの課題を解決します。
- AI はフィーチャーレベルで設計意図を生成します(例:「上面に穴を開ける」)。
- その設計意図を、CAD に依存しない Feature Graph IR で表現します。
- 決定論的なコンパイラーが、IR を順序付けられた具体的な SolidWorks 操作に変換します。
- したがって、1 つのフィーチャーは多数の低レベル操作に対応し、リクエストごとに 1 回モデルを呼び出せば十分です。
IR が中核となっているため、同じ仕組みを逆方向にも利用できます。2D 技術図面は二次元で表された設計意図なので、同じ IR に読み込んで構築できます。
2D 図面ファイルからソリッド部品へ
サプライヤーや顧客から実際に送られてくる、モデルが添付されていない .DXF または .DWG ファイルを SolidPilot に渡すと、部品を再構築できます。
drawing.dwg → analyze_drawing → (draw dialect: views, edge classes, chained contours,
true-valued dimensions, bend notes) → Feature Graph IR → compiler → SolidWorks
リーダーは、図面が裏付ける 2 つの回答のどちらを採用するか判断します。部品に必要なすべての判断が図面そのものによって確定する場合(現在は板金の展開図が該当)、部品全体を自動で IR に変換し、analyze_drawing(mode='build') の 1 回の呼び出しで構築します。図面の読み取りに実際のエンジニアリング上の解釈が必要な場合(機械加工部品では通常こちら)、その旨を示して構造化された解析結果を渡します。モデルはバージョン管理されたルールセット(recipe://usage/reverse リソース)に基づいてこれを解釈し、submit_feature_graph を通じて構築します。
いずれの場合も、結果は想定するのではなく検証します。構築前に図面自体の寸法から予想体積を計算し、構築後に実際の体積を読み取ります。これまでに、実物の図面 9 枚をこの方法で再構築しました。内製サンプル 4 枚(うち 2 枚は板金)と、実際の製造図面 5 枚(A4/A3/A1、縮尺 1:1~1:10、異なる表題欄テンプレート 3 種類)です。それぞれ、表題欄に記載された重量との差が 0.02% 以内であること、または元の部品とトポロジーが完全に一致することを確認しています。
アーキテクチャ
flowchart TD
U(["User + AI client<br/>Claude · OpenClaw · OpenAI · local LLM"])
subgraph ADAPT["adapters/* — MCP bridge · MCP BOUNDARY = top"]
LOW["38 low-level tools<br/>sketch · extrude · sheet-metal · drawing · assembly · analyze"]
RIR["rebuild_from_ir · save_analysis · compare_parts/assemblies"]
SFG["submit_feature_graph<br/>forward single tool"]
end
IR["Feature Graph IR<br/>feature-graph.schema.json<br/>(cad-planner · CAD-neutral)"]
subgraph COMP["compiler/solidworks — deterministic compiler · no LLM"]
CO["pycompiler<br/>lowering + reference resolver (geometric anchors v0)"]
end
subgraph EXE["execution/solidworks — C# .NET 4.8 · the ONLY COM-touching layer"]
EX["Execution<br/>idempotency · state_version"]
end
SW(["SolidWorks · COM"])
%% Working today (thick)
U == "MCP: low-level tools (primary today)" ==> LOW
LOW == "REST" ==> EX
U == "MCP: rebuild_from_ir (reverse round-trip — WORKS)" ==> RIR
IR ==> CO
RIR == "REST" ==> CO
CO == "REST" ==> EX
EX == "COM" ==> SW
%% Reverse discovery step: read an existing part → propose an IR
EX -. "analyze_model / analyze_drawing (DXF/DWG)" .-> IR
%% Planned forward collapse (dashed)
IR -. "forward: submit_feature_graph" .-> SFG
SFG -. "REST" .-> CO
線のスタイルに注目して図を読んでください。太線は現在利用可能で、破線は計画中です。MCP の入口は現在 2 つあります。1 つは低レベルツール(現時点での主要な経路)、もう 1 つは実際の決定論的コンパイラーを動かし、Feature Graph IR からパーツ、またはアセンブリを再現する rebuild_from_ir です。点線の逆向き矢印は検出の手順を示します。analyze_model/analyze_drawing で既存のパーツを読み取り、その IR の提案を生成します。破線(まだ計画中)なのは、前方向の統合だけです。これは、ゼロからの構築において低レベルのインターフェースに置き換わる、単一の submit_feature_graph ツールで、同じコンパイラーを通じて実行されます。
システムは 4 つのレイヤーで構成されています。
| レイヤー | ディレクトリ | 言語 | 責務 |
|---|---|---|---|
| プランナー/意図 | cad-planner/ | AI モデル + IR スキーマ | ユーザーの意図を CAD に依存しない Feature Graph IR に変換します。COM には触れず、生のツール呼び出しも生成しません。 |
| コンパイラー | compiler/solidworks/ | 決定論的(LLM なし) | IR を順序付けされたツール呼び出しに変換し、ライブのジオメトリ状態を基に意味参照(例:top_face、center)を解決します。 |
| 実行 | execution/solidworks/ | C# (.NET Framework 4.8) | SolidWorks COM API に触れる唯一のレイヤーです。CAD の状態に関する唯一の信頼できる情報源です。 |
| アダプター | adapters/claude/ | Python (MCP SDK v2) | MCP プロトコルブリッジです。MCP の境界はシステムの最上部にあります。 |
MCP は最上部にあります。 AI クライアントがシステムと接続する境界であり、内部のトランスポートではありません。IR より下のすべては決定論的で、プレーンな REST で通信します。
adapters/ レイヤーはプロバイダー固有で、置き換え可能です。実行レイヤーとプランナーレイヤーは、どのクライアントから呼び出されたかを認識しません。そのため、新しい AI クライアント(OpenClaw、OpenAI、ローカル LLM など)の追加に必要なのは新しいアダプターの作成だけです。IR、コンパイラー、実行レイヤーは変更されません。
現在と目標: Feature Graph IR と決定論的コンパイラーは、すでに実装され、動作しています。コンパイラー(compiler/solidworks/pycompiler、変換処理 + v0 の参照リゾルバー)は、実際の本番パーツを IR から verified 判定までエンドツーエンドで再現しています(Project Status を参照)。現在は rebuild_from_ir ツールを通じて到達します(逆向き/再現の方向)。今後の課題は前方向の統合です。ゼロからの構築で低レベルのインターフェースを単一の submit_feature_graph ツールに置き換えること、そして編集後も機能する永続的な参照リゾルバー(成否を左右するモジュール)を実現することです。それまでは、構築の主要な経路として低レベル MCP ツールを使用します。
ツール一覧
現在、このシステムは、実行用の47 個のツールと、読み取り用の13 個の MCP リソースを公開しています。レシピは get_recipe(section) と recipe://usage/* の両方から提供されます。MCP リソースはクライアントのアクション空間に属し、すべてのホストがモデルからリソースにアクセスできるわけではないためです。コントラクトテストで、両方のインターフェースの整合性を検証しています。具体的には、アダプターと実行コントラクトの整合性、およびアダプターで言及されている各リソース URI が実際に登録されていることを確認します(CONTRIBUTING.md を参照)。ツールの大半は低レベルの CAD 操作です。一部のツール(save_analysis、rebuild_from_ir、submit_feature_graph、compare_parts、compare_assemblies)は、以下で説明する解析/IR の往復処理を実行します。長さの単位はすべてメートル(SolidWorks の内部単位)です。
リソースが担うのは、ルールセットとコントラクトであり、動作ではありません。recipe://usage/index と、各ルールセクションに対応する静的な recipe://usage/<section>、さらに schema://feature-graph と schema://analysis-artifact が含まれます。この分割は意図的なものです。ツールの説明は、使用するかどうかにかかわらず、ターンごとに必ずコストがかかります。一方、リソース本文のコストが発生するのは読み取られたときだけです。そのため、ほとんど変化しない参照資料はリソース側に置くのが適切です。
ドキュメントとライフサイクル
ensure_ready— COM 経由で SolidWorks を起動し、終了している場合は接続します(ドキュメントは開きません)。open_new_part— 新しいパートドキュメントを開きます。open_document— ディスク上の既存ファイルを開きます(ネイティブ形式の.sldprt/.sldasm/.slddrw。トランスレーターが利用可能な場合は 3D Interconnect 経由で.ipt/.CATPart/STEP/IGES をインポートし、利用できない場合は明確なOPEN_FAILEDを返します)。activate_document— 開いているドキュメントを切り替えます。save_document— パートまたは図面をディスクに保存します。close_document— ドキュメントを閉じます。
スケッチ
create_sketch— 平面または選択した面にスケッチを開始します。edit_sketch— 既存のスケッチを再度開いて編集します。add_sketch_entity— スケッチエンティティを追加します。線、円、円弧、中心円弧、楕円、スプライン、長方形、フィレット、面取りに対応します。add_sketch_constraint— スケッチ拘束(水平、一致など)を追加します。add_dimension— スケッチに寸法を追加します。
フィーチャーとソリッドモデリング
extrude_feature— ボス、カット、回転、スイープ、ロフトを作成します。add_edge_feature— ソリッドのエッジにフィレットまたは面取りを追加します(面取り:任意の角度での距離と角度、または距離と距離)。create_rib— 開いたスケッチプロファイルからリブフィーチャーを作成します。add_reference_geometry— 参照平面、軸、または点を追加します。create_pattern— 線形または円形パターンを作成します。sheet_metal_feature— 板金フィーチャー:base_flange、edge_flange(カスタムプロファイルのフランジを含む)、sketched_bend、flat_pattern。
編集
modify_dimension— 名前付き寸法の値を変更します(バリエーションの基礎となります)。edit_feature— フィーチャーを抑制、抑制解除、削除、または名前変更します。
材料
set_part_material— パートに材料を割り当てます。
解析とクエリ
analyze_model—geometry、mass_properties、bodies(マルチボディパートのボディごとのフィンガープリント)、features(フィーチャーレベルの簡潔なレシピ)、edges、faces、sketch(必要に応じて、1つのスケッチの正確なセグメント)、feature_map(フィーチャーごとに消費/作成されたトポロジー — 参照解決アンカーの情報源)モードに対応します。get_selection— SolidWorks GUI でユーザーが選択したジオメトリを読み取り、解析インデックスに対応付けます。verify_state— 現在の状態とフィーチャーツリーを返します。
アセンブリ
open_new_assembly— 新しい空のアセンブリドキュメントを開きます。insert_component— パートファイルをコンポーネントとして挿入します。挿入点または13個の数値による完全な変換を指定でき、固定またはフローティングにできます。add_mate— 堅牢なインデックスベースのエンティティ選択を使用して、メイト(一致、同心、平行、垂直、接線、距離、角度、固定)を追加します。analyze_assembly— コンポーネント(ツリー順の完全な変換。ネストされた階層全体を平坦化したリーフビューを含む)、メイト(作成順、ロケールに依存しない列挙型、エンティティアンカー)、または1つのコンポーネントの面/エッジの一覧を読み取ります。save_body_as_part— マルチボディパートのボディを1つ抽出し、独立したパートファイルとして保存します(平坦化されたアセンブリへの STEP インポート用)。compare_assemblies— アセンブリを客観的に比較します(コンポーネントセット、コンポーネントごとの変換を≤1 µmで比較、メイト数とタイプ、質量特性)。verified判定を返します。
解析パイプラインと IR のラウンドトリップ
これらのツールは、既存のパーツを CAD に依存しない Feature Graph IR から再現し、その結果を客観的に検証するリバースエンジニアリングのループ、つまり 「LLM が提案し、ラウンドトリップで判定する」 を実装しています。
- IR 生成のレシピは、ツールではなく MCP リソースとして提供されます(2026-07-30 以降)。
recipe://usage/indexは各ルールセクション(マッピング/正規化/順方向/逆方向/検証など)に対応するrecipe://usage/<section>をインデックス化し、schema://feature-graphとschema://analysis-artifactは 2 つのコントラクトを提供します。IR を書き込む前に、モデルはこれらを読み込みます。これらはほぼ静的で、呼び出し元によらず同一であり、鮮度のヒントとしてttlMs/cacheScopeを含みます。これがリソースである理由です。廃止されたget_recipeツールは、読むかどうかにかかわらず、毎回のターンでツールリストの約 2.4 KB を消費していました。 save_analysis— パーツまたはアセンブリファイルの解析アーティファクト(フィーチャーレシピ/コンポーネントとメイトのツリー、駆動パラメーター、および任意の Feature Graph IR ブロック)を<folder>/.solidpilot/に書き込みます。rebuild_from_ir— IR の逆方向の窓口です。アーティファクトの IR ブロックを決定論的コンパイラーに通して、パーツまたはアセンブリを新しいドキュメントに再構築し、アーティファクト作成後にソースファイルが変更されている場合は警告します(source_stale)。submit_feature_graph— IR の順方向の窓口です。モデルから直接提供された Feature Graph を使い(設計意図に基づくため、コピー元はありません)、同じコンパイラーでパーツまたはアセンブリを作成します。2 つの窓口、1 つのコンパイラーです。compare_parts— 2 つのパーツを客観的に比較します(トポロジー、体積、面積、重心)。プロジェクトのverified判定では、トポロジーが完全一致し、かつ |ΔV| ≤ 1% かつ |ΔA| ≤ 1% であることが条件です。
図面
図面ツールは、初期のパーツモデリング機能の追加後に導入され、現在では大きな機能の一つとなっています。ただし、まだ発展途上です。モデルを寸法入りの複数ビュー図面に仕上げたり、図面を読み取ってリバースエンジニアリングしたりするには十分な機能を備えています。
create_drawing— 図面ドキュメント(A3シート)を作成します。add_drawing_view— モデルビューを追加します:front、top、right、isometric、back、bottom、left。製図規格に従い、正投影ビューは既定で隠線表示になります(display_modeで変更できます)。add_flat_pattern_view— 板金のフラットパターンビュー(曲げ線と曲げ注記を含む展開ブランク)を追加します。板金パーツの詳細図を作成するための、正しく標準的な方法です。auto_dimension_drawing— モデルの駆動寸法をビューに転記します(「モデルアイテムの挿入」の自動化)。座標を指定して寸法を配置する方法に代わる、堅牢な手段です。auto_center_marks— すべての穴とスロットに中心マークと中心線を自動挿入します。add_hole_callout— 穴のエッジに穴注記を追加します。add_drawing_dimension— シート座標を指定して単一の寸法を追加します。add_section_view— 既存のエッジまたは描画した切断線に沿って断面ビューを作成します。内部や止まり形状を表示して寸法を記入する標準的な方法です(内部深さの軸ごとに断面を1つ作成します)。analyze_drawing— 図面 → パーツのフロントエンドです。2D技術図面ファイル(.DXF または .DWG)を読み取り、そこからパーツを作成するか、作成に必要な根拠を渡します。.DWG は自動的に DXF に変換されます。抽出される情報:ビューごとの縮尺(適用済みのため、すべての数値は実際のモデルの mm)、プリミティブごとのエッジクラス(可視/隠線/断面切断線/中心線)を含む検出ビュー、閉じたループとして連結された輪郭(厳密に処理します。ループは事実であり、接続点が曖昧な場合は推測せず連結を停止します)、爆発された曲線ファンから測定残差のしきい値に基づいてパラメトリック楕円へ復元された曲線、ビューの位置合わせペア、CADシステムが実際に印字した文字列を保持する寸法(保存値より印字文字列を優先します。DWG の往復変換では角度や半径が破損し、線寸法に手入力された Ø 接頭辞は寸法を直径として再解釈させます)、パラメータテーブルとしてのタイトルブロック(frame_notes— 長さ、材質、重量、投影法の規格)、注記ブロック内のテキスト、そして3つの独立した手段で曲げ線と対応付けられた板金の曲げ注記です。結果は次の2つの形式のいずれかで返され、どちらを使うかは呼び出し側が選択します。DIRECT_BUILDABLEと簡潔な要約(その後mode='build'で1回の呼び出しで構築)、またはNOT_DIRECT | <reason>と解析全体(モデルがget_recipe('reverse')に従って読み取ります)。形式は1つです。要約と取得データを分ける方式は、独自の測定結果に基づき 2026-09 に廃止されました。すべてのサンプルで、コンパクトなワイヤー形式の完全な成果物は、要約とそれに必要な取得データの合計よりも小さくなります。属性を特定できないものは、推測せずスキップとして報告されます。また、sheet.not_readには、まったく読み取れなかったエンティティクラスが記載されます。(ネイティブ SolidWorks 図面用の旧リーダーはanalyze_slddrw_testとして残っていますが、テスト/参照専用です。.SLDDRW はモデルにリンクされているため、手元にあればパーツはすでに存在します。)
エクスポート
export_document— STEP、IGES、STL、PDF、DWG、DXF(PDF/DWG/DXF のエクスポートには図面ドキュメントが必要です)。batch_export— 一括エクスポート。
インストールと実行
要件
- Windows と SolidWorks 2026。
- 実行レイヤーには .NET Framework 4.8 と MSBuild が必要です(Visual Studio 2022 に付属)。
- アダプターには Python 3.x と公式の MCP Python SDK v2(
mcp>=2.0.0、プロトコル2026-07-28)が必要です(Python の依存関係はrequirements.txtからインストールします)。 - MCP 対応の AI クライアント(例:Claude Desktop。OpenClaw、OpenAI ベースのエージェント、ローカル LLM も対象です)。
実行レイヤー(C#)
ソリューションをビルドします:
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" execution\solidworks\SolidworksExecution.sln /t:Build /p:Configuration=Debug
サーバーを起動します(ヘッドレス、http://localhost:5000):
Start-Process execution\solidworks\SolidworksExecution\bin\Debug\SolidworksExecution.exe -WindowStyle Hidden
アダプター(Python)
cd adapters/claude
pip install -r requirements.txt
python server.py
アダプターは、EXECUTION_BASE_URL(デフォルトは http://localhost:5000。.env で上書き可能)を通じて実行レイヤーに接続します。
AI クライアントへの登録(インストール方法)
アダプターは、server.py 自体を起動する MCP 対応 AI クライアントに登録します。Claude Desktop の設定ファイルは次の場所にあります。
C:\Users\<username>\AppData\Roaming\Claude\claude_desktop_config.json
mcpServers の下に次のエントリーを追加します。
"SolidPilot": {
"command": "C:\\Users\\<username>\\AppData\\Local\\python\\bin\\python.exe",
"args": ["C:\\Users\\<username>\\Desktop\\MCP Server\\adapters\\claude\\server.py"],
"cwd": "C:\\Users\\<username>\\Desktop\\MCP Server\\adapters\\claude"
}
パスをご自身のシステムに合わせて変更してください。
設定を変更した後は、必ず Claude Desktop を再起動してください。
MCP はオープンスタンダードであるため、OpenClaw、OpenAI ベースのエージェント、またはローカル LLM を実行するクライアントも、同じ
server.pyアダプターを指定することで同様に接続できます。
プロジェクトの状況
SolidPilot は動作するプロトタイプ/初期アルファ版です。低レベルのツールは、稼働中の SolidWorks に対するエンドツーエンドの検証を完了しており、すべての COM 呼び出しは専用の STA スレッド 1 本でシリアル化されています。
部品: 部品モデリング機能が最も成熟しており、スケッチ、押し出し/回転/スイープ/ロフト、フィレット/面取り、パターン、板金、参照ジオメトリに加え、編集(modify_dimension、edit_feature)や高度な解析に対応しています。当初は部品作成に必要なツールのみが存在していました。
製図: 後から追加された機能で、現在では(まだ成熟途上ではありますが)実用可能です。複数ビューの図面、断面図、モデルアイテムの自動寸法記入、中心マーク、穴の注記、板金のフラットパターンビュー、図面リーダーに対応しています。モデル → 図面は実際の量産部品で実証済みです(解析結果のみを基に配置した、直交する 2 つの断面図を含む 5 ビューの寸法入り図面)。既知の制限として、自動寸法記入処理は製図上の知識を持たないため、寸法を省略したり、誤った位置に配置したり、隠れたエッジに寸法を記入したりすることがあります。より高度な寸法記入レイヤーはロードマップに含まれています。
図面 → モデルは最近最も大きく進展した方向で、現在は図面ファイル単体から動作します。モデルも SolidWorks の図面ドキュメントも必要なく、サプライヤーから受け取る .DXF/.DWG だけで処理できます。リーダー(cad-planner/drawing/。DXF に触れる唯一のモジュール)は、端点が厳密に次数 2 で一致する輪郭を連結して閉ループを作成し、曲げ注記と曲げ線を対応付け、表題欄をパラメータテーブルとして読み取り、各寸法の印字された文字列を正解値として扱います。これまでに、社内サンプル 4 件(板金 2 件、機械加工品 2 件)を元データとトポロジーまで完全一致で再構築しています。また、実際の量産図面 5 件(A4/A3/A1、縮尺 1:1~1:10、表題欄のテンプレート 3 種)について、それぞれに記載された重量との差が**≤ 0.02%**であることを検証済みです。これには、長さ 6.69 m、3 か所曲げの板金部品や、図面上の長さが部品の長さとは異なる中断図も含まれます。正直なところ、制限もあります。正投影図はまだ完全には連結されません(エッジの途中で終わる形状のシルエットは T 字交差となり、連結器は推測を避けて停止するため、未解決の輪郭は隙間として報告されます)。投影法は検出されず、設定から読み取られます。また、機械加工品の設計上の読み取りには、依然としてモデルが必要です。
アセンブリ: アセンブリ機能はエンドツーエンドで動作するようになりました。アセンブリの作成、完全な変換情報を使ったコンポーネントの挿入、インデックスベースの合致、詳細な構造の読み戻し(analyze_assembly)、客観的な検証(compare_assemblies)に対応しています。アセンブリ IR のサブ語彙(コンポーネントと合致)を Feature Graph スキーマに追加し、実際のサンプルアセンブリ(最大約 17 コンポーネント)を、その IR から verified と判定される一致状態まで再現しています。コンポーネント集合は完全一致し、変換の誤差はサブミクロン単位で、合致の数と種類も一致します。
フィーチャーグラフ IR とコンパイラー(戦略的中核): 現在、プロジェクトの中核として機能しています。IR スキーマ(cad-planner/contracts/feature-graph.schema.json)と、決定論的な Python コンパイラー(compiler/solidworks/pycompiler。低レベル表現への変換と、幾何アンカーを基盤とする v0 リファレンスリゾルバー)は、オフラインテストスイート(稼働中の SolidWorks は不要)とともに、すべての再構築で単一のコードパスを通ります。逆方向のラウンドトリップである analyze_model → LLM が提案した IR → rebuild_from_ir → compare_parts を介して、実際の生産部品を IR から再現し、verified の一致を達成しています。対象には、回転体、円形パターン、両方の面取りモード、ロフト、複数回曲げの板金形状が含まれます。各部品は新しいドキュメントで再構築され、検証済みと見なされる前に、元の部品とトポロジーおよび質量特性が完全に一致するか確認されます。実際の部品から IR の語彙を拡張することで進化させています。この取り組み専用の記録簿(logs-ir.md)もあります。
未解決の課題であり、プロジェクトの真の研究リスクは、永続的なリファレンスリゾルバーです。v0 の幾何アンカーは新しいドキュメントで部品を完全に再現できますが、上流の編集には対応できません(寸法が変わるとアンカーが移動します)。トポロジーの変更をまたいで、セマンティック参照(top_face、特定のエッジなど)を堅牢に維持することが、成否を左右する今後の中核モジュールです。
2 つの IR 経路、1 つのコンパイラー。 逆方向の経路は
rebuild_from_ir(既存部品の成果物からの再現)です。順方向の経路はsubmit_feature_graph(コピー元なしで設計意図から構築)で、現在は稼働中で、ゲートなしです。実際の形状で実証済みであり、πr²·L に 6 桁まで一致するスイープソリッド、組み合わせたパターングリッド、楕円柱、板金フランジに対応しています。どちらの経路も同じpycompilerを通じて実行されるため、一方で得た知見がもう一方の改善にもつながります。順方向の経路があるからといって、その下にある低レベルの層まで統合するわけではありません。40 種類以上の低レベルツールは引き続き存在し、それらの廃止は後述のリファレンスリゾルバーの完成を待ちます。
テスト: 4 つの自動テストスイートがオフラインで完全に実行でき(SolidWorks は不要)、プッシュごとに CI でも実行されます。ツール契約テスト(adapters/claude/tests/test_schema_contract.py)は、アダプター(server.py)と実行契約(tool-schemas.json)間でツールやパラメーターに不整合があると失敗します。IR 契約テスト(compiler/solidworks/pycompiler/tests/test_ir_schema_contract.py)は、機能レジストリも兼ねる IR スキーマと、そのスキーマを強制するバリデーターとの間に、いずれかの方向で語彙の不整合があると失敗します。コンパイラースイート(compiler/solidworks/pycompiler/tests/)は、IR の検証、低レベル表現への変換、フェイク実行ポートに対するリファレンス解決を対象とします。図面リーダーゲート(cad-planner/drawing/tests/)は、作図ダイアレクトの語彙を両方向で差分比較し、固定された DXF フィクスチャーを生のプリミティブから再連結します。また、出力される IR をコンパイラー独自のバリデーターで検証し、リーダーがコンパイラーで構築できない語彙を生成できないようにします。CAD 操作自体の動作検証は、設計上、稼働中の SolidWorks に対して手動で行います。
メモ:
- Python MCP アダプターは実行中にホットリロードされません。
server.pyを編集した後は、MCP サーバーを再接続する必要があります。 - SolidPilot は稼働中の SolidWorks GUI セッションを操作するため、分析ツールが処理を続ける前に SolidWorks でクリックを求めることがあります。また、非常に長い分析の後には、MCP ツールがエラーを返し始めることがあります(クライアント側の制限です)。いずれの場合も、アシスタントに再試行するよう伝えれば、処理を続行します。
ロードマップ
このプロジェクトは現在も活発に開発されています。Feature Graph IR と決定論的コンパイラーは、一部の部品で動作するようになりました(実際の製品部品でエンドツーエンドの動作を検証済みです)。次の主な目標は以下のとおりです。
- 永続的な参照リゾルバー/永続的な命名 — 重要なモジュールです。セマンティック参照(
top_face、特定のエッジなど)が、新規ドキュメントの再実行時だけでなく、寸法やトポロジーの変更後も維持されるようにします。現在の v0 の幾何アンカーは正確ですが、編集によって壊れやすいものです。 - アセンブリの拡充 — アセンブリのコア機能(挿入、合致、解析、IR の相互変換)は動作しています。残る作業は、サブアセンブリ階層を第一級の IR として扱うこと、変形可能な部品や着座する部品(溝に入った O リングなど)に対応した合致、アセンブリ図面/BOM です。
- 解析パイプラインの拡充 — 部品や図面のディレクトリを一括解析して成果物を生成するフォルダースキャナー、カバレッジレポートとともにカテゴリごとの IR を生成する AI パス、検証済み IR 間でのパターン再利用(LLM を使わないパラメトリック再構築)を実装します。
- ツール構成の集約 — 順方向の入口(
submit_feature_graph)はすでに利用可能で、IR は部品モデリングの全領域をカバーするようになりました。残る作業は、その下位レベルのツールを廃止することです。このアーキテクチャによるトークンコスト削減は、実際にここで実現します。ただし、リゾルバーの完成を待つ必要があります。単一ツールのインターフェースは、参照が永続的でなければ実用にならないためです。
既存分野で近日中に予定している内容:
- 技術図面: コアツールはすでにあります。残る作業は、製図に適した寸法記入レイヤー(決定論的な断面計画、適切な寸法配置)、GD&T/データム、表題欄、詳細図、部品表(BOM)です。
コントリビューション
コントリビューションのガイドライン、開発環境のセットアップ、新機能を追加するためのガイドについては、CONTRIBUTING.md を参照してください。
ライセンス
Copyright (c) 2025–2026 Çağatay Bakan.
SolidPilot は、GNU Affero General Public License v3.0(AGPL-3.0)のもとでライセンスされているフリーソフトウェアです。
自由に使用、研究、改変、配布できます。SolidPilot はサーバーソフトウェアであるため、AGPL のネットワーク条項(§13)が適用されます。改変版を実行し、ネットワーク経由で他のユーザーが利用できるようにする場合、そのユーザーに対して、改変版に対応する完全なソースコードを同じライセンスのもとで提供しなければなりません。 正確な条件については、LICENSE を参照してください。
商用/プロプライエタリーライセンス
AGPL のコピーレフト義務は、すべての組織に適しているわけではありません。SolidPilot をクローズドソースまたはプロプライエタリー製品に組み込む場合、あるいはその他の理由で AGPL に準拠できない場合は、別途商用ライセンスをご利用いただけます。コントリビューションはプロジェクトの CLA のもとで受け付けており、これによりこのデュアルライセンスの選択肢が維持されます。
商用ライセンス、パイロット、またはテスト/評価プログラムにご興味がありますか? お問い合わせいただければ、適切な条件を調整できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。