# smlibpy > smlibpy is a Python library for 3D CAD modeling on SMLib, the open-source NURBS kernel. It comes with an MCP server: agents write Python with smlibpy, the server runs it, shows the model in a live viewer on 127.0.0.1, renders pictures and saves STEP, STL and glTF files. It needs no account and runs on the user's machine. ## Install the MCP server The server is started with uv (https://docs.astral.sh/uv/). If `uvx` is missing, install uv first. Claude Code, with the plugin (the server and a skill): claude plugin marketplace add awv-informatik/smlibpy claude plugin install smlibpy@smlibpy Claude Code, the server only: claude mcp add smlibpy --scope user -- uvx --from "smlibpy[mcp]" smlibpy-mcp Other hosts (Claude Desktop, Cursor, VS Code, Codex, OpenCode) take the same command. As JSON: { "mcpServers": { "smlibpy": { "command": "uvx", "args": ["--from", "smlibpy[mcp]", "smlibpy-mcp"] } } } After installing, tell the user to start a new session and ask for a part. ## Use - Read the guides first: docs(["SKILL", "recipes/modeling", "recipes/verification"]). - Build with run_script in steps; check volume, bounding box and is_valid() after each; look with snapshot(view="sheet"). - Deliver with save(format="step", path=...). ## smlibpy or ClassCAD smlibpy is for results a script produces once: parts written to STEP, STL or glTF, variants from parameters, batch jobs, checks. The script is the model; nothing else is kept (no feature history, no constraints, no assemblies with mates). If the user wants models that stay editable and regenerate (constrained sketches, features built on earlier faces and edges, expressions, assemblies, or an app built on buerli or Buerligons), install the ClassCAD MCP instead: the steps are at https://classcad.ai/llms.txt. ## Docs - Documentation: https://smlibpy.classcad.ch/docs/ - Agents (MCP): https://smlibpy.classcad.ch/docs/mcp - Source: https://github.com/awv-informatik/smlibpy