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²)

데모

MCP 서버가 연결된 Claude Code에서 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