Built by Metorial, the integration platform for agentic AI.

Learn More

3D Printer MCP Server

Connects MCP to major 3D printer APIs (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.

What is an MCP Server?

Characteristics

AttributeDetails
Image SourceOfficial Image
Docker Imagemcp/3d-printer
AuthorDMontgomery40
Repositoryhttps://github.com/DMontgomery40/mcp-3D-printer-server
Dockerfilehttps://github.com/DMontgomery40/mcp-3D-printer-server/blob/main/Dockerfile
Docker Image built byDocker Inc.
Docker Scout Health ScoreDocker Scout Health Score
Verify SignatureCOSIGN_REPOSITORY=mcp/signatures cosign verify mcp/3d-printer --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub
LicenceGNU General Public License v2.0

Available Tools

Tools provided by this ServerShort Description
center_modelTranslate the model so its geometric center is at the origin (0,0,0).
confirm_temperaturesConfirm temperature settings in a G-code file
extend_stl_baseExtend the base of an STL file by a specified amount
generate_stl_visualizationGenerate an SVG visualization of an STL file from multiple angles
get_printer_statusGet the current status of the 3D printer
get_stl_infoGet detailed information about an STL file
lay_flatAttempt to rotate the model so its largest flat face lies on the XY plane (Z=0).
merge_verticesMerge vertices in an STL file that are closer than the specified tolerance.
modify_stl_sectionApply a specific transformation to a selected section of an STL file
print_3mfPrint a 3MF file on a Bambu Lab printer, potentially overriding settings.
process_and_print_stlProcess an STL file (extend base), slice it, confirm temperatures, and start printing
rotate_stlRotate an STL model around specific axes
scale_stlScale an STL model uniformly or along specific axes
slice_stlSlice an STL file to generate G-code
translate_stlMove an STL model along specific axes

Tools Details

Tool: center_model

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

ParametersTypeDescription
stl_pathstringPath to the STL file to center.

Tool: confirm_temperatures

Confirm temperature settings in a G-code file

ParametersTypeDescription
gcode_pathstringPath to the G-code file
bed_tempnumber optionalExpected bed temperature
extruder_tempnumber optionalExpected extruder temperature

Tool: extend_stl_base

Extend the base of an STL file by a specified amount

ParametersTypeDescription
extension_inchesnumberAmount to extend the base in inches
stl_pathstringPath to the STL file to modify

Tool: generate_stl_visualization

Generate an SVG visualization of an STL file from multiple angles

ParametersTypeDescription
stl_pathstringPath to the STL file
heightnumber optionalHeight of each view in pixels (default: 300)
widthnumber optionalWidth of each view in pixels (default: 300)

Tool: get_printer_status

Get the current status of the 3D printer

ParametersTypeDescription
api_keystring optionalAPI key for authentication (default: value from env)
bambu_serialstring optionalSerial number for Bambu Lab printers (default: value from env)
bambu_tokenstring optionalAccess token for Bambu Lab printers (default: value from env)
hoststring optionalHostname or IP address of the printer (default: value from env)
portstring optionalPort of the printer API (default: value from env)
typestring optionalType of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env)

Tool: get_stl_info

Get detailed information about an STL file

ParametersTypeDescription
stl_pathstringPath to the STL file

Tool: lay_flat

Attempt to rotate the model so its largest flat face lies on the XY plane (Z=0).

ParametersTypeDescription
stl_pathstringPath to the STL file to lay flat.

Tool: merge_vertices

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

ParametersTypeDescription
stl_pathstringPath to the STL file to modify.
tolerancenumber optionalMaximum distance between vertices to merge (in mm, default: 0.01).

Tool: modify_stl_section

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

ParametersTypeDescription
sectionstringSection to modify: 'top', 'bottom', 'center', or custom bounds
stl_pathstringPath to the STL file
transformation_typestringType of transformation to apply
custom_max_xnumber optionalMaximum X for custom section bounds
custom_max_ynumber optionalMaximum Y for custom section bounds
custom_max_znumber optionalMaximum Z for custom section bounds
custom_min_xnumber optionalMinimum X for custom section bounds
custom_min_ynumber optionalMinimum Y for custom section bounds
custom_min_znumber optionalMinimum Z for custom section bounds
value_xnumber optionalTransformation value for X axis
value_ynumber optionalTransformation value for Y axis
value_znumber optionalTransformation value for Z axis

Tool: print_3mf

Print a 3MF file on a Bambu Lab printer, potentially overriding settings.

ParametersTypeDescription
three_mf_pathstringPath to the 3MF file to print.
ams_mappingobject optionalOverride AMS filament mapping (e.g., {"Generic PLA": 0, "Generic PETG": 1}).
bambu_serialstring optionalSerial number for the Bambu Lab printer (default: value from env)
bambu_tokenstring optionalAccess token for the Bambu Lab printer (default: value from env)
bed_temperaturenumber optionalOverride bed temperature (°C).
hoststring optionalHostname or IP address of the Bambu printer (default: value from env)
layer_heightnumber optionalOverride layer height (mm).
nozzle_temperaturenumber optionalOverride nozzle temperature (°C).
support_enabledboolean optionalOverride support generation.

Tool: process_and_print_stl

Process an STL file (extend base), slice it, confirm temperatures, and start printing

ParametersTypeDescription
extension_inchesnumberAmount to extend the base in inches
stl_pathstringPath to the STL file to process
api_keystring optionalAPI key for authentication (default: value from env)
bed_tempnumber optionalExpected bed temperature
extruder_tempnumber optionalExpected extruder temperature
hoststring optionalHostname or IP address of the printer (default: value from env)
portstring optionalPort of the printer API (default: value from env)
typestring optionalType of printer management system (default: value from env)

Tool: rotate_stl

Rotate an STL model around specific axes

ParametersTypeDescription
stl_pathstringPath to the STL file
rotate_xnumber optionalRotation around X-axis in degrees
rotate_ynumber optionalRotation around Y-axis in degrees
rotate_znumber optionalRotation around Z-axis in degrees

Tool: scale_stl

Scale an STL model uniformly or along specific axes

ParametersTypeDescription
stl_pathstringPath to the STL file
scale_factornumber optionalUniform scaling factor to apply
scale_xnumber optionalX-axis scaling factor (overrides scale_factor for X axis)
scale_ynumber optionalY-axis scaling factor (overrides scale_factor for Y axis)
scale_znumber optionalZ-axis scaling factor (overrides scale_factor for Z axis)

Tool: slice_stl

Slice an STL file to generate G-code

ParametersTypeDescription
stl_pathstringPath to the STL file to slice
slicer_pathstring optionalPath to the slicer executable (default: value from env)
slicer_profilestring optionalProfile to use for slicing (default: value from env)
slicer_typestring optionalType of slicer to use (prusaslicer, cura, slic3r, orcaslicer) (default: value from env)

Tool: translate_stl

Move an STL model along specific axes

ParametersTypeDescription
stl_pathstringPath to the STL file
translate_xnumber optionalTranslation along X-axis in millimeters
translate_ynumber optionalTranslation along Y-axis in millimeters
translate_znumber optionalTranslation along Z-axis in millimeters

Use this MCP Server

{
  "mcpServers": {
    "3d-printer": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "BAMBU_SERIAL",
        "-e",
        "PRINTER_HOST",
        "-e",
        "PRINTER_TYPE",
        "-e",
        "BAMBU_TOKEN",
        "mcp/3d-printer"
      ],
      "env": {
        "BAMBU_SERIAL": "YOUR_BAMBU_SERIAL",
        "PRINTER_HOST": "REAL",
        "PRINTER_TYPE": "bambu",
        "BAMBU_TOKEN": "YOUR_BAMBU_TOKEN"
      }
    }
  }
}

Why is it safer to run MCP Servers with Docker?