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

simple-3d-modeling-mcp

v1.2.12

Published

MCP server that connects Claude (and other AI assistants) to OpenSCAD for 3D modeling

Downloads

137

Readme

simple-3d-modeling-mcp

npm version npm provenance OpenSSF Scorecard CodeQL License: GPL-2.0

Install with Claude Desktop

An MCP (Model Context Protocol) server that lets anyone create, iterate on, and export 3D models through natural conversation with an LLM. Works with any MCP-compatible client — Claude, ChatGPT, Codex, and more. Zero setup — the OpenSCAD engine is bundled via WebAssembly. No system install needed.

Features

  • Zero-setupnpm install simple-3d-modeling-mcp and go. OpenSCAD runs via bundled WASM.
  • Inline previews — rendered PNG images appear directly in the chat
  • Turntable animations — 360 degree animated previews (APNG) for first-look at new models
  • Multi-view grids — front, right, top, and perspective in a single image
  • Live browser viewer — interactive 3D viewer with rotate/zoom/pan, auto-updates on each render
  • Print-ready exports — STL, 3MF, AMF, and more formats for 3D printing
  • Native OpenSCAD support — optionally install OpenSCAD for faster rendering and library support (BOSL2, MCAD)

Quick Start

This server uses the standard Model Context Protocol over stdio, so it works with any MCP-compatible client. Pick yours below:

Claude Desktop

Easiest: Download simple-3d-modeling.mcpb and double-click to install.

Or manually add to your claude_desktop_config.json:

{
  "mcpServers": {
    "simple-3d-modeling": {
      "command": "npx",
      "args": ["-y", "simple-3d-modeling-mcp"]
    }
  }
}

Claude Code

claude mcp add simple-3d-modeling -- npx -y simple-3d-modeling-mcp

ChatGPT Desktop (macOS)

Go to Settings → MCP Servers → Add Server, then enter:

  • Name: simple-3d-modeling
  • Command: npx -y simple-3d-modeling-mcp

OpenAI Codex CLI

codex mcp add simple-3d-modeling -- npx -y simple-3d-modeling-mcp

Other MCP Clients (Cursor, Windsurf, etc.)

Any client that supports MCP over stdio can use this server. The command to run is:

npx -y simple-3d-modeling-mcp

Consult your client's documentation for how to register an MCP server with that command.


That's it. No OpenSCAD install. No PATH configuration.

Tools

| Tool | Description | |------|-------------| | render | Render code to a PNG preview image (also pushes to live viewer) | | render_turntable | 360 degree turntable animation (APNG) | | render_multiview | Multi-view grid (front, right, top, perspective) | | export | Export to STL, 3MF, AMF, OFF, DXF, SVG | | validate | Syntax-check without full render | | open_viewer | Open interactive 3D viewer in browser | | cheatsheet | OpenSCAD language quick-reference | | list_libraries | Discover installed libraries (native OpenSCAD only) | | get_version | Check engine info (WASM or native) | | read_scad_file | Read an existing .scad file |

Live Browser Viewer

On first render, an interactive 3D viewer automatically opens in your browser:

  • Live updates — model refreshes automatically on every render
  • Model history — sidebar shows every version, click to revisit
  • Dimensions — bounding box and volume computed from geometry
  • Export — download STL directly from the viewer
  • Controls — rotate (drag), zoom (scroll), pan (right-drag), wireframe, auto-rotate, grid

Compatibility Notes

| Client | Inline Image Previews | Export / Validate / Viewer | |--------|----------------------|---------------------------| | Claude Desktop | Yes | Yes | | Claude Code | Yes | Yes | | ChatGPT Desktop | Yes | Yes | | OpenAI Codex CLI | Depends on terminal | Yes | | Cursor / Windsurf | Yes | Yes |

Tip: Even if a client doesn't render inline images, the live browser viewer (open_viewer) works everywhere — it opens a standalone browser tab with full 3D interaction.

Native OpenSCAD (Optional)

For faster rendering and library support, install OpenSCAD. The server auto-detects it on your PATH and uses it when available.

Environment Variables

| Variable | Description | Default | |----------|-------------|---------| | OPENSCAD_PATH | Explicit path to native OpenSCAD binary | auto-detected | | OPENSCAD_WORK_DIR | Directory for temporary render files | OS temp dir |

Example Conversation

You: Make me a phone stand that holds the phone at 60 degrees

LLM: calls render — Here's a phone stand with a 60 degree viewing angle. The base is 80mm wide with a 3mm lip. The interactive 3D viewer is open in your browser too. Want me to adjust anything?

You: Make it thicker and add a cable slot in the back

LLM: modifies code, calls render — Updated! Wall thickness is now 4mm with a 12mm cable slot. Check the viewer to spin it around.

You: Perfect! Export it for my 3D printer

LLM: calls export(format="3mf") — Exported to ~/Desktop/phone-stand.3mf (42 KB). Ready to slice and print!

Development

npm install
npm run build        # compile TypeScript
npm test             # run tests
npm run dev          # watch mode

License

GPL-2.0 (required by the openscad-wasm dependency)