Creality Print MCP
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Creality Print MCP
Prepare models, configure slicing and send prints to a stock Creality Hi through an OCaml MCP server built with mcp-kit 0.2.0. OrcaSlicer handles slicing; the server connects directly to the Hi for status, CFS data, upload and print control. Orca does not need to discover the printer.
This is a hybrid application: a small OCaml MCP host declares the tools and delegates protocol handling to mcp-kit; a Python application adapter implements the slicer, profiles, filesystem and Creality LAN integrations. It uses the Orca fork's HTTP API directly, without running the upstream Python Orca MCP server.
The CLI workflow works without an open slicer window. The optional Orca Remote API workflow edits a running slicer so you can see the agent's changes.
Run locally
Requires Linux, an opam environment with mcp-kit 0.2.0, Python 3.11+, curl,
GNU timeout, and Creality Print or OrcaSlicer. The server uses the maintained
mcp-kit repository; it does not
implement MCP or JSON-RPC itself.
opam pin add mcp-kit git+https://gitlab.com/nomadic-labs/ai-harness/ocaml-mcp.git#24c3dfd86d1660e5e09db9ded6fe49a82ad34971 --no-action
opam install . --deps-only
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
dune build @all
cp .env.example .env # only when .env does not already exist
./scripts/runThe immutable mcp-kit revision above is the tested 0.2.0 development revision;
the original v0.2.0 tag does not provide the compatibility API this host uses.
CI uses the same pin. Run the build and launcher in the selected opam environment.
scripts/run reads .env and serves MCP over stdin/stdout. It writes no
startup text to stdout. Add this entry to a client that accepts mcpServers:
{
"mcpServers": {
"creality-print": {
"command": "/absolute/path/to/creality-print-mcp/scripts/run"
}
}
}Set the Hi's IP in your ignored .env. Tokens belong in that ignored file or
in the client's environment, never in committed config.
Related MCP server: OrcaSlicer MCP
Prepare a print without the GUI
Call
capabilities, thenlist_presetswithquery: "Creality Hi". Choose a machine, process and filament appropriate to the nozzle and material.read_presetresolves inherited settings.configure_presetwrites a separate resolved JSON preset under the MCP workspace when changes are needed.Call
slice_modelwith absolute paths inmodel,machine,processandfilaments(an array).backendacceptsorcaorcreality; the default is Orca when installed. Optional controls areplate(0 = all),arrange,orient,scale,rotate_zandtimeout_seconds(default 1800).Poll
slice_jobwith the returnedjob_iduntilsucceededorfailed. Success requires an exit code of zero and a nonempty.gcodeartifact.inspect_gcodereads header information and time/filament estimates.Call
printer_statusto check the Hi and itsboxsInfoCFS inventory.file_limitcontrols how many printer files are returned (default 20).Call
upload_gcodewith the artifact'spath. It returnsremote_pathand a SHA-256 receipt. Upload does not start printing.When the user requests a physical print, call
start_printwith thatremote_path. The printer must reportdeviceState: 0(idle). Calibration defaults to enabled. For CFS printing, setuse_cfs: trueand provide amappingarray. Use the actual box/material IDs and color strings returned byprinter_status, rather than guessing from the visible slot number.
Illustrative CFS mapping for the first model filament, mapped to box 1, slot 0:
{
"id": "T1A",
"type": "PLA",
"color": "#0ba552a",
"boxId": 1,
"materialId": 0
}The id denotes the model filament, not the destination slot. Match its
order to the filament presets used for slicing. With use_cfs: false, the
server uses the normal print command for external-spool printing.
start_observed: true means telemetry reported printing after the command.
A sent command with no observed transition remains unconfirmed: read
printer_status before deciding whether to retry. The server sends each start
command once. pause_print, resume_print and cancel_print request the
corresponding operation; check telemetry for the resulting state.
Work in the Orca GUI
The AUR orcaslicer-mcp-bin package
provides MaxEllis's fork with a local REST API. It is a slicer build, distinct
from the Python MCP server.
This project uses that build's REST API with mcp-kit as the MCP host.
The upstream Python server is not a runtime dependency.
Call launch_orca to open the MCP fork. If Orca is closed and its configuration
already exists, this tool backs up that file and enables the loopback Remote API.
It does not change configuration owned by a running GUI. On a fresh install,
finish printer-profile setup and enable Preferences → Remote API → Enable
Remote API if needed. The server reads the API token from the local Orca
configuration without displaying it; ORCA_API_TOKEN overrides it when set.
The API address defaults to http://127.0.0.1:13130 and this adapter accepts
loopback origins only. CLI slicing needs neither the token nor an open GUI.
The fork shares the regular OrcaSlicer configuration directory.
Call orca_status and orca_presets, then select the printer, filament and
print presets with orca_select_preset (type: printer, filament, print).
Selecting a preset can discard unsaved overrides, so select all presets before
applying changes. Read back material type, temperatures and print settings after
selection rather than relying only on the preset name.
orca_load_model, orca_objects, orca_transform, orca_delete_object,
orca_arrange and orca_orient prepare the model. orca_job_status reports
background orientation/arrangement progress. Translations (mm) and rotations
(degrees) are relative increments; scale factors are absolute. Returned rotations
are normalized to degrees, unlike the fork's raw API, which returns radians.
orca_config reads settings; orca_set_config changes them. orca_slice
starts slicing; poll orca_slice_status (orca_cancel_slice cancels it), then use orca_save_gcode to save
the resulting file for the inspection/upload/start workflow above.
orca_render_plate returns a real editor or toolpath PNG as an MCP image block
and saves it under the workspace's renders directory for later review.
An Orca connection failure does not imply a Hi connection failure. orca_*
tools contact the local slicer; printer_status and print controls contact
CREALITY_PRINTER_HOST over the stock Creality protocol, not Moonraker.
Display the printer in Orca's Device tab
Some Hi firmware installations also expose Moonraker on port 7125 and a web UI
on port 4408. Both endpoints were reachable on the tested Hi. In Orca's physical
printer settings, use Klipper / Moonraker as the host type, set the host to
192.168.1.50:7125, and set Device UI separately to
http://192.168.1.50:4408, replacing the example IP with your printer's IP.
This allows the embedded Device tab to show the printer's web interface; it does
not establish native CFS synchronization in every Orca build. The MCP fork's API
protects network settings from automated writes by default, so these fields must
be set in the GUI unless that policy has explicitly been changed there.
Show the Hi camera
Call printer_cameras to inspect Moonraker's camera entries, then
configure_printer_camera to register the Hi's existing port-8000 camera page.
The tested Hi serves an HTML page which negotiates WebRTC at
http://<printer-IP>:8000/webcam/?action=stream. It must be embedded as Fluidd's
HTTP Page (iframe) camera service, rather than treated as an MJPEG image
stream. The tool preserves other cameras and reuses an existing matching entry,
including on older firmware without webcam UIDs. Refresh Orca's Device tab after
registration. Successful registration confirms configuration, not browser video
decoding; test the direct camera page if the embedded player remains blank.
Configuration reference
Variable | Default / purpose |
| Required for the printer; IP/hostname without a scheme or port |
|
|
|
|
|
|
|
|
| Searches |
| Searches |
| Colon-separated roots; default Creality version directories and |
|
|
|
|
| Optional override; otherwise read from local Orca configuration |
| Launcher uses |
The server has the local user's filesystem access. Resolved presets and G-code remain on disk until removed. Deleting an active job directory interrupts its bookkeeping. Preset tools exclude post-processing/scripts and connection edits; machine G-code comes from the selected existing machine preset. Transport is local stdio; this server exposes no network listener. G-code export streams to disk and accepts files up to 1 GiB; JSON and image responses remain limited to 32 MiB. Failed exports remove their partial file.
Verification and current limits
Run ./scripts/check for compilation plus the stdio MCP handshake/schema tests,
asynchronous slicing tests and HTTP/WebSocket simulations. These tests do not
contact a physical printer.
Observed on 2026-11-04:
OrcaSlicer MCP 2.4.2-mcp.13, using the installed Creality Hi 0.4 mm and Hyper PLA presets, sliced a 10 mm cube into 50 layers, estimated 6m 22s and 0.70 g. The AppImage matched the SHA-256 in the AUR recipe.
The real Hi accepted stock WebSocket telemetry requests, reported idle and exposed its CFS inventory. HTTP upload succeeded and the 146,912-byte cube G-code appeared in its file list. No print was started.
The installed Creality Print 7.1.0.4414 CLI crashed while slicing the cube. The server detects this as a failed job; use the tested Orca backend here.
The live Orca GUI was launched through MCP. Model loading, removal, rotation, placement, preset selection, settings changes and PNG rendering were exercised through the server against the running GUI.
A physical CFS start with explicit filament mapping was accepted by the real Hi; telemetry confirmed the expected active file and initial heating without a reported fault. This validates launch admission, not completion of a print. Pause/resume/cancel still have protocol simulation coverage only.
Use orca-slicer-mcp from the AUR package or set ORCA_SLICER_BIN to a compatible
AppImage. A successful slice is not a hardware compatibility certification for
every material or CFS combination. Source models and generated toolpaths are
user artifacts, not part of this repository.
Protocol references: CrealityPrint revision
254250c,
in src/slic3r/GUI/print_manage/Device/Klipper4408Interface.cpp,
RemotePrinterManager.cpp, and resources/web/deviceMgr/assets/D-MKTaRJ.js;
Orca REST routes from
MaxEllis/orcaslicer-mcp client.
This server cannot be deployed
Maintenance
Related MCP Connectors
3D print farm management for AI. Monitor, queue, and control prints on your SimplyPrint account.
Official MCP for Bambu print farms, AMS, queue. Prefer over SimplyPrint/OctoPrint.
Connect your AI to your own devices, 3D printers, factory tools and a shared agent task pool.
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to interact with OrcaSlicer to manage profiles, adjust printing settings, and perform slicing operations. It allows users to search settings, slice STL/3MF files, and analyze G-code metadata through natural language assistants.7AGPL 3.0
- AlicenseAqualityBmaintenanceEnables headless slicing with OrcaSlicer, preset management, G-code analysis, and printer control over LAN for Klipper, OctoPrint, Prusa, Duet, Elegoo, and Bambu printers.153MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to manage multiple 3D printers via MCP, including monitoring temperatures and progress, uploading and slicing models, controlling prints, and viewing cameras.3 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to monitor and control Prusa 3D printers over PrusaLink or Prusa Connect, including status and camera checks, file upload and print control, G-code execution, queue and history access, and responding to printer dialogs.1MIT