npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

loki-cad-mcp

v1.0.3

Published

MCP server for CAD and 3D modelling — create, edit, export, and reason about 3D models

Readme

loki-cad-mcp — CAD & 3D Modelling MCP Server

Give AI assistants real CAD superpowers — create, edit, validate, and export 3D models without opening SolidWorks, Fusion 360, or Blender.

npm version CI TypeScript Python License: MIT


What It Does

Ask Claude:

"Create an M6 bolt, fillet all edges by 0.5 mm, export to STL, then validate it for FDM printing."

And it just works — no GUI, no scripts, pure conversation.


11 MCP Tools

| Tool | Description | |------|-------------| | cad_create_model | Create box, cylinder, sphere, cone, or torus from parameters | | cad_export_model | Export to STL, STEP, OBJ, GLTF, DXF, or SVG | | cad_query_properties | Volume, surface area, bounding box, centre of mass, optional mass | | cad_apply_operation | Fillet, chamfer, shell, extrude, revolve, boolean ops, mirror, pattern | | cad_validate_model | 3D printability check — watertight, manifold, wall thickness | | cad_list_templates | Browse mechanical / architectural / organic template library | | cad_load_template | Instantiate a template with custom parameters | | cad_import_file | Import an existing STL / STEP / OBJ into memory | | cad_sketch_2d | Create 2D sketches (line, arc, circle, rect) on any plane | | cad_translate_model | Move a model by (x, y, z) offset in mm | | cad_repair_mesh | Fix STL mesh for 3D printing — winding, normals, holes |


Where Are My Files Saved?

Every model you export (STL, STEP, OBJ, etc.) lands in a folder you control. Set CAD_MCP_MODELS_DIR in your config to a real folder on your machine — this is the most important setting.

| Platform | Recommended value | |----------|------------------| | Windows | C:/Users/YourName/Documents/cad-models | | macOS | /Users/yourname/Documents/cad-models | | Linux | /home/yourname/cad-models |

Why does this matter for npx? Without CAD_MCP_MODELS_DIR, files are saved inside the npx cache (~/.npm/_npx/<hash>/node_modules/loki-cad-mcp/models/exports/) — buried and hard to find. Always set this variable.

The folder is created automatically if it doesn't exist. Inside it you'll find:

cad-models/
├── exports/   ← your STL, STEP, OBJ, GLTF, DXF, SVG files
└── previews/  ← PNG preview images

Installation

Prerequisites

| Requirement | Notes | |-------------|-------| | Node.js ≥ 18 | nodejs.org | | Python 3.9–3.12 | cadquery-ocp has no wheels for 3.13+ |

Option 1 — npx (nothing to install)

No global install needed — npx downloads and runs the package on demand.

npx -y loki-cad-mcp

Option 2 — Global npm install

npm install -g loki-cad-mcp

Then reference loki-cad-mcp as the command in your config.

Option 3 — Clone & build

git clone https://github.com/PRATHVI9607/CAD_Autodesk_MCP.git
cd CAD_Autodesk_MCP
npm install          # builds dist/ automatically

Python setup (required for all options)

CadQuery must be installed in a Python 3.9–3.12 environment. Run the setup script once — it creates a .venv and installs all dependencies:

# macOS / Linux
bash scripts/setup.sh

# Windows PowerShell
.\scripts\setup.ps1

Or manually:

python3.12 -m venv .venv
source .venv/bin/activate          # macOS/Linux
# .venv\Scripts\activate           # Windows
pip install -r python/requirements.txt

Configure Claude Desktop

This is how you wire up the server — you never run npx manually. Claude Desktop reads this config file and launches the server automatically.

Step 1 — Open your config file

| Platform | Path | |----------|------| | Windows | %APPDATA%\Claude\claude_desktop_config.json | | macOS | ~/Library/Application Support/Claude/claude_desktop_config.json | | Linux | ~/.config/Claude/claude_desktop_config.json |

Open it in any text editor (Notepad, VS Code, etc.). If it doesn't exist yet, create it.

Step 2 — Paste the config for your platform

Windows — npx

{
  "mcpServers": {
    "loki-cad-mcp": {
      "command": "npx",
      "args": ["-y", "loki-cad-mcp"],
      "env": {
        "CAD_MCP_MODELS_DIR": "C:/Users/YourName/Documents/cad-models",
        "CAD_MCP_PYTHON_CMD": "python"
      }
    }
  }
}

macOS — npx

{
  "mcpServers": {
    "loki-cad-mcp": {
      "command": "npx",
      "args": ["-y", "loki-cad-mcp"],
      "env": {
        "CAD_MCP_MODELS_DIR": "/Users/yourname/Documents/cad-models",
        "CAD_MCP_PYTHON_CMD": "python3"
      }
    }
  }
}

Linux — npx

{
  "mcpServers": {
    "loki-cad-mcp": {
      "command": "npx",
      "args": ["-y", "loki-cad-mcp"],
      "env": {
        "CAD_MCP_MODELS_DIR": "/home/yourname/cad-models",
        "CAD_MCP_PYTHON_CMD": "python3"
      }
    }
  }
}

Replace YourName / yourname with your actual username. The folder (cad-models) is created automatically — you do not need to make it yourself.

Step 3 — Restart Claude Desktop

Close and reopen Claude Desktop. The server starts automatically on the first tool call.

Your exported files will appear at:

  • Windows: C:\Users\YourName\Documents\cad-models\exports\
  • macOS/Linux: ~/Documents/cad-models/exports/

Cloned repo config (if you cloned instead of using npx)

Windows

{
  "mcpServers": {
    "loki-cad-mcp": {
      "command": "node",
      "args": ["C:/path/to/CAD_Autodesk_MCP/dist/index.js"],
      "env": {
        "CAD_MCP_MODELS_DIR": "C:/Users/YourName/Documents/cad-models",
        "CAD_MCP_PYTHON_CMD": "C:/path/to/CAD_Autodesk_MCP/.venv/Scripts/python.exe"
      }
    }
  }
}

macOS / Linux

{
  "mcpServers": {
    "loki-cad-mcp": {
      "command": "node",
      "args": ["/path/to/CAD_Autodesk_MCP/dist/index.js"],
      "env": {
        "CAD_MCP_MODELS_DIR": "/Users/yourname/Documents/cad-models",
        "CAD_MCP_PYTHON_CMD": "/path/to/CAD_Autodesk_MCP/.venv/bin/python"
      }
    }
  }
}

Environment Variables

| Variable | Default | Description | |----------|---------|-------------| | CAD_MCP_MODELS_DIR | ./models ⚠️ | Set this to an absolute path. Default buries files in the npx cache when using npx. | | CAD_MCP_PYTHON_CMD | auto-detected | Path to Python 3.9–3.12 executable. Auto-detects .venv first, then system python3/python. | | CAD_MCP_LOGS_DIR | ./logs | Server log file directory. | | CAD_MCP_GEOMETRY_TIMEOUT_MS | 30000 | Geometry operation timeout in ms. | | CAD_MCP_RENDER_TIMEOUT_MS | 60000 | Render/preview timeout in ms. |


Architecture

MCP Client (Claude Desktop / Claude Code / Cursor / etc.)
    │  stdio transport — MCP protocol (JSON-RPC 2.0)
    ▼
dist/index.js              — 11 tools, Zod validation, StdioServerTransport
dist/http-server.js        — optional REST wrapper on port 3000 (testing)
    │  JSON-RPC 2.0 over subprocess stdin/stdout
    ▼
python/cadquery_server.py  — persistent geometry server
    ├─ CadQuery / OpenCASCADE  (parametric BRep modelling)
    ├─ trimesh                 (mesh validation, repair, OBJ/GLTF export)
    └─ validators.py           (3D-printability checks)
    ▼
CAD_MCP_MODELS_DIR/exports/    (STL, STEP, OBJ, GLTF, DXF, SVG)
CAD_MCP_MODELS_DIR/previews/   (PNG previews)

Development

# Clone & install
git clone https://github.com/PRATHVI9607/CAD_Autodesk_MCP.git
cd cad-mcp
npm install

# Set up Python
.\scripts\setup.ps1   # Windows
bash scripts/setup.sh # macOS/Linux

# Type-check
npm run typecheck

# Build
npm run build

# Start HTTP test server (port 3000)
npm run start:http

# Run integration tests
npm run test:http

Security

  • All output files are strictly confined to CAD_MCP_MODELS_DIR — path traversal is rejected
  • Model names validated against /^[A-Za-z0-9_\-]{1,128}$/
  • Negative / zero dimensions are rejected before reaching the CAD kernel
  • Geometry operations time out after 30 s; renders after 60 s
  • Python executable path validated against shell-injection characters
  • No raw Python stack traces exposed to MCP clients
  • HTTP test server binds to localhost only — do not expose to a network

Templates

9 parametric templates ready to use:

| Category | Templates | |----------|-----------| | Mechanical | bolt_m6, nut_m6, bracket_l, gear_spur | | Architectural | wall_section, column_round, slab_flat | | Organic | blob_sphere, ring_torus |

# In Claude:
"Load the bolt_m6 template with shank_length=40 and export to STL."

License

MIT — see LICENSE.