mcpField
M
MCP CAD Studio

MCP CAD Studio

ローカル
github.com/flujo-appメディア・デザイン412 週間前に更新

MCP CAD Studio について

MCP CAD Studio は、エージェントと人が 3D モデルを共同で作成・編集できるパラメトリック CAD ワークスペースです。インタラクティブな 3D MCP App と、UI に依存しないツール、内蔵 WebAssembly CAD カーネルを備えています。

主な機能

  1. 01インタラクティブな 3D モデリングスタジオ
  2. 02パラメトリック形状ツリーの作成と編集
  3. 03編集可能な部品テンプレートの生成
  4. 04輪郭とメッシュの検証
  5. 05STL/OBJ のインポートとエクスポート
  6. 06リビジョン確認付きの永続ドキュメント

活用シーン

  1. 01MCP ツールによる部品の作成と改訂
  2. 02ライブ 3D スタジオでのモデル確認と編集
  3. 03モデル保存前の形状チェック

MCP 対応

モデル作成、編集、検証、インポート、エクスポートなどの CAD 操作を MCP ツールとして提供します。`studio_ui` ツールでインタラクティブな MCP App を開けます。MCP App を表示できないクライアントでもデータツールを利用できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"mario-andreschak-mcp-cad-studio": {
"command": "npx",
"args": [
"-y",
"mcp-cad-studio"
]
}
}
}
起動コマンドnpx -y mcp-cad-studio

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmcp-cad-studio0.2.2

ツール

13

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
modelIdstringいいえ最初に選択するモデル

詳細

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_modelSTL/OBJ のテキストまたは base64 データをインポートします
export_modelASCII 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

コメント

MCP は初めてですか?

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

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