AutoCAD LT AutoLISP MCP Server について
AutoCAD LT の自動化とヘッドレス DXF 生成を行う MCP サーバーです。自然言語のリクエストから CAD 作図を操作したいユーザー向けで、File IPC と ezdxf の 2 つのバックエンドを共通 API で提供します。
主な機能
- 01図面、エンティティ、レイヤーを扱う 8 つの統合ツール
- 02File IPC バックエンドによる AutoLISP コマンドの実行
- 03AutoCAD なしで DXF を生成する ezdxf バックエンド
- 04元に戻す・やり直しと P&ID シンボルの挿入
- 05execute_lisp による任意の AutoLISP コードの実行
活用シーン
- 01MCP クライアントから AutoCAD LT にエンティティや注記を作成
- 02Linux や macOS でのオフライン DXF ファイル生成
- 03P&ID 図面への CTO ライブラリの機器・バルブ配置
MCP 対応
このプロジェクトは MCP サーバーであり、drawing、entity、layer、block、annotation、pid、view、system の各ツールを MCP クライアントに公開します。クライアントは stdio トランスポート経由で接続してこれらを呼び出します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AutoCAD MCP サーバー
AutoCAD LT の自動化とヘッドレス DXF 生成のための MCP サーバーです。
2 つのバックエンドで、1 つの API を提供します。
| バックエンド | 実行環境 | AutoCAD が必要か | スクリーンショット |
|---|---|---|---|
| File IPC | Windows Python | はい — AutoCAD LT 2024 以降(Windows) | Win32 PrintWindow |
| ezdxf | 任意のプラットフォーム | いいえ(ヘッドレス) | matplotlib によるレンダリング |
このサーバーは、MCP の stdio トランスポートを介して 8 つの統合ツール(drawing、entity、layer、block、annotation、pid、view、system)を公開します。MCP クライアント(Claude Desktop、Claude Code など)が接続し、自然言語のリクエストで AutoCAD を操作します。
前提条件(File IPC バックエンド)
- Windows 10/11(File IPC バックエンドは、フォーカス不要のウィンドウメッセージングに Win32 API を使用します)
- AutoCAD LT 2024 以降 — AutoLISP のサポートは、Windows 版の LT 2024 で追加されました。AutoCAD LT for Mac もありますが、AutoLISP はサポートされていません。
- Python 3.10 以降(ネイティブの Windows 版 — WSL の Python ではありません)
- uv パッケージマネージャー(インストールガイド)
ezdxf のヘッドレスバックエンドは、AutoCAD をインストールせずにオフラインで DXF を生成する用途で、あらゆるプラットフォーム(Linux、macOS、WSL)で動作します。
クイックスタート
1. クローンしてインストールする
git clone https://github.com/puran-water/autocad-mcp.git
cd autocad-mcp
uv sync
2. AutoCAD LT に LISP ディスパッチャーを読み込む
AutoCAD LT を開き、APPLOAD を使って mcp_dispatch.lsp を読み込みます。
- AutoCAD のコマンドラインで
APPLOADと入力します <repo>/lisp-code/mcp_dispatch.lspを参照します- Load をクリックします
=== MCP Dispatch v3.1 loaded ===とReady for commands via (c:mcp-dispatch)が表示されます
ヒント: AutoCAD の Startup Suite(APPLOAD ダイアログ内)にこのファイルを追加すると、図面を開くたびに自動的に読み込まれます。
3. MCP クライアントを設定する
MCP クライアントの設定(例:Claude Desktop の claude_desktop_config.json)に追加します。
{
"mcpServers": {
"autocad-mcp": {
"command": "C:\\path\\to\\autocad-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "autocad_mcp"],
"env": { "AUTOCAD_MCP_BACKEND": "auto" }
}
}
}
重要な点:
commandは、プロジェクトの仮想環境内にある Windows 版 Python を指定する必要があります(WSL の Python ではありません)。AUTOCAD_MCP_BACKENDには、auto(デフォルト — File IPC を試し、失敗した場合は ezdxf にフォールバック)、file_ipc(AutoCAD が必要)、またはezdxf(ヘッドレスのみ)を指定できます。
WSL から実行する
MCP クライアントを WSL で実行する場合(例:Claude Code)、cmd.exe 経由でサーバーを起動すると、ネイティブの Windows プロセスとして実行されます。
{
"mcpServers": {
"autocad-mcp": {
"type": "stdio",
"command": "cmd.exe",
"args": ["/d", "/s", "/c", "cd /d C:\\path\\to\\autocad-mcp && .venv\\Scripts\\python.exe -m autocad_mcp"],
"env": { "AUTOCAD_MCP_BACKEND": "auto" }
}
}
}
4. 動作を確認する
MCP クライアントから、次を呼び出します。
system(operation="status")
AutoCAD が実行中であれば backend: "file_ipc"、ヘッドレスモードであれば backend: "ezdxf" が表示されます。
ツール
drawing — ファイル/図面の管理
| 操作 | 説明 | File IPC | ezdxf |
|---|---|---|---|
create | 図面を初期状態にリセット(すべて削除+パージ) | はい | はい |
open | 既存の図面を開く | はい | はい(DXF) |
info | エンティティ数と画層を取得 | はい | はい |
save | 現在の図面を保存(パスが指定されている場合はそのパスに保存) | はい | はい |
save_as_dxf | DXF としてエクスポート | はい | はい |
plot_pdf | PDF に出力 | はい | いいえ |
purge | 未使用のオブジェクトをパージ | はい | はい |
get_variables | 名前を指定してシステム変数を取得 | はい | はい |
undo | 直前の操作を元に戻す | はい | いいえ |
redo | 最後に元に戻した操作をやり直す | はい | いいえ |
entity — エンティティの CRUD と変更
作成: create_line、create_circle、create_polyline、create_rectangle、create_arc、create_ellipse、create_mtext、create_hatch
読み取り: list、count、get
変更: copy、move、rotate、scale、mirror、offset*、array、fillet*、chamfer*、erase
*
offset、fillet、chamferは File IPC のみで利用できます(ezdxf のヘッドレスバックエンドではサポートされていません)。
layer — 画層の管理
list、create、set_current、set_properties、freeze、thaw、lock、unlock
block — ブロック操作
| 操作 | File IPC | ezdxf |
|---|---|---|
list | はい | はい |
insert | はい | はい |
insert_with_attributes | はい | はい |
get_attributes | はい | はい |
update_attribute | はい | はい |
define | いいえ | はい |
annotation — テキスト、寸法、引出線
create_text, create_dimension_linear, create_dimension_aligned, create_dimension_angular, create_dimension_radius, create_leader
pid — P&ID 操作(CTO シンボルライブラリ)
setup_layers, insert_symbol, list_symbols, draw_process_line, connect_equipment, add_flow_arrow, add_equipment_tag, add_line_number, insert_valve, insert_instrument, insert_pump, insert_tank
P&ID シンボルの挿入には、
C:\PIDv4-CTO\に CAD Tools Online(CTO)の P&ID Symbol Library がインストールされている必要があります。ezdxf バックエンドには CTO ライブラリのサポートが組み込まれています。File IPC バックエンドでは、一部の P&ID 操作に追加の LISP ヘルパーが必要です。設定の詳細については、wiki の P&ID セクションを参照してください。
view — ビューポートとスクリーンショット
| 操作 | 説明 |
|---|---|
zoom_extents | すべてのエンティティが表示されるようにズームします |
zoom_window | 指定したウィンドウにズームします |
get_screenshot | 現在の AutoCAD ビューを PNG としてキャプチャします |
File IPC バックエンドのスクリーンショットには PrintWindow(Win32)を使用するため、AutoCAD が最小化されている場合やバックグラウンドにある場合でも動作します。ezdxf バックエンドは matplotlib を介してレンダリングします。
system — サーバー管理
status, health, get_backend, runtime, init, execute_lisp
execute_lispは任意の AutoLISP コードを実行します(File IPC のみ)。data: {code: "(+ 1 2)"}を渡してください。これにより、サーバーが拡張可能な自動化プラットフォームになります。有効な AutoLISP 式であれば実行できます。
アーキテクチャ
MCP Client (Claude)
│ stdio (JSON-RPC)
▼
Python MCP Server (autocad_mcp)
│
├── File IPC Backend ──► C:/temp/*.json ──► mcp_dispatch.lsp (AutoCAD LT)
│ PostMessageW(WM_CHAR) to MDIClient — no focus steal
│
└── ezdxf Backend ──► in-memory DXF (headless, no AutoCAD needed)
File IPC バックエンドは PostMessageW(WM_CHAR) を介して AutoCAD の MDIClient ウィンドウにキーストロークを送信し、(c:mcp-dispatch) AutoLISP コマンドを実行します。この方法ではウィンドウのフォーカスを奪いません。そのため、自動化の実行中もほかのアプリケーションで作業を続けられます。
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
AUTOCAD_MCP_BACKEND | auto | バックエンドの選択:auto、file_ipc、ezdxf |
AUTOCAD_MCP_IPC_DIR | C:/temp | IPC コマンド/結果の JSON ファイル用ディレクトリ(Python 側と LISP 側の両方で一致させる必要があります) |
AUTOCAD_MCP_IPC_TIMEOUT | 10.0 | IPC コマンドのタイムアウト(秒、1~300) |
AUTOCAD_MCP_ONLY_TEXT | false | スクリーンショットのキャプチャを無効にします(テキストフィードバックのみ) |
注:
AUTOCAD_MCP_IPC_DIRを変更した場合は、mcp_dispatch.lsp内の*mcp-ipc-dir*変数も同じ値に更新する必要があります。
開発
uv sync
uv run pytest tests/ -v
AutoCAD LT の AutoLISP 互換性
AutoLISP は 2024 リリース(Windows のみ) で AutoCAD LT に追加されました。Mac 版 AutoCAD LT は AutoLISP をサポートしていません。
| サポート対象(LT 2024 以降の Windows) | 非対応 |
|---|---|
.lsp / .fas / .vlx / .dcl | VLIDE(Visual LISP IDE) |
すべての vl-* ユーティリティ関数 | vlax-*(ActiveX/COM) |
ファイル I/O(open、read-line など) | Express Tools |
エンティティへのアクセス(entget、entmod など) | 3D 操作 |
| 選択セット | Mac での AutoLISP |
mcp_dispatch.lsp ディスパッチャーは LT 2024 以降と完全に互換性があります。
v3.1 の新機能
execute_lisp— 一時ファイル方式で任意の AutoLISP コードを実行します。固定されたコマンドセットから、拡張可能な自動化プラットフォームへとサーバーを進化させます。- 元に戻す/やり直し —
drawingツールで、1 回分の元に戻す操作とやり直し操作を実行します。 - 図面を開く — 既存の
.dwgファイルをプログラムから開きます(FILEDIA を抑制)。 - 図面を作成 —
_.NEWの代わりに現在の図面をリセット(すべて消去+パージ)するようになり、LISP ディスパッチャーの名前空間を維持します。 - パスを指定して図面を保存 —
pathパラメーターを指定したsaveは SAVEAS を使用し、パスを指定しない場合は QSAVE を使用します。 get_variablesの修正 —namesパラメーターを正しく処理し、適切な型処理で指定された変数を返します。- ポリライン/引出線の修正 — 点配列がセミコロン区切り形式で正しくエンコードされます。
- ESC プレフィックス — 各ディスパッチの前に ESC を 2 回送信し、前回のタイムアウトで残った保留中のコマンドをキャンセルします。
- UTF-8/cp1252 フォールバック — LISP 結果ファイル内の非 ASCII 文字を処理します(AutoCAD は Windows-1252 で書き込みます)。
- IPC タイムアウトの設定 —
AUTOCAD_MCP_IPC_TIMEOUT環境変数で設定します(1~300 秒、デフォルトは 10 秒)。 - スレッドセーフなバックエンド初期化 —
asyncio.Lockにより、並列初期化時の競合を防ぎます。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。