MCP CAD Studio について
MCP CAD Studio は、エージェントと人が 3D モデルを共同で作成・編集できるパラメトリック CAD ワークスペースです。インタラクティブな 3D MCP App と、UI に依存しないツール、内蔵 WebAssembly CAD カーネルを備えています。
主な機能
- 01インタラクティブな 3D モデリングスタジオ
- 02パラメトリック形状ツリーの作成と編集
- 03編集可能な部品テンプレートの生成
- 04輪郭とメッシュの検証
- 05STL/OBJ のインポートとエクスポート
- 06リビジョン確認付きの永続ドキュメント
活用シーン
- 01MCP ツールによる部品の作成と改訂
- 02ライブ 3D スタジオでのモデル確認と編集
- 03モデル保存前の形状チェック
MCP 対応
モデル作成、編集、検証、インポート、エクスポートなどの CAD 操作を MCP ツールとして提供します。`studio_ui` ツールでインタラクティブな MCP App を開けます。MCP App を表示できないクライアントでもデータツールを利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
13掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| modelId | string | いいえ | 最初に選択するモデル |
詳細
MCP CAD Studio
MCP サーバーとインタラクティブな MCP App として提供される、単独で動作するパラメトリック CAD ワークスペースです。エージェントはツールを通じてモデルを作成・編集でき、人は互換性のあるホスト内にレンダリングされたライブ 3D スタジオで、同じモデルを操作できます。
できること
studio_uiツールを通じて、フル機能の 3D エディターを表示します。- ボックス、球、円柱、円錐、多角形の押し出し、インポートしたメッシュ、変換、ネストされた和集合・差集合・共通部分のツリーを作成します。
- 編集可能なブラケット、パイプ、ギア、筐体、ボルトを生成します。
- 永続化されたモデルドキュメントを、楽観的リビジョンチェックを使って読み込み、パッチ適用、再生成、削除します。
- 押し出しの輪郭と未加工のメッシュについて、CAD カーネルに渡す前に、対処方法がわかるトポロジー診断を行います。
- ASCII/バイナリ STL と OBJ をインポートし、ASCII STL と OBJ をエクスポートします。
- 開いているアプリを、モデルから開始された MCP ツール呼び出しと同期します。
- stdio または Streamable HTTP で動作し、HTTPS にも直接対応します。
- 同梱の WebAssembly CAD カーネルを使用します。OpenSCAD、Python、コンパイラー、Docker、ネイティブ CAD のインストールは不要です。
サーバーのデータツールは UI に依存しません。MCP Apps をレンダリングできないクライアントでも、すべての CAD 操作を実行し、構造化されたモデル/メッシュデータを受け取れます。
インストール
実行環境として必要なのは Node.js 20 以降のみです。CAD エンジンとすべての JavaScript 依存関係は、パッケージとともにインストールされます。
公開 npm パッケージを実行します。
npx -y mcp-cad-studio --stdio
または、クローンしてビルドします。
git clone https://github.com/flujo-app/mcp-cad-studio.git
cd mcp-cad-studio
npm install
npm run build
npm start -- --stdio
MCP クライアントの設定(stdio)
{
"mcpServers": {
"cad-studio": {
"command": "npx",
"args": ["-y", "mcp-cad-studio", "--stdio"]
}
}
}
デフォルトでは、モデルは ~/.mcp-cad-studio/models.json に永続化されます。別のファイルを指定するには --data-file <path> を、メモリー内のセッションにするには --no-persist を使用します。
HTTPS/Streamable HTTP
自己署名証明書を生成して、ローカル HTTPS エンドポイントを起動します。
mcp-cad-studio --transport https --host 127.0.0.1 --port 8787
外部からアクセス可能な本番サーバーには、信頼された証明書を使用します。
mcp-cad-studio --transport https \
--host 0.0.0.0 \
--port 8787 \
--tls-cert /run/secrets/fullchain.pem \
--tls-key /run/secrets/privkey.pem
MCP エンドポイントは /mcp です。読み取り専用のヘルスエンドポイントとして /health を利用できます。リバースプロキシでの TLS 終端にも対応しています。その場合は、プロキシの背後で --transport http を指定して起動します。
MCP ツール
| ツール | 用途 |
|---|---|
studio_ui | インタラクティブな MCP App を開き、必要に応じてモデルを選択します |
list_models | 保存済みのモデルとリビジョンを一覧表示します |
load_model | パラメトリックドキュメントとそのレンダリングメッシュを読み込みます |
create_model | 宣言的な形状ツリーからモデルを作成します |
generate_model | テンプレートモデルを作成するか、modelId を指定して既存モデルを再生成します |
update_model | モデルの定義、名前、色にパッチを適用するか、置き換えます |
validate_shape | 保存せずに形状を事前検証します |
transform_model | 追加の平行移動、回転、スケーリングを適用します |
boolean_models | 保存済みモデルの和集合、差集合、共通部分を新しいモデルとして作成します |
duplicate_model | 編集可能なコピーを作成します |
delete_model | モデルを完全に削除します |
import_model | STL/OBJ のテキストまたは base64 データをインポートします |
export_model | ASCII STL/OBJ データをエクスポートします |
変更を行うすべての結果には、structuredContent に models、activeModel、mesh が含まれるため、UI とモデルは同じ正規状態を参照します。モデルの作成は、実際に別個のモデルが必要な場合に限ります。リビジョンを更新するには、まず load_model を呼び出し、その modelId と revision を expectedRevision として update_model、generate_model、または delete_model に渡します。
コピーを作成せずに更新する
update_model はモデル ID を維持し、完全な置き換え用の
shape または小規模な RFC 6901 JSON Pointer 形式のパッチをサポートします。モデル定義全体を再送信せずに、保存済みボックスの X サイズを変更できます。
{
"modelId": "5e44fd24-b7df-450a-a7bb-31c95496832f",
"expectedRevision": 3,
"patches": [
{ "op": "replace", "path": "/shape/size/0", "value": 80 }
]
}
パッチの対象には /shape、/name、/color を指定でき、順番に適用されます。
add、replace、remove がサポートされています。完成した定義は、保存済みモデルが変更される前にスキーマとジオメトリのチェックを受けます。
歯車の歯数変更など、テンプレートレベルの編集を行うには、既存の modelId と expectedRevision を指定して
generate_model を呼び出します。テンプレートは別のモデルを作成するのではなく、同じドキュメント内で再生成されます。
パラメトリックモデル形式
create_model と update_model は再帰的な形状ツリーを受け付けます。たとえば、円筒形の穴があるプレートは次のように指定します。
{
"name": "Mounting plate",
"color": "#60a5fa",
"shape": {
"kind": "difference",
"children": [
{ "kind": "box", "size": [80, 50, 6], "center": true },
{
"kind": "cylinder",
"height": 8,
"radius": 5,
"segments": 48,
"center": true
}
]
}
}
各ノードには変換を含めることができます。
{
"transform": {
"translation": [10, 0, 4],
"rotation": [0, 0, 45],
"scale": [1, 1, 1]
}
}
回転には度を使用します。カーネル内の寸法に単位はありませんが、スタジオではミリメートルとして表示されます。
形状オブジェクトは厳密に検証されます。スペルミスのあるフィールドやサポートされていないフィールドは、無視されずにエラーになります。validate_shape は下書きを保存せずに検証し、JSON パス、エラーコード、推奨される修正を報告します。チェック項目は次のとおりです。
- 押し出し輪郭における重複、長さゼロ、面積ゼロ、および自己交差;
- メッシュ配列の不完全な状態や範囲外の値、および退化した三角形;
- 開いた境界、共有する面が多すぎるエッジ、一貫性のない巻き順、および頂点で分離したサーフェスファン;
- 形状ツリーとねじれ押し出しの複雑さの上限;
- Manifold CAD カーネルによる最終検証。
カーネルが形状を拒否した場合、そのステータスは、有限でない頂点、非多様体ジオメトリ、無効な構築、サイズ超過の結果、その他のカーネルステータスクラスに関するガイダンスに変換されます。
アーキテクチャ
flowchart LR
A[Agent or person] --> H[MCP host]
H <-->|stdio or Streamable HTTP/S| S[MCP CAD Studio server]
H <-->|MCP Apps JSON-RPC bridge| U[Interactive CAD app]
U -->|tools/call| H
S --> P[Persistent parametric documents]
S --> K[Bundled Manifold WebAssembly kernel]
K --> M[Render mesh and STL/OBJ]
M --> S
studio_ui ツールは、_meta.ui.resourceUri を使用して ui://cad-studio/studio.html にリンクします。このコンポーネントは、ホスト固有のグローバルを必要とせず、安定した MCP Apps ブリッジ(ui/initialize、ui/notifications/*、tools/call)を使用します。モデルのポーリングはリビジョンを認識するため、すでに開いているエディターにも外部ツールによる編集が反映されます。
開発
npm install
npm run check
npm run check は、厳格な TypeScript 型チェック、カーネル/ストア/プロトコル/トランスポートの 16 件のテスト、本番ビルドを実行します。テストスイートでは、実際の WebAssembly ジオメトリエンジンと、インメモリおよび Streamable HTTP の MCP クライアントの両方を使用します。
便利なコマンド:
npm run dev # HTTP development server on port 8787
npm test # Vitest suite
npm run typecheck # TypeScript only
npm run build # bundle the MCP App and server
npm pack # verify the single-package artifact
現在のバージョンを npm に公開するには:
npm run release
リリースコマンドは、必要に応じて npm にサインインし、チェック一式を実行してパッケージを公開し、npm からそのバージョンが提供されていることを確認します。再実行しても安全です。同じバージョンがすでに公開されている場合は、プロジェクトを検証し、重複する公開をスキップします。
公開せずにリリースヘルパーを検証するには、npm run release:check を実行します。
セキュリティに関する注意事項
- ツールスキーマでは、形状の深さ、ノード数、メッシュサイズ、インポートファイルのサイズに上限を設けています。
- 変更ツールでは、読み取り専用/破壊的/オープンワールドのヒントを正確に宣言しています。
expectedRevisionにより、同時編集時の誤った上書きや古い状態での削除を防ぎます。- パッチパスは編集可能なモデルフィールドに制限され、プロトタイプのたどり込みは拒否されます。
- アプリのリソースでは、外部リソース/接続用 CSP を空として宣言しています。
- 生成された自己署名証明書は、ローカル開発専用です。
- 認証方式はデプロイ環境によって異なります。複数ユーザーが利用するリモートインスタンスは、認証済みゲートウェイの背後に配置し、そこでユーザーごとの認可を適用してください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。