THE CREATOR PATH / LOCAL & OPEN
Make it fit your idea.
Use your AI coding assistant to change understandable dimensions, not to guess whether a mesh is printable. Everything runs locally; there is no hosted AI generator.
Get the source
Install Python 3.11 or newer and clone the repository. The core model tools need no third-party packages. Run commands from the repository root. A model's source ZIP also contains the files needed for the core CLI; unzip before running it.
git clone https://github.com/Prashanth261993/OpenPrintLab.git
cd OpenPrintLab
python -m tools.cli list
python -m tools.cli parameters pocket-tray
python -m tools.cli check pocket-tray --set length=120
python -m tools.cli build pocket-tray --set length=120
The last command writes build/pocket-tray.stl and a JSON report. Repeating it replaces those files; use --output build/my-variant to keep a separate variant. A check failure exits nonzero and explains why. Open the STL in Bambu Studio and follow the beginner workflow; a software report cannot replace slicing.
Use the repository skill
Open this clone in your coding assistant. AGENTS.md describes the rules, and .github/copilot-instructions.md points Copilot at them. The repository-local skill lives at .github/skills/create-printable-model/SKILL.md. In a client that supports repository skills, enable discovery and ask it to use create-printable-model. Clients differ: if your assistant does not discover that folder, explicitly ask it to read that file before making changes. No plugin install or API key is required by this repository.
Read AGENTS.md and .github/skills/create-printable-model/SKILL.md.
Customize pocket-tray to 120 x 80 x 18 mm for dry craft parts.
Use PLA on a Bambu Lab P2S with my 0.4 mm nozzle.
Keep walls at 2.4 mm and the base at 2 mm. Write to build/my-tray.
Validate the parameters and exported mesh. Report actual checks and
file paths. Do not claim a slicer check or physical print test.
Do not connect to or control my printer.
What can be customized?
models/catalog.json contains the default dimensions and descriptions. models/recipes.py defines three original parametric designs: trays, open-channel rests and staircases. Dimensions are millimeters; counts are integers. The CLI exposes the exact supported limits, rejects unknown keys and validates relationships such as remaining compartment width.
These are simple box-union solids, not a general CAD kernel. They have square corners, not rounded fillets. Generated OpenSCAD files are inspection snapshots of the same boxes; editing one does not update the Python source or report. For a new curved or organic object, choose an appropriate CAD tool and add a real export/validation pipeline before claiming support.
Two creation paths, different promises
Precise functional CAD is the shipped path: the original four models remain dependency-free. The separately approved optional CadQuery template lab adds rounded organizers, multi-pen rests and lightweight paper-card stands. Give instructions to your own tool-capable assistant, which uses the shared CLI/MCP to create a fresh variant and actual geometry preview. The local walkthrough includes exact commands and prompts. This is not a hosted chatbot or a wholesale catalog migration.
Decorative AI meshes are a planned, optional path: a visual prompt is not dimensional intent. An attractive mesh still needs size, thickness, topology, rights and human slicer checks. The reuse plan evaluates Meshy's official MCP or skill instead of a duplicate wrapper, with explicit account/privacy/output-license review and a credit cap. FreeCAD and Blender community bridges, Zoo/KCL and Tripo are deferred candidates, not installed integrations. No provider API has been connected or called.
Read the staged reuse plan before approving an experiment. The local no-key tools keep working regardless of those decisions.
Keep the passport with your model
Each JSON report is also a model passport: model version, effective dimensions and parameters, variant ID, editable-source hashes, exact STL SHA-256, CC BY 4.0 design license and a separately labeled suggested P2S recipe. The evidence scope binds that exact version, variant and STL hash. The recipe is not a record of actual settings used.
Every export reruns geometry checks. A dimension or source change produces a new variant identity; slicer and physical records remain not_performed with no invented actual settings. A model version change needs maintainer review. Never copy a successful print report to another variant.
Optional local MCP integration
For an MCP-capable assistant, install the official SDK in a virtual environment using the optional dependency. Use an editable install from this trusted clone; exports are kept in the clone's build/mcp directory.
python -m venv .venv
# Windows:
.\.venv\Scripts\python.exe -m pip install -e ".[mcp]"
# macOS/Linux:
.venv/bin/python -m pip install -e ".[mcp]"
Add a local stdio server in your client's MCP settings. For clients using an mcpServers JSON object, the Windows example below works after replacing both absolute paths. Other clients use different configuration wrappers: preserve the command and arguments, and follow your client's documentation.
{
"mcpServers": {
"openprintlab": {
"command": "C:\\path\\OpenPrintLab\\.venv\\Scripts\\python.exe",
"args": ["-m", "tools.mcp_server"],
"cwd": "C:\\path\\OpenPrintLab"
}
}
}
The four tools are list_models, describe_model, check_model, and export_model. Ask the assistant to describe a model, check proposed parameters, then export after your approval. Export replaces the previous MCP export for that model. It only accepts known model IDs and numeric parameters; there are no shell, arbitrary-path, network or printer-control tools. Your MCP client controls tool approval. Run only trusted source code.
Those are the original model tools. The template lab adds list_templates, describe_template, create_variant and variant_guidance. For optional CAD generation, configure the separate CAD interpreter with ["-m", "tools.mcp_server", "--cadquery"]; see the complete setup and prompts. New variants refuse overwrites and return real preview/download paths.
Contribute a model, not an unsupported promise
State the intended use and exclusions, dimensions, limits, material, orientation and expected clearance. Add original design source and catalog metadata, tests for invalid dimensions and analytical geometry, and regenerate all exports with python -m tools.release. Run python -m unittest discover -s tests -v and python -m tools.release --check. Then build the site with python -m tools.site.
Do not silently promote validation levels. A slicer review needs the STL hash, application version, exact printer/nozzle/plate/material/process selections, warnings and preview observations. A physical test additionally needs real photos, date and outcomes. New dimensions invalidate the old evidence. Record this in a review or issue until the catalog supports evidence-backed promotion.
Use the print-result form for successes, partial successes, failures or a trial stopped before printing. Include the passport identifiers, actual settings and relevant photos/screenshots, or explain why evidence is unavailable. Issues are public: remove private details, credentials and serial numbers. Reports do not automatically promote model status.
Licenses and attribution
Tooling and website code are MIT. Original models, editable design recipes, catalog content, previews and guides are CC BY 4.0. Keep attribution and indicate changes when sharing derivatives. Read the content license scope; design Python is not automatically MIT simply because it is code.