daobataotie/CAD-MCP

CAD MCP Server

CAD‑MCP 서버 – 자연어로 CAD 제어하기

무엇인가요 – 일반적인 Windows CAD 프로그램(예: AutoCAD, GstarCAD, ZWCAD)을 플레인 텍스트 지시사항에서 생성된 JSON 인코딩 명령을 전송함으로써 제어할 수 있는 Python 기반 서버입니다. Model‑Context‑Protocol(MCP)를 구현하여 LLM 기반 클라이언트(Claude, Cursor 등)가 35개의 명확히 정의된 도구를 호출하여 도면 생성, 질의, 편집, CAD 파일 관리를 수행할 수 있습니다.

왜 중요한가요 – CAD 작업을 구조화되고 자가 설명 가능한 API로 노출함으로써 자연어 처리와 전통적인 CAD 자동화를 연결합니다. LLM은 서버에 "레이어 ‘Walls’에 반지름 5m 원을 그리기, 모든 엔티티 목록 출력 및 스크린샷 표시"와 같이 요청할 수 있으며, 서버는 이를 CAD 애플리케이션으로의 COM 호출로 변환하고 구조화된 결과를 반환하며, 진행 상황 알림도 스트리밍 방식으로 제공합니다.


핵심 기능 (README에 기재됨)

카테고리 도구 (예시) 수행 가능한 작업
기본 도면 그리기 draw_line, draw_circle, draw_arc, draw_ellipse, draw_rectangle, draw_polyline, draw_text, draw_hatch, add_dimension 텍스트 명령에서 기하학적 기본 도형을 직접 생성하고 주석을 추가합니다.
질의 list_layers, list_entities, get_entity_properties, screenshot 현재 모델 상태를 조회하고 개별 엔티티 핸들을 확인하며, CAD 창의 PNG 미리보기를 얻을 수 있습니다.
편집 erase_entity, move_entity, rotate_entity, scale_entity, copy_entity, mirror_entity, offset_entity, array_linear_entity, array_polar_entity, undo, redo 기존 객체를 프로그래밍 방식으로 수정하며, 일반적인 CAD 편집 워크플로우를 지원합니다.
레이어 및 도면 관리 create_layer, set_current_layer, new_drawing, open_drawing, close_drawing, save_drawing 별도의 레이어에서 작업을 구성하고 CAD UI를 열지 않고도 DWG/DXF 파일을 다룰 수 있습니다.
블록 작업 create_block, insert_block, list_blocks 그룹화된 기하학을 CAD 블록으로 재사용합니다.
명령 전달 send_command 정의된 도구로 커버되지 않은 경우, 임의의 원시 CAD 명령 문자열을 전송할 수 있습니다.
레거시 NLP 인터페이스 process_command 자유형 텍스트를 위의 도구 호출로 변환하는 간단한 파서(백워드 호환성 유지).

내부 동작 방식

  1. MCP 서버src/server.py는 두 가지 전송 방식을 지원하는 FastMCP 서버를 실행합니다:
    • stdio – 로컬, 단일 클라이언트 모드(기본값).
    • streamable‑http – HTTP 엔드포인트(/mcp)로, 여러 리모트 클라이언트가 하나의 CAD 인스턴스를 공유할 수 있습니다.
  2. COM 브리지cad_controller.py는 Windows의 pywin32 COM 인터페이스를 사용하여 설치된 CAD 프로그램과 통신하며, 명령을 발행하고 엔티티 데이터를 읽습니다.
  3. 구조화된 출력 – 각 도구는 models.py에 정의된 outputSchema에 부합하는 JSON 객체를 반환합니다. 스키마에는 structuredContent, readOnlyHint, destructiveHint와 같은 필드가 포함되어 있어 클라이언트가 사용자 승인을 요청할지 자동으로 결정할 수 있습니다.
  4. 진행 상태 알림 – 장시간 실행 작업(예: CAD 시작, 파일 저장)은 단계적인 메시지를 발행하며, MCP 클라이언트는 이를 프로그레스 바로 표시할 수 있습니다.
  5. 레거시 NLP 프로세서nlp_processor.py는 자연어 문자열에서 색상, 도형 키워드, 동작 동사 등을 추출하여 이전 process_command 도구 사용 시 도구 매개변수를 채웁니다.

시작하기 (README에서)

# 리포지토리 복제 및 편집 가능 설치
pip install -e .
# 서버 실행 (기본 stdio 모드)
python src/server.py
# 또는 리모트 클라이언트용 HTTP 전송 방식으로 실행
python src/server.py --transport streamable-http --port 8000

서버 명령을 어떤 MCP 호환 클라이언트(Claude Desktop, Cursor 등) 설정에 추가하고 명령을 시작하세요.


일반적인 사용 사례

  • 빠른 프로토타이핑 – 영어로 방을 설명하여 플로어 플랜을 스케치; LLM이 draw_*create_layer 호출 시퀀스를 생성.
  • 자동 검사 – LLM이 모델을 질의(list_entities, get_entity_properties)하고 설계 규칙을 검증한 후 사용자에게 수정 편집 승인을 요청.
  • 배치 도면 생성 – 자연어 사양 목록을 반복하여 유사한 도면(예: 구성 요소 레이아웃)을 다수 생성.
  • 교육/데모 – UI 도구를 수동으로 클릭하지 않고도 CAD 명령이 시각적 결과에 어떻게 대응하는지 신규 사용자에게 보여줄 수 있습니다.

제한 사항 및 요구 사항

  • Windows 전용 – COM 인터페이스(pywin32)에 의존하므로 Windows에서 지원되는 CAD 제품이 설치된 경우에만 실행 가능합니다.
  • CAD 소프트웨어 설치 필요 – AutoCAD, GstarCAD 또는 ZWCAD가 설치되어 있고 라이선스가 있어야 합니다.
  • Python 3.10+ – 최신 타이핑 기능(pydantic>=2)을 사용합니다.
  • 내장 AI 모델 없음 – 서버에는 LLM이 포함되어 있지 않으며, 외부 MCP 클라이언트(Claude, Cursor 등)가 도구 호출을 생성해야 합니다.
  • 레거시 NLP는 단순 키워드 매칭 – 복잡한 언어 이해가 필요할 경우 process_command 대신 전체 MCP 도구 세트를 사용해야 합니다.

라이선스

MIT – 자유롭게 사용, 수정, 상용 워크플로우에 포함 가능.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트