A Model Context Protocol (MCP) server for controlling Bambu Lab 3D printers. Manage one printer or an entire fleet from any MCP-compatible AI assistant.
- Multi-printer fleet management — target a specific printer, all printers, or auto-select when only one is configured
- Full print control — start, pause, resume, stop prints and skip objects mid-print. Auto-detects the correct plate in multi-plate 3MF files
- File management — list, upload, download, and delete files via FTP
- Hardware control — lights, temperatures, speed profiles, nozzle configuration
- AMS support — change filament trays, unload filament
- Camera — enable/disable recording and timelapse
- Raw G-code — send custom commands with safety limits
- Persistent config — printer credentials saved to
~/.bambu-mcp/printers.json
Tested with:
- Bambu Lab P1S
- Bambu Lab H2D
- Bambu Lab A1 Mini
Should work with any Bambu Lab printer that supports MQTT over LAN (X1C, X1, P1P, A1, etc.).
Before using this MCP server, each printer must be configured for local access:
-
Enable LAN Only Mode — On the printer's touchscreen, go to Settings > Network and switch to LAN Only Mode. This is required for local MQTT commands (including starting prints) to work. Cloud mode blocks local print commands.
-
Enable Developer Mode — On the printer's touchscreen, go to Settings > Network > LAN Only Mode and enable Developer Mode. This allows third-party tools to send commands over the local network.
-
Note the access code — After enabling LAN Only / Developer Mode, a new Access Code will be shown on the printer screen. You'll need this to connect.
Note: Enabling LAN Only Mode means you lose cloud features (remote monitoring via Bambu Handy app, cloud printing). All control must be done locally.
- Node.js 18+
- Bambu Lab printer(s) on the same local network
- Printer in LAN Only Mode with Developer Mode enabled
- Printer access code and serial number (found in printer Settings > WLAN / Device)
npx @griches/bambu-mcpclaude mcp add bambu -- npx @griches/bambu-mcpAdd to your claude_desktop_config.json:
{
"mcpServers": {
"bambu": {
"command": "npx",
"args": ["@griches/bambu-mcp"]
}
}
}git clone https://github.com/griches/bambu-mcp.git
cd bambu-mcp
npm install
npm run buildThen configure with the absolute path:
{
"mcpServers": {
"bambu": {
"command": "node",
"args": ["/absolute/path/to/bambu-mcp/dist/index.js"]
}
}
}Once the server is running, add printers using the add_printer tool. You'll need the following from each printer:
- IP Address — found on the printer's touchscreen under Settings > WLAN, or in Bambu Studio's Device tab
- Access Code — found on the touchscreen under Settings > WLAN, or in Bambu Studio's Device tab
- Serial Number — found on the touchscreen under Settings > Device, or in Bambu Studio's Device tab
Example (via an AI assistant):
"Add my P1S at 192.168.0.136 with access code 30430928 and serial 01P00A3B0900744"
Printer configurations are saved to ~/.bambu-mcp/printers.json and automatically reconnect on server restart.
| Tool | Description |
|---|---|
add_printer |
Add a printer to the fleet (IP, access code, serial number) |
remove_printer |
Remove a printer and disconnect |
reconnect_printer |
Reconnect a printer (or all) after network changes |
list_printers |
List all configured printers with connection status |
| Tool | Description |
|---|---|
get_status |
Get printer status — print progress, temperatures, speed, AMS, lights |
get_version |
Get firmware and module version information |
| Tool | Description |
|---|---|
start_print |
Start printing a file from the printer's SD card. Auto-detects plate number for 3MF files |
pause_print |
Pause the current print |
resume_print |
Resume a paused print |
stop_print |
Cancel the current print |
skip_objects |
Skip specific objects in a multi-object print |
| Tool | Description |
|---|---|
set_speed |
Set print speed — silent, standard, sport, ludicrous, or custom % |
set_light |
Control chamber and work lights |
set_temperature |
Set nozzle or bed temperature (with safety limits) |
set_nozzle |
Set nozzle diameter for profile selection |
| Tool | Description |
|---|---|
list_files |
List files on the printer's SD card |
upload_file |
Upload a .3mf or .gcode file to the printer |
download_file |
Download a file from the printer |
delete_file |
Delete a file from the printer |
| Tool | Description |
|---|---|
set_recording |
Enable or disable camera recording |
set_timelapse |
Enable or disable timelapse recording |
| Tool | Description |
|---|---|
change_filament |
Change to a different AMS filament tray |
unload_filament |
Unload filament from the extruder |
| Tool | Description |
|---|---|
send_gcode |
Send raw G-code commands (dangerous commands blocked for safety) |
| Tool | Description |
|---|---|
sign_message |
Sign a message with the Bambu Lab X.509 certificate |
Every printer-targeting tool accepts an optional printer parameter:
- Specific printer — use the printer ID (e.g.
"p1s-alpha") - All printers — use
"all"to run the command on every connected printer in parallel - Auto-select — omit the parameter and it will auto-select if only one printer is configured
This server communicates with printers using:
- MQTT (port 8883, TLS) — for commands and status updates
- FTP (port 990, implicit FTPS) — for file operations
Printers must be in LAN Only Mode with Developer Mode enabled. See Printer Setup above.
Post-January 2025 firmware requires certificate-based authentication for local access. This server includes the publicly extracted X.509 certificate from the Bambu Connect desktop application by default.
To override with your own certificate, set these environment variables:
export BAMBU_APP_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
export BAMBU_APP_CERTIFICATE="-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"MIT