PrintMCP
A self-hosted MCP server completely automating the 3D printing pipeline. Search and download files from Thingiverse, load and slice files with UltiMaker Cura, and print with Octoprint.
Install / Use
claude mcp add SourceBox-LLC -- npx -y github:SourceBox-LLC/PrintMCPIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AutomationSupported Platforms
Tags
Our assessment of PrintMCP
PrintMCP scores 83/100 on our quality scale, 1889th of 2,864 Automation skills we index.
Its MCP Server is 20 KB long, well organised into 34 sections with 15 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 24 days ago, so PrintMCP is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
PrintMCP compared with similar skills
All 4 of these similar skills score higher than PrintMCP; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| PrintMCP (this skill)by SourceBox-LLC | 83 | 3 | 24d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 87.5k | 16d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.2k | today | CLAUDE.md |
| rufloby ruvnet | 100 | 73.7k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
Frequently asked questions
- How do I install PrintMCP?
- Run
claude mcp add SourceBox-LLC -- npx -y github:SourceBox-LLC/PrintMCP. The install tabs above show the steps for each supported agent. - Which AI agents does PrintMCP work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is PrintMCP safe to use?
- It is Apache-2.0-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is PrintMCP still maintained?
- The repository was last updated 24 days ago, so PrintMCP is actively maintained.
Skill content
View source on GitHubFrom "I want to print a coffee cup" to a finished print — driven by your AI agent.
PrintMCP is a Model Context Protocol server that automates the entire 3D-printing pipeline: find a model, slice it to G-code, and print it — all through tools an AI assistant can call.
🌐 View the website → — interactive demo, pipeline visualization, and full documentation.
If PrintMCP is useful to you, please ⭐ star the repo — it helps others find it.
</div>🧭 The pipeline
PrintMCP is built in three levels. Each level is a group of tools, and together they form one continuous workflow from a vague idea to plastic on the bed.
flowchart LR
Start(["🗣️ User request"]) --> S1
subgraph L1["1 · Source — Thingiverse"]
direction TB
S1["search_models"] --> S2["get_model"] --> S3["download_model"]
end
subgraph L2["2 · Slice — Cura / OrcaSlicer"]
direction TB
SL["cura_slice_model"]
OR["orca_slice_model / orca_list_profiles"]
end
subgraph L3["3 · Print — OctoPrint"]
direction TB
P1["upload_file"] --> P2["start_print"] --> P3["get_job"]
end
S3 --> SL --> P1
P3 --> Done(["✅ Finished print"])
| Level | Scope | Backend | Status | |:-----:|-------|---------|:------:| | 1 · Source | Search for and download 3D model files | Thingiverse REST API | ✅ Implemented | | 2 · Slice | Slice models into printer-ready G-code | Ultimaker Cura (headless CuraEngine) or OrcaSlicer | ✅ Implemented | | 3 · Print | Upload, start, monitor, and control prints | OctoPrint REST API | ✅ Implemented |
📑 Table of contents
- ✨ Highlights
- 📚 Documentation
- 🛡️ Safety model
- 🧰 Tool reference
- 📦 Requirements
- 🚀 Quick start
- ⚙️ Configuration
- 🔌 Register with an MCP client
- 💡 Example: coffee cup to print
- 🗂️ Project structure
- 🧪 Development
- 🗺️ Roadmap
- ⚖️ Model licensing
- 📄 License
✨ Highlights
- One server, the whole pipeline. Search → download → slice → print, without leaving your assistant.
- License-aware sourcing. Every model's license is surfaced before you download, so you don't misuse it.
- Real slicing, real estimates. Slice with Ultimaker Cura's CuraEngine or OrcaSlicer (CLI, native or Flatpak), and report the true print time and filament usage from the engine itself.
- Safe by default. Tools that physically actuate the printer (heaters, motors) refuse to act unless you
explicitly pass
confirm=true— see Safety model. - Structured or human output. Every tool accepts
response_format(markdownorjson). - Zero-secret-in-output design. Credentials live in
.envand are sent only to the services they belong to.
📚 Documentation
Full guides, a per-tool reference, and step-by-step tutorials live in docs/.
| Start here | Then |
|------------|------|
| 📖 Documentation hub | the index of everything below |
| 🚀 Getting Started | install, configure, connect a client |
| ⚙️ Configuration | every env var + where files are stored |
| 🛡️ Safety Model | how confirm=true protects your machine |
| 🔧 Troubleshooting | common errors → fixes |
| 🏛️ Architecture | how it's built (for contributors) |
Tutorials — learn to 3D print by chatting with your assistant:
For developers — tool reference & API: the shared invocation contract, plus per-level details for Thingiverse, Cura, and OctoPrint.
🛡️ Safety model
[!WARNING] Level 3 drives a real machine. A bad tool call could heat a nozzle, move an axis, or abandon a print.
To prevent accidents, every physical-actuation tool defaults to a dry run. Called without confirm, it
describes exactly what would happen and sends nothing to the printer. Pass confirm=true to actually act.
octoprint_start_print(path="cup.gcode") → 🟡 dry run: "this would start printing cup.gcode"
octoprint_start_print(path="cup.gcode", confirm=true) → 🟢 starts the print
[!NOTE] Read-only tools (
octoprint_get_status,octoprint_list_files,octoprint_get_job) never needconfirm. Temperatures are also sanity-checked (e.g. the bed is capped at ~140 °C) so a typo can't command a wild value.
🧰 Tool reference
All tools accept response_format (markdown or json). Tools marked 🔒 physically actuate the printer and
require confirm=true; without it they return a harmless dry-run preview.
Level 1 · Source — Thingiverse
| Tool | What it does |
|------|--------------|
| thingiverse_search_models | Keyword search for printable "things"; returns candidates with IDs. |
| thingiverse_get_model | Details for one thing: license, description, and downloadable files. |
| thingiverse_download_model | Download a thing's files (printable models by default) to local disk. |
Level 2 · Slice — Cura or OrcaSlicer
PrintMCP ships two interchangeable slicer backends; use whichever you have installed. Both are auto-detected.
| Tool | What it does |
|------|--------------|
| cura_slice_model | Slice a local .stl/.obj/.3mf/.amf/.ply into G-code via CuraEngine. Choose printer, layer height, infill, supports, adhesion, and temperatures; returns the G-code path plus estimated print time and filament. |
| orca_slice_model | Slice a local model into G-code via OrcaSlicer's CLI using its 3-tier presets (machine + process + filament). Works with native or Flatpak installs. Returns the G-code path plus estimated print time and filament. |
| orca_list_profiles | List available OrcaSlicer presets by tier (machine/process/filament), with an optional name filter — use it to find the exact preset names orca_slice_model needs. |
Level 3 · Print — OctoPrint
| Tool | What it does | |
|------|--------------|:--:|
| octoprint_get_status | Connection state, printer state, and live tool/bed temperatures. | 👁️ |
| octoprint_list_files | List G-code files on the server, with their server-side paths. | 👁️ |
| octoprint_get_job | Active job: file, % complete, elapsed, and estimated time remaining. | 👁️ |
| octoprint_connect | Open or close the printer's serial connection. | 🔒 |
| octoprint_upload_file | Upload a local .gcode to the server (optionally select/print). | 🔒¹ |
| octoprint_start_print | Select a server-side file and begin printing. | 🔒 |
| octoprint_control_job | Pause, resume, or cancel the running job. | 🔒 |
| octoprint_set_temperature | Set a tool (nozzle) or bed target temperature. | 🔒 |
| octoprint_home | Home one or more axes. | 🔒 |
| octoprint_move | Jog the print head by a relative offset. | 🔒 |
<sub>👁️ read-only · 🔒 requires confirm=true · ¹ uploading alone is safe; only starting a print needs confirm.</sub>
📦 Requirements
| | Needed for | Notes | |---|---|---| | Python ≥ 3.10 | everything | — | | uv | everything | Project & dependency manager. | | Thingiverse API token | Level 1 | Free — register an app. | | Ultimaker Cura | Level 2 (Cura) | Its bundled CuraEngine is auto-detected on Windows. | | OrcaSlicer | Level 2 (Orca) | Native or Flatpak; CLI and presets are auto-detected. Either slicer satisfies Level 2. | | An OctoPrint server + API key | Level 3 | Any printer running OctoPrint on your network. |
[!TIP] The levels are independent. You can use Level 1 with just a Thingiverse token, add Cura later for slicing, and wire up OctoPrint whenever your printer is ready.
🚀 Quick start
Install from PyPI
uv tool install printmcp # or: pipx install printmcp
This puts a printmcp command on your PATH. You can also run it without installing:
uvx printmcp
Install from source
git clone https://github.com/SourceBox-LLC/PrintMCP
cd PrintMCP
uv sync # creates .venv, installs PrintMCP + dev tools
Then: configure and run
# Configure your secrets (in the working directory you'll run from)
cp .env.example .env # Windows: copy .env.example .env
# …then edit .env (see Configuration below)
# Run the server (stdio — it blocks waiting for an MCP client; that's expected)
printmcp # if installed; from source: uv run printmcp
You normally won't run the server by hand — you register it with a client, which launches it for you.
⚙️ Configuration
PrintMCP reads configuration from environment variables. A .env file in the project root is loaded
automatically (and is git-ignored, so your secrets stay local).
| Variable | Required | Default | Purpose |
|----------|:--------:|---------|---------|
| THINGIVERSE_TOKEN | Level 1 | — | Thingiverse REST API App Token. |
| PRINTMCP_DOWNLOAD_DIR | — | OS Downloads folder (e.g. %USERPROFILE%\Downloads, ~/Downloads); falls back to ~/PrintMCP/downloads if not found | Where downloaded models are saved. |
| PRINTMCP_CURA_DIR | — | auto-detected | Ultimaker Cura install folder (e.g. C:\Program Files\UltiMaker Cura 5.11.0). Set only if auto-detection fails. |
| PRINTMCP_CURAENGINE | — | <cura>/CuraEngine.exe | Full path to the CuraEngine executable, if it lives outside the Cura folder. |
| PRINTMCP_ORCA_COMMAND | — | auto-detected | OrcaSlicer launch command, e.g. orca-slicer or flatpak run com.orcaslicer.OrcaSlicer. Set only if auto-detection fails. |
| PRINTMCP_ORCA_PROFILES | — | auto-detected | OrcaSlicer's bundled .../share/OrcaSlicer/profiles directory (the vendor folders of machine/process/filament presets). |
| OCTOPRINT_URL | Level 3 | — | Base URL of your OctoPrint server, e.g. http://octopi.local or http://192.168.1.50:80. |
| OCTOPRINT_API_KEY | Level 3 | — | Oc
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
87.5kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.2kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ruflo
73.7k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
CowAgent
47.2kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
