3D Printer Manager
About
Integrates with multiple 3D printer management systems to enable remote control, file handling, and advanced STL manipulation for automated print job management and custom model modifications.
Details
- Author
- dmontgomery40
- Repository
- DMontgomery40/mcp-3D-printer-server
- GitHub stars
- 199
- Downloads
- 1,558
- License
- GNU General Public License v2.0
- Categories
- AI, Design, Developer Tools, File Management, Infrastructure, Automation, Frontend, Other
- Tags
- #integration, #iot
Jump to
- Get printer status (temperatures, print progress, etc.)
- List files on the printer
- Upload G-code files to the printer
- Start, cancel, and monitor print jobs
- Set printer temperatures
- Advanced STL file manipulation:
- Extend base for better adhesion
- Scale models uniformly or along specific axes
- Rotate models around any axis
- Translate (move) models
- Modify specific sections of STL files (top, bottom, center, or custom)
- Comprehensive STL analysis with detailed model information
- Generate multi-angle SVG visualizations of STL files
- Real-time progress reporting for long operations
- Error handling with detailed diagnostics
- Slice STL files to generate G-code
- Confirm temperature settings in G-code files
- Complete end-to-end workflow from STL modification to printing
- Print .3mf files directly on Bambu Lab printers (via MQTT command)
- Slice Bambu projects with FULU OrcaSlicer-bambulab (SLICER_TYPE=orcaslicer-bambulab) and auto-slice unsliced 3MF files before Bambu printing when a project slicer is configured
- Inspect and probe the FULU BambuNetwork runtime (check_fulu_orca_setup) and call safe-by-default FULU bridge RPC methods for diagnostics and development (fulu_bambu_network_rpc)
- Read Bambu Studio preset files (printer, filament, process) as resources
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
3D Printer ManagerCommand (node, npx, python, etc.)npxArguments-
Argument 1
-y -
Argument 2
mcp-3d-printer-server
Environment-
BAMBU_MODEL
p1s -
BAMBU_TOKEN
your_access_token -
SLICER_PATH
/path/to/FULU/OrcaSlicer -
SLICER_TYPE
orcaslicer-bambulab -
BAMBU_SERIAL
your_printer_serial -
PRINTER_HOST
your_printer_ip -
PRINTER_TYPE
bambu -
FULU_ORCA_PLUGIN_DIR
/Applications/OrcaSlicer.app/Contents/MacOS
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
Argument 1
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Add this server to your MCP client's config (Claude Desktop, Claude Code, Cursor, Codex, or any MCP-compatible client). Most JSON-based clients use an mcpServers entry with the command and env vars:
{
"mcpServers": {
"3dprint": {
"command": "npx",
"args": ["-y", "mcp-3d-printer-server"],
"env": {
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "bambu",
"BAMBU_SERIAL": "your_printer_serial",
"BAMBU_TOKEN": "your_access_token",
"BAMBU_MODEL": "p1s",
"SLICER_TYPE": "orcaslicer-bambulab",
"SLICER_PATH": "/path/to/FULU/OrcaSlicer",
"FULU_ORCA_PLUGIN_DIR": "/Applications/OrcaSlicer.app/Contents/MacOS"
}
}
}
}
For non-Bambu printers, replace the Bambu-specific env vars with API_KEY and the appropriate PRINTER_TYPE (see Supported Printer Management Systems).
npm install -g mcp-3d-printer-server
git clone https://github.com/dmontgomery40/mcp-3d-printer-server.git
cd mcp-3d-printer-server
npm install
npm link # Makes the command available globally
You can also run the server using Docker and Docker Compose for a containerized environment.
1. Ensure you have Docker and Docker Compose installed.
2. Copy .env.example to .env and configure your settings.
3. Build and run the container:
docker-compose up --build -d
ENV SLICER_PATH=/usr/local/bin/orcaslicer
API_KEY=your_api_key_here
BAMBU_SERIAL=your_printer_serial # REQUIRED for Bambu
BAMBU_TOKEN=your_access_token # REQUIRED for Bambu
BAMBU_MODEL=p1s # REQUIRED for Bambu: p1s, p1p, x1c, x1e, a1, a1mini, h2d
BED_TYPE=textured_plate # Bed plate: textured_plate, cool_plate, engineering_plate, hot_plate
NOZZLE_DIAMETER=0.4 # Nozzle diameter in mm (default: 0.4)
BAMBU_STUDIO_CONFIG_PATH=
MCP_TRANSPORT=stdio # Options: stdio, streamable-http
MCP_HTTP_HOST=127.0.0.1
MCP_HTTP_PORT=3000
MCP_HTTP_PATH=/mcp
MCP_HTTP_STATEFUL=true
MCP_HTTP_JSON_RESPONSE=true
MCP_HTTP_ALLOWED_ORIGINS=http://localhost
The FULU README currently says macOS is work in progress, but the source tree already ships macOS Lima runtime scripts and Windows WSL runtime scripts. This MCP knows those file layouts and returns the exact commands through check_fulu_orca_setup.
get_stl_info
Get detailed information about an STL file, including dimensions, vertex count, and bounding box. Parameters: stl_path (string)
extend_stl_base
Extend the base of an STL file by a specified amount. Parameters: stl_path (string), extension_inches (number)
scale_stl
Scale an STL model uniformly or along specific axes. Parameters: stl_path (string), scale_factor (number) or scale_x (number), scale_y (number), scale_z (number)
rotate_stl
Rotate an STL model around specific axes (in degrees). Parameters: stl_path (string), rotate_x (number), rotate_y (number), rotate_z (number)
translate_stl
Move an STL model along specific axes (in millimeters). Parameters: stl_path (string), translate_x (number), translate_y (number), translate_z (number)
merge_vertices
Merge vertices that are closer than a specified tolerance. Helps close small gaps and can slightly simplify the mesh. Parameters: stl_path (string), tolerance (optional number, default = 0.01mm)
center_model
Translate the model so the center of its bounding box is at the world origin (0,0,0). Parameters: stl_path (string)
lay_flat
Attempt to identify the largest flat surface of the model and rotate the model so this face is oriented downwards on the XY plane. Parameters: stl_path (string)
modify_stl_section
Apply a specific transformation to a selected section of an STL file. Parameters: stl_path (string), section (string), transformation_type (string), value_x (number), value_y (number), value_z (number), custom_min_x (number), custom_min_y (number), custom_min_z (number), custom_max_x (number), custom_max_y (number), custom_max_z (number)
generate_stl_visualization
Generate an SVG visualization of an STL file from multiple angles. Parameters: stl_path (string), width (number), height (number)
slice_stl
Slice an STL file to generate G-code. Parameters: stl_path (string), slicer_type (string), slicer_path (string), slicer_profile (string), filament_profile (string)
confirm_temperatures
Confirm temperature settings in a G-code file. Parameters: gcode_path (string), extruder_temp (number), bed_temp (number)
process_and_print_stl
Process an STL file (extend base), slice it, confirm temperatures, and start printing. Parameters: stl_path (string), extension_inches (number), extruder_temp (number), bed_temp (number), host (string), type (string), api_key (string)
get_printer_status
Get the current status of the 3D printer. Parameters: host (string), type (string), api_key (string)
list_printer_files
List files available on the printer. Parameters: host (string), type (string), api_key (string)
upload_gcode
Upload G-code content or a local G-code file path to the printer. Parameters: host (string), type (string), api_key (string), filename (string), gcode (string), print (boolean), gcode_path (string)
start_print
Start printing a file that is already on the printer. Parameters: host (string), type (string), api_key (string), filename (string)
cancel_print
Cancel the current print job. Parameters: host (string), type (string), api_key (string)
set_printer_temperature
Set the temperature of a printer component. Parameters: host (string), type (string), api_key (string), component (string), temperature (number)
check_fulu_orca_setup
Inspects the FULU OrcaSlicer-bambulab executable and setup commands. Parameters: platform (string), slicer_path (string), plugin_dir (string), run_bridge_probe (boolean), bridge_command (string)
fulu_bambu_network_rpc
Calls one FULU BambuNetwork bridge JSON RPC method. Parameters: method (string), bridge_command (string)
print_3mf
Uploads a sliced .3mf file to a Bambu printer via FTP and initiates the print job. Parameters: three_mf_path (string), bambu_model (string), bed_type (string), host (string), bambu_serial (string), bambu_token (string), slicer_type (string), slicer_path (string), use_ams (boolean), ams_mapping (array), bed_leveling (boolean), flow_calibration (boolean), vibration_calibration (boolean), timelapse (boolean)
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"3d printer manager": {
"env": {
"BAMBU_MODEL": "p1s",
"BAMBU_TOKEN": "your_access_token",
"SLICER_PATH": "/path/to/FULU/OrcaSlicer",
"SLICER_TYPE": "orcaslicer-bambulab",
"BAMBU_SERIAL": "your_printer_serial",
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "bambu",
"FULU_ORCA_PLUGIN_DIR": "/Applications/OrcaSlicer.app/Contents/MacOS"
},
"args": [
"-y",
"mcp-3d-printer-server"
],
"command": "npx"
}
}
}
Linux
{
"env": {
"BAMBU_MODEL": "p1s",
"BAMBU_TOKEN": "your_access_token",
"SLICER_PATH": "/path/to/FULU/OrcaSlicer",
"SLICER_TYPE": "orcaslicer-bambulab",
"BAMBU_SERIAL": "your_printer_serial",
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "bambu",
"FULU_ORCA_PLUGIN_DIR": "/Applications/OrcaSlicer.app/Contents/MacOS"
},
"args": [
"-y",
"mcp-3d-printer-server"
],
"command": "npx"
}
Macos
{
"env": {
"BAMBU_MODEL": "p1s",
"BAMBU_TOKEN": "your_access_token",
"SLICER_PATH": "/path/to/FULU/OrcaSlicer",
"SLICER_TYPE": "orcaslicer-bambulab",
"BAMBU_SERIAL": "your_printer_serial",
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "bambu",
"FULU_ORCA_PLUGIN_DIR": "/Applications/OrcaSlicer.app/Contents/MacOS"
},
"args": [
"-y",
"mcp-3d-printer-server"
],
"command": "npx"
}
Windows
{
"env": {
"BAMBU_MODEL": "p1s",
"BAMBU_TOKEN": "your_access_token",
"SLICER_PATH": "/path/to/FULU/OrcaSlicer",
"SLICER_TYPE": "orcaslicer-bambulab",
"BAMBU_SERIAL": "your_printer_serial",
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "bambu",
"FULU_ORCA_PLUGIN_DIR": "/Applications/OrcaSlicer.app/Contents/MacOS"
},
"args": [
"/c",
"npx",
"-y",
"mcp-3d-printer-server"
],
"command": "cmd"
}
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





