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 tools実行
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 installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hiromitsdm/cad-mcp0'
If you have feedback or need assistance with the MCP directory API, please join our Discord server