MCP 3D Printer Server

by DMontgomery40• 257•• Scanned•Claim this listing•Request removal
Design & Media3d printing3mfbambu labbambu studioduet

Connects MCP to major 3D printer APIs (Orca, FULU's Orca/Bambu, OctoPrint, Klipper, Duet, Repetier, Prusa, Creality). Control prints, monitor status, and perform advanced STL operations like scaling, rotation, sectional editing, and base extension. Includes slicing and visualization.

MCP 3D Printer Server is an open-source mcp server by DMontgomery40, written mainly in TypeScript, with 257 GitHub stars and the GPL-2.0 license. Its code was last updated Oct 30, 2026.

Scan summary: scanned Nov 5, 2026 at commit 6e3dc5a. Seen able to read environment and secrets, connect to the internet. Scan policy

Scanned
Full scan at 6e3dc5a · Nov 5, 2026
Scanned Builds Boots No undeclared egress Reproducible
Static code scanwarn
Secrets scanpass
Dependency audit10 known vulnerabilitieswarn
Manifestserver.jsonpass
Buildpass
Boot & handshake48 toolspass
Network egresspass
Reproducible (×3)pass

Findings (6)

  • medium
    Turns off TLS certificate checking, allowing traffic interception.
    src/printers/bambu.ts:1167
  • medium
    vite@5.4.21: 8 known vulnerabilities
    GHSA-4w7w-66w2-5vf9, GHSA-587h-7wmj-h5pm, GHSA-698v-4r3x-3vcv, GHSA-9jrq-w75r-8gcw, GHSA-fx2h-pf6j-xcff +3 more
    site/package-lock.json
  • low
    Possible example credential in docs/tests: private-key
    tests/fixtures/ftps/key.pem:1
  • low
    minimatch@10.2.6: 1 known vulnerability
    GHSA-g3hv-75wg-m249
    package-lock.json
  • low
    esbuild@0.21.5: 1 known vulnerability
    GHSA-67mh-4wv8-2f99
    site/package-lock.json
  • low
    Reads environment variables not listed in the manifest
    BLENDER_EXECUTABLE, BLENDER_ADDON_PATH, BLENDER_PORT, BLENDER_MCP_COMMAND, BLENDER_MCP_ARGS, MCP_PORT, MCP_HOST, CHROME_PATH, PJARCZAK_MAC_RUNTIME_DIR, BAMBU_NETWORK_PLUGIN_DIR, PJARCZAK_BAMBU_PLUGIN_DIR, BAMBU_NETWORK_COUNTRY_CODE, PJARCZAK_BAMBU_COUNTRY_CODE, BAMBU_NETWORK_USER_INFO, PJARCZAK_EXPE…

Network activity

During install
registry.npmjs.org
While running
No connections

Tools exposed (48)

  • get_printer_status

    Get the current status of the 3D printer

  • list_printer_files

    List files available on the 3D printer

  • upload_gcode

    Upload G-code content or a local G-code file path to the printer. With print=true the exact uploaded bytes are inspected first (every S/R heater target, tool changes, hardware and material ceilings) and printer state is checked before the print starts.

  • start_print

    Start printing a G-code file already stored on the printer. The server downloads and inspects the exact file, then starts a uniquely named checked copy after printer-state checks. Printers whose API cannot download files (Repetier, Prusa, Creality) refuse; use upload_gcode with print=true instead.

  • cancel_print

    Cancel the current print job

  • camera_stream_start

    Start or renew one persistent camera connection for this printer. Call only while watched; it closes automatically after idle_timeout_ms without a viewer request. camera_snapshot then reuses its latest frame. No printer motion or print commands.

  • camera_frame

    Read the shared camera stream, optionally waiting up to 10 seconds. Returns JPEG only when newer than since_seq and visibly changed (32×18 grayscale difference). Retain the last delivered frame's seq on unchanged. max_width resizes JPEG to the viewer. Does not start a stopped stream.

  • camera_stream_stop

    Close this printer's camera connection and free its cached frames. Other printers keep their own streams. Active viewers may restart it; normally let the idle timeout close a shared stream.

  • counterpart_print_route

    Counterpart contract (counterpart/1), Bambu: how this server reaches the printer for prints and for Stop/Pause/Resume. route is "lan" (the local network through FULU's BambuNetwork bridge), "cloud" (Bambu Cloud through FULU's bridge) or "developer" (the local network straight to a printer in LAN Onl

  • counterpart_printer_info

    Describe this printer for the counterpart/1 contract: server name and version, printer kind and identity, and which features work (progress, layers, camera, filaments, pause, resume, cancel, print_3mf, G-code), detected from the firmware. Read-only.

  • counterpart_print_progress

    Read the printer's state and current job in the counterpart/1 shape: state, job name, progress (0-100), elapsed and remaining seconds, layers when the firmware reports them, temperatures and problems. job.name matches the jobName that upload_gcode and start_print return. Read-only.

  • camera_snapshot

    Capture one JPEG frame from the printer's camera: OctoPrint's configured snapshot URL (Classic Webcam on 1.9+, webcam.snapshotUrl on 1.8, then /webcam/?action=snapshot), Moonraker's first enabled webcam, or Repetier's webcam staticUrl. PrusaLink and Duet have no local snapshot API. PRINTER_CAMERA_SN

  • counterpart_discover_printers

    Counterpart contract (counterpart/1): printers on the local network. Bambu Lab printers from their own SSDP announcements (UDP 2021), with serial, model (as bambu_model names it), name and firmware; OctoPrint, Klipper (Moonraker) and PrusaLink hosts from their Bonjour adverts (dns-sd on macOS, avahi

  • counterpart_setup_fields

    Counterpart contract (counterpart/1): the printers this server drives (each PRINTER_TYPE) and the settings it reads for each, by .env variable name: label, hint, whether required, the fixed values a kind needs (PRINTER_TYPE), the Bambu model choices and the model each serial-number prefix names. Pas

  • counterpart_propose_filaments

    Counterpart contract (counterpart/1): which loaded spool prints each of a model's colours, before slicing. Reads the printer's filaments once (Bambu: the AMS and external spools). trays lists the spools a person may choose (label like "A2" or "External", a person-readable name, colour, material, fee

  • get_printer_filaments

    Report the loaded filament. Bambu: the live AMS and external-spool inventory over MQTT, as bambu-printer-mcp reports it (trays with absolute slot, loaded state, material, colour, tray_info_idx and resolved slicer profile path; summary; recommended load_filaments), plus counterpart/1 slots for every

  • pause_print

    Pause the current print (Bambu Lab, OctoPrint, Klipper/Moonraker, PrusaLink, Duet M25, Repetier, and Creality printers that run Moonraker). Bambu pauses over the same connection that prints. Pause is never gated.

  • resume_print

    Resume a paused print. Resume reheats and moves the printer, so it only resumes a job this server instance inspected and started, and only when the printer freshly reports that job paused. Bambu re-reads the job over FTPS (or the plate G-code the printer extracted) and compares its SHA-256, and resu

  • set_printer_temperature

    Set the temperature of a printer component. Temperature 0 switches a heater off and is never gated. Positive targets are validated before connecting, limited by independent hardware and material ceilings, and require a ready printer.

  • extend_stl_base

    Extend the base of an STL file by a specified amount

  • slice_stl

    Slice an STL or 3MF file to generate G-code or a sliced 3MF. For Bambu-compatible CLI slicing (bambustudio, orcaslicer-bambulab, or orcaslicer with bambu_model), the exact bambu_model/nozzle machine preset from the selected slicer installation is required, profile inheritance is resolved before the

  • slice_with_template

    Slice an STL or 3MF with a named template from the local template registry (BAMBU_TEMPLATE_DIR). The template supplies process settings; the machine preset still comes from bambu_model and nozzle_diameter.

  • list_templates

    List saved slicing templates (.3mf, .json, .config) in the local template registry directory.

  • save_template

    Copy a .3mf, .json, or .config file into the local template registry under a template name.

  • get_slice_settings

    Inspect slicer settings in a 3MF template or JSON/config profile without slicing (layer height, infill, walls, supports, brim, bed, printer, filaments). For a 3MF, own_process is true when slice_stl, given the same slicer_type and bambu_model and no slicer_profile or template, slices it with the pro

  • confirm_temperatures

    Report every heater target in a G-code file (S and R forms, tool-addressed, RepRapFirmware G10/M568 and Klipper SET_HEATER_TEMPERATURE). An expected temperature matches only when it equals the file's highest target. Read-only; printing tools enforce their own safety gate.

  • process_and_print_stl

    Process an STL file (extend base), slice it, and start printing through the same checked print gate as upload_gcode/print_3mf. Expected temperatures are enforced: a mismatch refuses before upload.

  • get_stl_info

    Get detailed information about an STL file

  • scale_stl

    Scale an STL model uniformly or along specific axes

  • rotate_stl

    Rotate an STL model around specific axes

  • translate_stl

    Move an STL model along specific axes

  • modify_stl_section

    Apply a specific transformation to a selected section of an STL file

  • generate_stl_visualization

    Generate an SVG visualization of an STL file from multiple angles

  • inspect_print_file

    Inspect an exact private snapshot of a prepared sliced 3MF or textual G-code file and selected plate without contacting a printer. Returns versioned file-only evidence; no printer readiness or permission to dispatch is established. Does not auto-slice.

  • print_3mf

    Print a 3MF file on a Bambu Lab printer. The exact selected plate is inspected (model, nozzle, bed type, materials, every heater target) and checked against a fresh MQTT report of the printer's identity, nozzle, state, errors and loaded filament before upload and start.

  • check_fulu_orca_setup

    Inspect a FULU OrcaSlicer-bambulab install, platform runtime payload, setup commands, and optionally probe the BambuNetwork bridge.

  • fulu_bambu_network_rpc

    Advanced FULU bridge RPC for BambuNetwork diagnostics and development. Read-only methods are allowed by default. Agent/session setup methods require allow_mutating_method=true. Raw print methods, printer messages, file transfers and unknown methods are refused because they would bypass the print saf

  • merge_vertices

    Merge vertices in an STL file that are closer than the specified tolerance.

  • center_model

    Translate the model so its geometric center is at the origin (0,0,0).

  • lay_flat

    Rotate the model so a face rests on the bed (Z=0), choosing the orientation with the least part and support volume per mm² of bed contact. A face counts only if nothing hangs below it. Returns the new STL path; structuredContent.laid_flat is false, with the input path, when no orientation qualifies.

  • blender_mcp_status

    Inspect Blender MCP configuration or connect and discover the remote server's tools. Lists tool names and summaries; pass tool_names for the full input schemas of the tools you will call. Connecting does not edit the scene; use get_scene_info through blender_mcp_call to check the Blender addon.

  • blender_mcp_call

    Call a discovered tool on the configured Blender MCP server, preserving its full MCP content and errors. Discover tool schemas with blender_mcp_status first; execute_blender_code accepts Python code and user_prompt. Calls can modify the active Blender scene and are never automatically retried.

  • blender_mcp_export_stl

    Export named objects from the live Blender scene to a new, verified STL for slicing. Writes world-space geometry with modifiers applied, without changing the scene, selection, or mode, and reports triangle count and bounding-box dimensions from the written file. Use this after editing or modelling t

  • blender_mcp_edit_model

    Import, edit, and export a local STL through standard Blender MCP with verified output and existing scene objects preserved. Requires a shared local filesystem and Blender Object Mode. Also supports a separately configured legacy executable bridge.

  • fusion_mcp_status

    Check the Autodesk Fusion bridge: whether the Fusion MCP server is configured (faust-machines/fusion360-mcp-server@19b9f1e95192), whether Fusion is running, whether its Fusion360MCP add-in answers on its port, and the server's tools and schemas. connected is true only when the add-in answered. With

  • fusion_mcp_call

    Call a discovered tool on the Fusion MCP server (create_sketch, extrude, fillet, set_parameter, export_stl, execute_code, and others), preserving its full MCP content and errors. Discover tool schemas with fusion_mcp_status first. Calls change the active Fusion design and are never automatically ret

  • fusion_mcp_new_design

    Open a new parametric design document in Fusion, so the Fusion tools have an active design. Fusion must already have some document open: at the pinned faust-machines commit no tool works from Fusion's home screen (issue #12).

  • fusion_mcp_export

    Export the active Fusion design into output_dir as <name>.stl (export_stl), <name>.f3d (export_f3d) and <name>.parameters.json (the design's user parameters), and return their absolute paths. The STL is checked as a finite triangle mesh and its size compared with the Fusion body to report its units.

Automated result for the commit shown. See our scan policy. View the scan log

Maintainers can claim the listing to rescan, or dispute a result.

MCP 3D Printer Server alternatives

View more →

Similar mcp servers in Design & Media, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.

NameStarsLicenceLast updatedScan
MCP 3D Printer Server (this page)
DMontgomery40
257GPL-2.0Oct 30, 2026Scanned, no flagged issues
Next AI Draw Io
DayuanJiang
37kApache-2.0Nov 1, 2026Scanned, no flagged issues
MCP For Blender
ahujasid
33kMITOct 29, 2026Scanned, no flagged issues
Figma Context MCP
GLips
16kMITOct 27, 2026Scanned, no flagged issues
Nginx UI
0xJacky
12kAGPL-3.0Nov 1, 2026Scanned, no flagged issues
Lamda
firerpa
8.7kMITSep 27, 2026Scanned, no flagged issues