Skip to main content
Glama
hiromitsdm

cad-mcp

by hiromitsdm

cad-mcp

STEPファイルのCADジオメトリ推論をLLMに提供するMCPサーバー。STEPファイルをドロップし、自然言語でジオメトリに関する質問をすると、検証可能な回答が得られます。build123d (OCCTベース) と MCP Python SDK 上に構築されています。Claude Codeを使用してローカルで実行します。

インストール

Python 3.12、arm64 (Apple Silicon) または x86-64が必要です。

git clone https://github.com/your-org/cad-mcp.git
cd cad-mcp
python3.12 -m venv venv
venv/bin/pip install -r requirements.txt

インストールのスモークテスト:

venv/bin/python smoke_test.py      # loads bracket.step, checks bbox
venv/bin/python verify_server.py   # connects over MCP stdio, calls all tools

Related MCP server: root-ext-cad

実行

Claude Codeがこのディレクトリを開くと、サーバーは自動的に起動します(.mcp.jsonが含まれています)。手動で起動する場合:

venv/bin/python server.py

別のSTEPファイルを接続するには、ツール呼び出し時にその絶対パスを渡します。サーバーの再起動は不要です。

ツール

ツール

戻り値

list_assembly_tree

ツリー形式の部品/アセンブリ階層

get_part_dimensions

バウンディングボックス (mm) および体積 (mm³)

find_holes

円筒形の穴: 位置、直径、深さ (mm)

measure_distance

部品参照点間のユークリッド距離 (mm)

get_mass_properties

質量 (kg)、重心 (mm)、慣性モーメント (kg·mm²)

デモ

Claude CodeにMCPサーバーを接続し、fixtures/bracket.step(100 × 60 × 10 mmのアルミニウム製ブラケット、4つのM5クリアランス穴)に対して5つの質問を行った例です。


bracket.stepは単一の部品ですか、それともアセンブリですか?

ツール: list_assembly_tree

{
  "root": {
    "type": "part",
    "name": "part_root",
    "part_id": "root",
    "children": []
  }
}

単一の部品です。part_id: "root"が他のすべてのツールに渡されます。


全体の寸法と体積は?

ツール: get_part_dimensions

{
  "part_id": "root",
  "bbox_mm": { "x": 100.0, "y": 60.0, "z": 10.0 },
  "volume_mm3": 59117.5266
}

100 × 60 × 10 mm。体積は正味(材料のみ)で、総体積から4つの穴を引いたものです。


穴の数とサイズは?

ツール: find_holes

{
  "holes": [
    { "center_x_mm": -42.0, "center_y_mm": -22.0, "center_z_mm": 0.0,
      "diameter_mm": 5.3, "depth_mm": 10.0, "axis": [0.0, 0.0, 1.0] },
    { "center_x_mm":  42.0, "center_y_mm": -22.0, "center_z_mm": 0.0,
      "diameter_mm": 5.3, "depth_mm": 10.0, "axis": [0.0, 0.0, 1.0] },
    { "center_x_mm": -42.0, "center_y_mm":  22.0, "center_z_mm": 0.0,
      "diameter_mm": 5.3, "depth_mm": 10.0, "axis": [0.0, 0.0, 1.0] },
    { "center_x_mm":  42.0, "center_y_mm":  22.0, "center_z_mm": 0.0,
      "diameter_mm": 5.3, "depth_mm": 10.0, "axis": [0.0, 0.0, 1.0] }
  ]
}

角に4つのM5クリアランス(5.3 mm)貫通穴があり、すべてXY平面に対して垂直です。


角から角までの空間対角距離は?

ツール: measure_distance (引数: selector_a: "bbox_min", selector_b: "bbox_max")

{
  "distance_mm": 117.047,
  "point_a": { "part_id": "root", "selector": "bbox_min",
               "x_mm": -50.0, "y_mm": -30.0, "z_mm": 0.0 },
  "point_b": { "part_id": "root", "selector": "bbox_max",
               "x_mm":  50.0, "y_mm":  30.0, "z_mm": 10.0 }
}

√(100² + 60² + 10²) = 117.047 mm。追跡可能性のために、解決された両方のポイントが含まれます。


アルミニウムの場合の質量と重心は?

ツール: get_mass_properties (引数: density_kg_m3: 2700.0)

{
  "mass_kg": 0.159617,
  "volume_mm3": 59117.5266,
  "center_of_mass_mm": { "x_mm": 0.0, "y_mm": 0.0, "z_mm": 5.0 },
  "moments_of_inertia_kg_mm2": {
    "Ixx": 48.772745,
    "Iyy": 132.122917,
    "Izz": 178.235373
  }
}

約160 g。重心は幾何学的中心 (0, 0, 5) にあります。これは対称的な穴を持つ対称的なブラケットとして予想される結果です。

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    B
    maintenance
    CAD-engineering MCP tool server for parametric modeling, DFM validation, mechanical calculations, and more. Enables code-CAD builds (build123d/CadQuery), model inspection, meshing, and mechanical calculators via MCP stdio.
    11
    -
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that parses CAD files (.dwg, .dxf, .dwf, etc.) via the Cadlens API, enabling LLM clients to extract and reason over entity, layer, and metadata payloads.
    7
    46 npm
    1
    MIT