This guide takes you from a fresh clone to a running PrintMCP server connected to your AI assistant. Budget about 10 minutes.
New here? PrintMCP is an MCP server. You don't run it like a normal app — an MCP client (Claude Desktop, Claude Code, etc.) launches it and talks to it over stdin/stdout. This guide ends with registering it in a client.
| Tool | Why | Check |
|---|---|---|
| Python ≥ 3.10 | Runtime | python --version |
| uv (recommended) | Installs & runs PrintMCP (or use pipx) |
uv --version |
| A Thingiverse token | Level 1 (search/download) | Get one below |
| Ultimaker Cura (optional) | Level 2 (slicing) | Only if you'll slice |
| OctoPrint + API key (optional) | Level 3 (printing) | Only if you'll print |
Tip
The three levels are independent. You can finish this guide with only a Thingiverse token and start searching/downloading immediately — add Cura and OctoPrint later.
If you don't have uv yet:
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | shFrom PyPI (puts a printmcp command on your PATH):
uv tool install printmcp # or: pipx install printmcpFrom source (for development, or to get the latest unreleased code):
git clone https://github.com/SourceBox-LLC/PrintMCP
cd PrintMCP
uv sync # creates .venv, installs PrintMCP + the dev groupVerify the install and see what's configured:
printmcp --check # from source: uv run printmcp --checkThis reports the setup status of each level (it never prints your secrets). Right after install
it'll show everything as missing — that's expected; you'll configure credentials next. Other handy
commands: printmcp --version and printmcp --help.
PrintMCP reads configuration from environment variables, loaded automatically from a .env
file in the project root. Copy the template:
cp .env.example .env # Windows: copy .env.example .envThen fill in what you need. For the full list, see Configuration.
-
Go to https://www.thingiverse.com/apps/create and register an app (the free "Desktop/Web" type is fine).
-
Copy its App Token.
-
Put it in
.env:THINGIVERSE_TOKEN=your-app-token-here
OCTOPRINT_URL=http://octopi.local # or http://<printer-ip>:<port>
OCTOPRINT_API_KEY=your-octoprint-api-keyGet the key from OctoPrint → Settings → API (global key), or a per-user Application Key. See Configuration for details.
Warning
.env holds secrets. It's already git-ignored — never commit it. Only .env.example
(with empty values) belongs in the repo.
Nothing to configure if Cura is installed in the standard location — PrintMCP auto-detects it.
Only set PRINTMCP_CURA_DIR if auto-detection fails. See
Configuration.
Re-run the check now that you've set up .env — the levels you configured should switch to OK:
uv run printmcp --checkYou can also start the server directly as a sanity check:
uv run printmcpIt will block silently, waiting for an MCP client on stdin/stdout. That's correct
behavior — press Ctrl+C to stop. Normally you don't run it by hand; the client does.
The setup script detects your installed clients (Claude Code, Claude Desktop, Cursor, Windsurf, opencode), lets you choose one, and configures it:
.\scripts\setup-mcp.ps1Important
Quit the client before running it. MCP clients rewrite their config when they close, so a setup applied while the client is open would be lost. If your chosen client is running, the script stops and asks you to close it and re-run. Details in scripts/README.md.
Prefer to do it by hand? The manual steps for each client follow.
Add this to claude_desktop_config.json (point --directory at your clone):
{
"mcpServers": {
"printmcp": {
"command": "uv",
"args": [
"run",
"--directory",
"C:\\Users\\Sbuss\\Documents\\Software Development\\Projects\\PrintMCP",
"printmcp"
]
}
}
}Restart Claude Desktop. PrintMCP's tools will appear in the tool list.
claude mcp add printmcp -- uv run --directory "C:\Users\Sbuss\Documents\Software Development\Projects\PrintMCP" printmcpSetup's done — from here on, you just talk to your assistant. Head to Tutorial 1 · Find Something to Print and find your first model by simply asking for it.
Hitting an error? The Troubleshooting guide covers the common ones — like
THINGIVERSE_TOKEN is not set, Cura not being found, or the printer being unreachable.