cad-mcp
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 toolsRelated MCP server: root-ext-cad
実行
Claude Codeがこのディレクトリを開くと、サーバーは自動的に起動します(.mcp.jsonが含まれています)。手動で起動する場合:
venv/bin/python server.py別のSTEPファイルを接続するには、ツール呼び出し時にその絶対パスを渡します。サーバーの再起動は不要です。
ツール
ツール | 戻り値 |
| ツリー形式の部品/アセンブリ階層 |
| バウンディングボックス (mm) および体積 (mm³) |
| 円筒形の穴: 位置、直径、深さ (mm) |
| 部品参照点間のユークリッド距離 (mm) |
| 質量 (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) にあります。これは対称的な穴を持つ対称的なブラケットとして予想される結果です。
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server for generating rough-draft project plans from natural-language prompts.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for Python build123d to help AIs develop and reason about 3D models and CAD3888Apache 2.0
- FlicenseAqualityBmaintenanceCAD-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-

cadlens-mcpofficial
AlicenseAqualityBmaintenanceAn 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.746 npm1MIT- AlicenseNot gradedqualityCmaintenanceMCP server for AI-driven CAD operations, enabling parametric modeling, build, inspection, measurement, rendering, and diff comparison with STEP, DXF, and GLB export.MIT