Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

prusactl

MCPB · PRUSACTL.MCPB

Run a Prusa 3D printer: status, camera, files, printing, G-code, over PrusaLink or Prusa Connect.

Available components

+4 this week 51 Trust /100

Last scanned (6 hours ago)

Scores higher than 86% of MCPB servers

Category IoT and Hardware

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security0
  • No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
  • Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency45
Schema Quality & AI Usability67
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6286 tokens (~224/item across 28 items; 28 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
  • Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 29 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 23 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Oct 26 0
    • Schema quality: 201 → 224 ▼ functional
  • 14 Oct 26 +1
    • Maintenance: unverified → pass ▲ functional
  • 13 Oct 26 +1
    • Security disclosure: unverified → fail ▼ functional
  • 12 Oct 26 0
    • Provenance: unverified → fail ▼ security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 23 Oct 2026 · Analysed mcpb/https://github.com/trevin-lee/prusactl/releases/download/v0.3.0/prusactl.mcpb

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem mcpb
Reason No attestation published

Background: How many MCP packages publish verified provenance →

MCP tools · 28 exposed · ~5,815 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_to_queue ~343

Add a file to the printer's Prusa Connect print queue, either one on the printer (path) or one in Connect storage (hash). Connect starts the next queued job when the printer is idle and marked ready (send_command SET_PRINTER_READY, or set_ready here). Marking it ready says the plate is clear, the same assertion as plate_clear, and nothing verifies it: do it only after looking at get_camera_snapshot or asking the user.

NameTypeReqDescription
hashstring–file in Connect storage (from upload_file or list_connect_files); use instead of path
pathstring–file already on the printer, e.g. /usb/part.bgcode
positionnull|integer–0 = front of the queue, -1 = end (default)
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
set_readyboolean–also mark the printer ready so Connect starts the next job; only with hash. Ready means the plate is clear, the same confirmation plate_clear gives elsewhere: set it only after checking the camera or…
team_idinteger–team owning the Connect file; default is the printer's team
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…
wait_untilinteger–unix time before which the job must not start; only with hash

No output schema declared.

No examples provided.

api_request ~264

Call any printer API endpoint directly, for anything the other tools don't cover. Paths starting with /api/ go to the printer itself over the local network (PrusaLink, e.g. /api/v1/status); paths starting with /app/ go to Prusa Connect as the signed-in user (e.g. PATCH /app/printers/{uuid} for settings, /app/stats/printers/{uuid}/..., /app/teams/{team_id}/files). Credentials in responses are redacted. This is a raw escape hatch for what the other tools don't cover, not a shortcut around them: no safety checks apply (a busy printer, plate_clear), a DELETE or PUT is permanent and really done, and a mistake can start a print, move the head, or change settings. Use start_print, upload_file, run_gcode, send_command, or control_print for anything that prints or moves the printer, and GET to look.

NameTypeReqDescription
body––JSON request body
methodstring–GET, POST, PUT, PATCH or DELETE; default GET
pathstringyes/api/... for the printer (PrusaLink) or /app/... for Prusa Connect
queryobject–query-string parameters

No output schema declared.

No examples provided.

connection_status ~62

How the printer can be reached right now: directly on the local network (PrusaLink) and/or through Prusa Connect, which account is signed in, and whether a local camera (RTSP) is saved. Says what to set up if neither route works.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

control_print ~185

Pause, resume, or stop the current print. A question on the printer's screen (state ATTENTION) can't be answered this way; use respond_to_dialog through Prusa Connect. Pause is reversible and is the right first move when a print looks wrong; stop is final: the job can't be resumed and the part stays on the plate. Stop only for a clear failure or when the user says so.

NameTypeReqDescription
actionstringyespause, resume, or stop
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

delete_connect_files ~186

Delete files from Prusa Connect's cloud storage, freeing the team's quota. Takes the hashes list_connect_files and upload_file report. Permanent, with no undo, and it removes the file for the whole team. delete_printer_files is the equivalent for the printer's own storage.

NameTypeReqDescription
hashesnull|arrayyesfile hashes from list_connect_files or upload_file
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
team_idinteger–team owning the files; default is the team of the named printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

delete_printer_files ~161

Delete files from the printer's storage. Permanent: there is no trash and no undo, and a file that is printing is refused. List the folder first and delete only what the user named or clearly asked to clean up.

NameTypeReqDescription
pathsnull|arrayyesfull paths on the printer, e.g. /usb/old.bgcode
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

download_printer_file ~196

Copy a file from the printer's storage to this computer, e.g. to inspect the G-code or the slicer settings a finished print used. Direct route only: Prusa Connect can't read files off the printer.

NameTypeReqDescription
local_pathstringyesabsolute path on this computer: a folder (the file keeps its name) or a file name
overwriteboolean–replace an existing local file
pathstringyesfile on the printer, e.g. /usb/part.bgcode
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

get_camera_snapshot ~272

The latest image from the printer's camera, so you can see the print, the bed, and the nozzle. Use it before starting a print or moving anything (is the plate clear?) and to watch a print for failures. It is the only way to check the plate yourself: plate_clear is just your say-so. Where the picture comes from: the printer's own camera API if it has one; else the camera's RTSP stream, if its address is saved (prusactl setup --camera rtsp://<camera-ip>/live, or PRUSACTL_CAMERA_URL), grabbed with ffmpeg, which must be installed; else Prusa Connect. via=direct forces the first two, via=connect forces Connect. Reports where the image came from and how old it is.

NameTypeReqDescription
camera_idstring–camera to use when the printer has several; default is the first
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

get_command ~149

Check the state of a command sent with send_command async=true. The state is the last thing that happened to it: CREATED (accepted), EMIT (sent to the printer), FINISHED, or REJECTED.

NameTypeReqDescription
command_idintegeryesid returned by an async send_command
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

get_firmware_status ~129

The firmware the printer runs, the latest one Prusa Connect offers for it, and whether they differ (state: supported, outdated or unsupported). Read-only; Prusa Connect only.

NameTypeReqDescription
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

get_job ~148

One print job in detail, including the objects on the plate that can be cancelled individually (cancelable.objects; cancel one with send_command CANCEL_OBJECT and kwargs {"object_id": id}).

NameTypeReqDescription
job_idintegeryesjob id from list_jobs or get_printer's job_info
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

get_printer ~202

Live status of the printer. "summary" holds the common facts in the same place whichever route was used: state, nozzle/bed/chamber temperatures with their targets, and the current job's name, progress and time remaining. Everything the route itself reported is kept alongside it, so through Prusa Connect that also includes axis positions, fans, speed/flow, filament, nozzle, settings and dialog_info (the dialog on the printer's screen, which respond_to_dialog answers), and directly it includes the printer's own status, info and job records.

NameTypeReqDescription
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

get_queue ~144

The printer's print queue in Prusa Connect: jobs waiting to print, in order, with their ids.

NameTypeReqDescription
limitinteger–how many entries to return; at most 500
offsetinteger–entries to skip, for the next page
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

get_telemetry ~143

Recent telemetry history from Prusa Connect: temperatures, fans, speed, and axis positions over time.

NameTypeReqDescription
granularityinteger–seconds between samples; default 15
minutesinteger–how far back to go; default 30
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

get_transfers ~118

File transfers to the printer that are in progress (with progress), plus, through Prusa Connect, files waiting in its download queue.

NameTypeReqDescription
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

list_connect_files ~192

Files stored in Prusa Connect's cloud storage for a team, with the hashes add_to_queue takes. These count against the team's storage quota; delete_connect_files removes them, and delete_printer_files removes files from the printer instead.

NameTypeReqDescription
limitinteger–how many entries to return; at most 500
offsetinteger–entries to skip, for the next page
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
team_idinteger–team whose storage to list; default is the team of the first printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

list_events ~166

The printer's event log from Prusa Connect, newest first: state changes, job starts and finishes, errors, attention requests, commands, and file transfers. Use it to find out what happened while nobody was watching.

NameTypeReqDescription
limitinteger–how many entries to return; at most 500
offsetinteger–entries to skip, for the next page
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

list_jobs ~174

The printer's job history, newest first: what printed, when, for how long, and how it ended.

NameTypeReqDescription
limitinteger–how many entries to return; at most 500
offsetinteger–entries to skip, for the next page
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
statesnull|array–filter by job state, e.g. PRINTING, FIN_OK, FIN_ERROR, FIN_STOPPED
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

list_printer_files ~175

Browse files on the printer's own storage (USB drive). Without path, lists the storages.

NameTypeReqDescription
limitinteger–how many entries to return; at most 500
offsetinteger–entries to skip, for the next page
pathstring–folder on the printer, e.g. /usb or /usb/parts; omit to list the printer's storages
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

list_printers ~62

The printers prusactl can reach: the one set up for direct access (with whether it answers right now) and those on the Prusa Connect account, with state, temperatures, filament, job progress, and any dialog on the printer's screen.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_supported_commands ~199

List every command this printer's firmware accepts through Connect: its arguments (name, type, unit, default, required) and the printer states it may run in (executable_from_state). This is the full control surface of the printer: movement, homing, temperatures, fans, speed/flow, filament load/unload, mesh bed leveling, file and folder management, printer-ready flags, resets, and G-code snippets from the team library.

NameTypeReqDescription
executable_nowboolean–only list commands the printer accepts in its current state
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

remove_from_queue ~136

Remove a job from the printer's Prusa Connect print queue. The queue entry is gone for good; add_to_queue puts it back at the end.

NameTypeReqDescription
job_idintegeryesqueued job id from get_queue
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

respond_to_dialog ~173

Press a button on the dialog currently shown on the printer's screen (filament runout, errors, confirmations, "remove the print" prompts, etc.), the way the Connect web app does remotely. get_printer shows the open dialog in dialog_info with its text and buttons.

NameTypeReqDescription
buttonstringyeslabel of the button to press, exactly as get_printer shows it in dialog_info.buttons
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

run_gcode ~425

Run G-code on the printer over the direct connection: prusactl uploads it as a tiny print job (/usb/prusactl-macro.gcode) and starts it, so it only works while the printer is idle (not printing or paused). This is how to heat (M104/M140/M109/M190), home (G28), move (G90/G91 + G1), load/unload filament (M701/M702), level (G29), or send any other command when Prusa Connect isn't available. It is not a console: the G-code is written to "/usb/prusactl-macro.gcode" on the printer, overwriting the previous run's, and started as a real print job. It shows up on the printer and in history as a short print, occupies the printer until it ends (control_print stop cancels it), and does exactly what the G-code says, with no checks on its content. Moves act on real hardware: make sure nothing is in the way. After a finished or stopped print it needs plate_clear=true, which is your own assertion: verify the plate with get_camera_snapshot or the user first.

NameTypeReqDescription
gcodestringyesG-code lines to run, e.g. "G28\nM104 S215"
plate_clearboolean–your own assertion that the plate is empty; nothing checks it, so make it true: look at get_camera_snapshot and read the image, or take the user's word. Required when the printer is FINISHED or STOPP…
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

send_command ~387

Run any command from list_supported_commands on the printer, exactly as the Connect web app's controls do. The command and state are checked against the printer's supported-command list first. By default waits for the printer to acknowledge. Physical commands (MOVE, HOME, heating, filament, MESH_BED_LEVELING) act on real hardware: check get_printer and the camera first. After a finished or stopped print, START_PRINT, HOME, MOVE, MOVE_Z and MESH_BED_LEVELING also need plate_clear=true, as start_print does. SET_PRINTER_READY tells Connect the plate is clear, so it is itself that confirmation: send it only after looking.

NameTypeReqDescription
asyncboolean–queue the command and return immediately instead of waiting for the printer to acknowledge it
commandstringyescommand name exactly as list_supported_commands shows it, e.g. HOME, MOVE, SET_NOZZLE_TEMPERATURE
kwargsobject–command arguments by name, typed as list_supported_commands describes them
plate_clearboolean–your own assertion that the plate is empty; nothing checks it, so make it true: look at get_camera_snapshot and read the image, or take the user's word. Required when the printer is FINISHED or STOPP…
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
timeout_secondsinteger–for synchronous commands, how long Connect should wait for the printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

start_print ~263

Start printing a file that is already on the printer's storage. The printer must be idle and the plate clear: check get_printer and look at get_camera_snapshot first. After a finished or stopped print it needs plate_clear=true, which is your own assertion that the plate is empty, so verify it with the camera or the user before setting it.

NameTypeReqDescription
pathstringyesfile on the printer as list_printer_files reports it, e.g. /usb/3DBENC~2.BGC
plate_clearboolean–your own assertion that the plate is empty; nothing checks it, so make it true: look at get_camera_snapshot and read the image, or take the user's word. Required when the printer is FINISHED or STOPP…
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

update_firmware ~314

Install firmware through Prusa Connect: Connect copies the .bbf it hosts (the latest, or version) to the printer's USB drive, then sends the FLASH command, and the printer installs it and restarts. Waits for the copy (a few minutes at most). Without version it goes by Prusa Connect's own verdict: installs the latest when Connect says the firmware is outdated, does nothing when Connect says it is current, and refuses when there is no verdict, so a printer newer than Connect's latest is never downgraded by accident. Refuses before copying anything unless the printer is idle, ready, finished or stopped; a print that starts during the copy leaves the file on the USB drive, not installed, and the result says so. installed is true only when the printer confirmed FLASH. Run it only when the user asked for a firmware update: it restarts the printer, which may ask for a confirmation on its screen.

NameTypeReqDescription
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
versionstring–firmware version to install, e.g. 6.8.1; default is the latest one Connect offers for this printer
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

upload_file ~447

Upload a sliced print file (.bgcode/.gcode) from this computer to the printer, optionally starting it (then=print) or adding it to the Prusa Connect queue (then=queue). Directly on the local network the file goes straight to the printer; through Connect it is stored in Connect and copied to the printer in the background (get_transfers shows progress); there then=print puts it first in the queue and marks the printer ready, and Connect starts it once the file arrives. then=print is refused unless the printer is idle. Before then=print, confirm the plate is clear (a camera snapshot, or the user); plate_clear is your own assertion. Uploading through Connect also leaves a copy in the team's Connect storage, which delete_connect_files removes.

NameTypeReqDescription
destinationstring–printer folder to copy it into, e.g. /usb/; default is the printer's first storage
filenamestring–name on the printer; default is the local file name
local_pathstringyesabsolute path of a sliced file (.bgcode or .gcode) on this computer
overwriteboolean–replace a file with the same name on the printer (direct route)
plate_clearboolean–your own assertion that the plate is empty; nothing checks it, so make it true: look at get_camera_snapshot and read the image, or take the user's word. Required when the printer is FINISHED or STOPP…
printerstring–printer name, serial number, or Connect UUID; optional with a single printer
thenstring–after uploading: none (just store it), print (start it right away), or queue (add to the Prusa Connect print queue); default none
viastring–force a route: direct or connect; by default direct is used when the printer is reachable. Tools that only work one way (the camera, dialogs, the queue, history, run_gcode, download_printer_file) ref…

No output schema declared.

No examples provided.

Install

How do I install the prusactl MCP server?

prusactl ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, a106f81c143fb9f4ad71420be86051617d245dda98c954103ce275eb1a3d560c; the commands to do that are on this page. If it does not match, do not open it.

mcpb · prusactl.mcpb

Download bundle

Check the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.

SHA-256

a106f81c143fb9f4ad71420be86051617d245dda98c954103ce275eb1a3d560c

macOS / Linux

echo "a106f81c143fb9f4ad71420be86051617d245dda98c954103ce275eb1a3d560c  prusactl.mcpb" | shasum -a 256 -c

Windows (PowerShell)

(Get-FileHash -Algorithm SHA256 .\prusactl.mcpb).Hash -eq "a106f81c143fb9f4ad71420be86051617d245dda98c954103ce275eb1a3d560c"

Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.

Common questions

What is the prusactl MCP server?

prusactl is an MCP server listed in the public MCP registry as io.github.trevin-lee/prusactl. Run a Prusa 3D printer: status, camera, files, printing, G-code, over PrusaLink or Prusa Connect. This page covers its MCPB bundle (https://github.com/trevin-lee/prusactl/releases/download/v0.3.0/prusactl.mcpb).

Is the prusactl MCP server safe to use?

prusactl scores 51 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the prusactl MCP server expose?

prusactl exposes 28 tools: add_to_queue, api_request, connection_status, control_print, delete_connect_files, and 23 more. Their descriptions and schemas cost roughly 5,815 tokens of context every time the server is loaded.

What licence is the prusactl MCP server under?

prusactl declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.