mcpField
L
lambdacad-mcp

lambdacad-mcp

ローカル
github.comメディア・デザイン311 週間前に更新

lambdacad-mcp について

lambdacad-mcpは、AutoLISP対応CADでの作図、モデリング、設計レビューをAIで支援するMCPサーバーです。ファイルベースのAutoLISPブリッジによりLinux上のBricsCADを操作し、2D図面、3Dソリッド、検証、図面メモリーの機能を提供します。

主な機能

  1. 012D作図と寸法記入
  2. 023Dソリッドモデリングとブーリアン演算
  3. 03単一の取り消しにまとめる一括作図
  4. 04形状検証とエンジニアリングレポート
  5. 05図面ジャーナルとエンティティの意味タグ
  6. 06DWG、DXF、PDF、STLのエクスポート

活用シーン

  1. 01BricsCADで寸法入りの2D図面を作成
  2. 023D部品をモデリングして2Dビューを生成
  3. 03形状、穴、アセンブリの接触を検査
  4. 04図面履歴とエンティティタグから作業を再開

MCP 対応

CAD操作をMCPツールとして公開し、trapsリソースとプロトコルの説明も提供します。MCPクライアントがサーバーに接続し、サーバーはファイルブリッジを介してBricsCADとAutoLISP式をやり取りします。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

λ lambdacad-mcp

AI に CAD で作図させましょう。 AutoLISP に対応するあらゆる CAD で使える MCP サーバーです。COM も SDK もプラグインも不要で、純粋な AutoLISP を使用します。 リファレンスアダプターは Linux 上の BricsCAD を操作します。Linux 上で動作する業務用 DWG CAD 向けとして、初の MCP サーバーです。

ライセンス: Apache 2.0 プラットフォーム: Linux Python 3.10+ ツール数: 128 MCP レジストリ Glama スコア lambdacad-mcp MCP サーバー

「DN80 フランジを作図して。正面図、ハッチング断面、寸法を入れてから、3D モデルにして。」

lambdacad-mcp のデモ: AI が BricsCAD で完全なフランジを 2D + 3D で作図

編集なしのリアルタイム録画です。ボルト円、ハッチング断面、半径・直径寸法、引出線、表題欄を含む正面図を作図し、続いて同じフランジを、AI が記述したパラメトリックな AutoLISP ループと 1 回のブール演算による減算で 3D ソリッドとしてモデリングします。約 20 秒、12 回のツール呼び出しです。

Claude が作図した完全な 2D 図面ブール演算を施した 3D ソリッドAI ビジョン向けのクリーンなレンダリング
2D フランジ3D ソリッドブラケットのレンダリング

これが生まれた理由

業務用 DWG CAD 向けの他の MCP サーバー(multiCAD-mcp、autocad-mcp、CAD-MCP など)は、すべて Windows COM 経由で CAD と通信します。Linux では動作せず、実際の 3D に対応するものもありません。

BricsCAD は、Linux 上でネイティブに動作する業務用 DWG CAD です。このサーバーは、API を一切必要としない仕組み、AutoLISP ファイルブリッジを通じて BricsCAD を操作します。MCP サーバーが LISP 式をファイルに書き込み、CAD 内で小さな MCP コマンドを実行し、結果を読み戻します。仕組みはこれだけです。そして、3D ソリッドモデリングを含め、CAD でできることすべてが利用可能になります。

ブリッジは純粋な AutoLISP と標準の DXF entmake、AutoCAD 互換コマンドで構成されているため、設計上、移植性に優れています。AutoCAD、ARES Commander(こちらも Linux でネイティブ動作します!)、ZWCAD、GstarCAD、IntelliCAD ファミリーはいずれも同じ言語に対応しています。移植時に変更するのは、自動ロードファイル名とキー入力トリガーだけです。アダプターの提供を歓迎します。

MCP client (Claude, Cursor, ...)            BricsCAD (Linux)
        │                                        │
        ▼                                        ▼
  server.py (FastMCP, 128 tools)          c:MCP AutoLISP command
        │        writes LISP  ──►  /tmp/mcp_bricscad.in
        │        triggers via xdotool ──► reads, evals line by line
        │        reads result ◄──  /tmp/mcp_bricscad.out

できること

  • 完全な2D製図 — 線/円弧/ポリライン/スプライン、画層ごとの線の太さ(壁は0.50/エッジは0.35/寸法は0.18 — 設定値だけでなく、印刷したページ上で計測)、実際のHATCH(島を含む)、半径/直径/角度寸法などの寸法、引出線、線種(チェーン/隠線)、文字スタイル、トリム/延長/フィレット/面取り/オフセット/ミラー/配列、ブロック
  • セマンティック図形 — slot、bolt_circle、rounded_rect、polygon、center_mark:1回の呼び出しで、計算はサーバーが行います
  • 3Dソリッドモデリング — ボックス/円柱/球/円錐/くさび/トーラス、押し出し/回転/スイープ、和/差/積、スライス、ソリッドエッジのフィレット/面取り、任意の軸を中心とした3D移動/回転 — さらに flatshot_view:3Dモデルから正しい2D図面ビューを自動生成します
  • バッチ処理とアトミック操作 — draw_batch はN個の操作を1回のラウンドトリップで実行し、1つの取り消しグループにまとめます(1つのバッチ = Ctrl+Z 1回)
  • ユーザーが選択した対象について対話 — get_selection はGUIのpickfirstセットを読み取ります。select_by/select_window はAIが見つけた対象を操作前にハイライト表示します。変更ツールは"selection"を受け付けます
  • スクリーンショット不要の検証 — 境界ボックス、キーポイント、正確な長さ/面積、交差チェック(衝突検出)、ソリッドの体積/重心
  • 設計レビュー — コマンドを実行するだけでなく、エンジニアリング上の問いに答えるツール(1.2で新登場)— boolean_verified は切削を実行し、想定した体積に対する変更量も測定します(切削量が不足していれば成功ではなくSHORTと表示)。overhang_report はSTLメッシュを読み取り、パーツがサポート材なしで印刷できるかを6方向すべてで評価します。アセンブリに対するcontact_report(assembly_place/assembly_list/assembly_clear)は、どのパーツ同士が接触または干渉しているか、そして孤立パーツ(何にも接触していないパーツ。役割が置き換えられたのに誰も気づかなかったパーツ)がどれかを示します。hole_report は各穴を物理的に調べ、実際に貫通している穴を示します(図面上の穴は、何かが確認するまでは信用できません)。graph_build/graph_trace は2D形状を接続グラフとして読み取り、別々のネットワーク、正確な配線長、そして実際の断線なのかT字接合なのかを示します。接続許容差はハードコードされず、図面から導き出されます
  • 図面が記憶します(1.3で新登場、ベータ版)— memory_enable は.dwgの隣にジャーナルを作成します。CADが自動で記録するため、ツールが実行されていない間にGUIで人間が*行った編集も捕捉します。tag_entity はハンドルに紐付けたセマンティックな役割(「muro-nord」、「asta-principale」など)をエンティティに付与し、保存や再オープン後も維持します。world_report は「ここにあるものは何か、何と名付けたか、前回確認してから何が変わったか」に答えます — 回答前に、すべての情報をライブ図面に照らして再検証します(AIに知られずに消去されたエンティティはDEAD (erased since tagging)と表示され、報告されます。隠されることはありません)。次のプロンプト、あるいは次のセッションは、再調査することなく、図面を把握した状態で始まります
  • プロトコル内の手順(1.2で新登場)— サーバーには試行だけでは学べないルールが含まれます(OKは根拠にならない、信頼する前にキャリブレーションする、ブーリアン演算では最初のハンドルが保持される、1行は1つの完全な式、まず図面の記憶を確認する)。さらに、読み込むまでコストのかからないlambdacad://trapsリソースも用意されています
  • 必要なときの視覚情報 — render_view:BricsCAD内蔵のPNGレンダリング(クリーンでUIなし、約30 KB)をビジョンモデル向けに提供します
  • 実寸のシート — create_sheet(A4…A0、余白をゼロにして用紙のmm = シートのmm)、add_viewport(1:50を指定すれば、実際に1:50になります — エンティティを基準に測定し直し、非印刷画層に配置)、fit_viewport(描画された範囲を計測し、収まる最大の標準縮尺を選択 — 1:37は縮尺ではありません)、title_block(シートサイズに合わせた枠線+ISO 7200表題欄)、export_sheet_pdf(出力したPDFのページを測定して処理結果を検証)
  • 成果物 — DWGの保存、DXFのエクスポート、PDFおよびSTL(export_stl:3Dソリッドを原点に配置した状態で、そのままスライサーに出力)
  • 複数の図面を開いた状態で使用 — list_documents はツールの接続先を表示します(未保存の変更や読み取り専用状態も表示)。use_document で別の図面を選択できます。すべての応答で、どの図面が応答したかを示し、処理中に図面が切り替わった場合は警告します
  • 緊急避難口 — run_lisp は任意のAutoLISP(複数行・複数式)を評価します。有能なモデルはパラメトリックコードを書き、これを好んで使います リファレンス全文:docs/TOOLS.md · 仕組み:docs/ARCHITECTURE.md

測定結果。約束ではありません

指標結果
寸法入りフランジの作成に必要なツール呼び出し回数200 → 22(プリミティブを毎回呼び出す場合と比べ、ラウンドトリップが9分の1)
トリガーのレイテンシ呼び出しあたり0.25秒
エラー報告行ごとのLISPエラー(msg=L2: ...)→モデルがスクリーンショットなしで自己修正
正確性半径20の円でのentity_length:125.664 / 1256.637(2πr、πr²と完全に一致)

詳細とモデルの挙動に関する注記(SonnetはパラメトリックLISPを記述し、Haikuは型付きツールを使用):docs/BENCHMARKS.md

テスト

BRICS_DISPLAY=:0 python tests/test_tools.py     # ~135 checks incl. review + memory groups, ~2-4 min
python tests/test_tools.py 3d edges export      # or just some groups
python tests/test_tools.py --list

統合テストスイートです。すでに起動しているCADを操作し、生成された結果を測定します。閉形式の体積、バウンディングボックス、寸法に格納された値、STLから読み取った三角形の数などを確認します。「エラーなし」で済ませることはありません。

この違いこそが、重要なポイントです。ブリッジはCADがコマンドを受け付けるとOKを返しますが、それはCADが要求どおりに処理したことを意味するわけではありません。これまでに見つかったバグはすべて、そうした問題でした。典型例は、CHAMFERが黙ってすべてのエッジに切り替わる問題、90°回転してプロットされるレイアウトの問題です。これによりA3横向きの用紙が縦向きになり、図面が用紙からはみ出して、エクスポートでは完全に有効ながら中身がまったくないページが生成されます。そして、リリースにまで至った問題として、オブジェクトスナップが有効な状態で、プログラムから指定した座標が近くのジオメトリに引き寄せられ、横一列に配置した5つのブロックがそれぞれ直前のブロックに重なってしまう問題がありました。体積、バウンディングボックス、測定した寸法、PDFのページはいずれも正確な指標です。どの問題も、計算が合わない形で明らかになりました。

テストスイートはスクラッチ領域(x ≥ 50000)に描画し、その後消去します。エンティティ数が開始時の値に戻らない場合は失敗します。アクティブな図面で引き続き動作するため、スクラッチ用の図面を指定してください。

使用状況テレメトリー(ローカルのみ)

128個のツールがある場合、気になるのはどのツールが役に立っているか、そしてドックストリングや設計上の問題を示すほど頻繁に失敗するツールはどれか、という点です。サーバーは呼び出しごとに1行のJSONを~/.lambdacad/usage.jsonlに追記します。

{"t": 1786526823.4, "tool": "draw_batch", "ms": 198, "err": 0}

記録するのはツール名、所要時間、エラーフラグです。引数は記録しません。座標、パス、図面データは記録されず、データがマシンの外部に送信されることもありません。LAMBDACAD_TELEMETRY=0で無効にできます。

python scripts/usage_report.py              # per-tool calls, error rate, p50
python scripts/usage_report.py --core 95    # smallest set covering 95% of calls
python scripts/usage_report.py --reset      # archive the current log

--coreの出力は、データに基づいてCORE_TOOLS(コンパクトモード)の候補を示します。数週間実際に使用すれば、スキーマに制限のあるクライアントにどのツールを含めるべきか、推測に頼る必要がなくなります。統合テストスイート自体から得られた初期の兆候では、すべての呼び出しの約半数をrun_lispだけで占めています。スキーマを必要なときに読み込むクライアント(Claude Codeのツール検索など)では、使用頻度の低い型付きツールは使われるまでコストがかからないため、充実したドックストリングをそのまま維持できます。

クイックスタート

要件: Linux、BricsCAD(最近のバージョン。V26でテスト済み)、Python 3.10以降、xdotool。

git clone https://github.com/Psalmustrack/lambdacad-mcp
cd lambdacad-mcp
./install.sh

インストーラーはvenvを作成し、AutoLISPブリッジをBricsCADのSupport/on_doc_load.lspにインストールします(冪等で、マーカーで区切られます)。さらに、Claude Code/Claude Desktopに貼り付けられる設定を表示します。

次に:

  1. BricsCADを起動し、図面を開きます(ブリッジはドキュメントを開いたときに読み込まれます)。
  2. 新しいAIセッションを開始します。bricscadツールが表示されます。
  3. *「ドアと寸法を含む4×3 mの部屋の平面図を描いて」*と依頼します。
設定(環境変数)
変数デフォルト用途
BRICS_DISPLAYセッションの$DISPLAYBricsCADが実行されるXディスプレイ(例:ネストされたXephyrの場合は:77)
BRICS_COMPACTオフ1 = すべてのスキーマを注入するクライアント向けに、必須ツール14個のみを公開(スキーマトークンを約7kから約1kに削減)
BRICS_MCP_IN / BRICS_MCP_OUT/tmp/mcp_bricscad.{in,out}ブリッジのファイルパス

セキュリティに関する注意

run_lisp と run_command は、設計上、BricsCAD 内で任意のコードを実行します。これによってサーバーの汎用性が実現されています。信頼できる MCP クライアントのみを接続し、ブリッジファイルは信頼できる入力として扱ってください。ブリッジ自体が外部ファイルを load することはなく(読み込みと評価のみ)、BricsCAD の SECURELOAD に従います。

トラブルシューティング

症状対処方法
ERR: BricsCAD window not foundBricsCAD は BRICS_DISPLAY 上で実行されていますか?
ERR: no response from BricsCAD図面が開いていますか(スタートページではありません)?ブリッジはドキュメントを開いたときに読み込まれます。
図面にコマンドがテキストとして入力される図面領域を一度クリックしてコマンドラインにフォーカスを移してから、再試行してください。
ブリッジを更新したのに、何も変わらないon_doc_load.lsp はドキュメントごとに実行され、開いている各図面は定義のコピーを個別に保持します。すでに開いている図面には古いブリッジが残っています。図面を閉じて開き直すか、それぞれで (load "…/Support/on_doc_load.lsp") を実行してください。
ツールが違うファイルに描画しているlist_documents で対象の図面を確認できます。use_document で対象を切り替えます。応答には dwg=<name> が含まれ、対象が予期せず変わった場合は警告が表示されます。
WaylandXWayland 経由で動作します。コンポジターで負荷の高い CAD の再描画に問題がある場合は、ネストした X サーバー(Xephyr)上で BricsCAD を実行し、BRICS_DISPLAY を設定してください。

関連プロジェクト

プロジェクトCADプラットフォーム3D
λ lambdacad-mcp(このプロジェクト)AutoLISP 対応 CAD 全般 — BricsCAD を基準に開発Linuxあり
multiCAD-mcpCOM 経由の AutoCAD/BricsCAD/ZWCADWindowsなし
puran-water/autocad-mcpAutoCAD LT(LISP ブリッジ)Windowsなし
hvkshetry/autocad-mcpAutoCAD LTWindowsなし
freecad-mcp(各種)FreeCADクロスプラットフォームあり(FreeCAD)

謝意:multiCAD-mcp が本プロジェクトの着想となり、puran-water/autocad-mcp が Windows 上で LISP ブリッジ方式の有効性を独自に検証しました。

ロードマップ

  • フォーカス不要のディスパッチ(対象を指定した X の合成イベント — ウィンドウのアクティブ化不要)
  • インプロセスのソケットブリッジ(キーストロークによるトリガー不要、遅延は約 0)
  • VIEWBASE のペーパースペース図面ビュー、板金(SMUNFOLD)、BIM コマンド
  • コンパクトモードの動作ベンチマーク

ライセンス

Apache 2.0 — 明示的な特許許諾と、lambdacad-mcp 名称の商標保護を含みます。

商標

AutoCAD® および AutoLISP® は Autodesk, Inc. の登録商標です。BricsCAD® は Bricsys NV(Hexagon)の登録商標です。ARES Commander®、ZWCAD® およびここで言及するその他すべての CAD 製品名は、それぞれの所有者の商標であり、互換性を示す目的でのみ使用しています。本プロジェクトは独立したオープンソースソフトウェアであり、Autodesk、Bricsys または CAD ベンダーと提携、承認、後援の関係にはありません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。