npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@iflow-mcp/griches-bambu-mcp

v1.0.0

Published

MCP server for controlling multiple Bambu Lab 3D printers

Downloads

35

Readme

Bambu MCP

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.

Features

  • 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

Supported Printers

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.).

Printer Setup

Before using this MCP server, each printer must be configured for local access:

  1. 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.

  2. 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.

  3. 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.

System Requirements

  • 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)

Installation

Quick Start with npx

npx @griches/bambu-mcp

Claude Code

claude mcp add bambu -- npx @griches/bambu-mcp

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "bambu": {
      "command": "npx",
      "args": ["@griches/bambu-mcp"]
    }
  }
}

Build from Source

git clone https://github.com/griches/bambu-mcp.git
cd bambu-mcp
npm install
npm run build

Then configure with the absolute path:

{
  "mcpServers": {
    "bambu": {
      "command": "node",
      "args": ["/absolute/path/to/bambu-mcp/dist/index.js"]
    }
  }
}

Adding Printers

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.

Tools

Management

| 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 |

Status

| Tool | Description | |------|-------------| | get_status | Get printer status — print progress, temperatures, speed, AMS, lights | | get_version | Get firmware and module version information |

Print Control

| 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 |

Hardware

| 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 |

File Management

| 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 |

Camera

| Tool | Description | |------|-------------| | set_recording | Enable or disable camera recording | | set_timelapse | Enable or disable timelapse recording |

AMS / Filament

| Tool | Description | |------|-------------| | change_filament | Change to a different AMS filament tray | | unload_filament | Unload filament from the extruder |

G-code

| Tool | Description | |------|-------------| | send_gcode | Send raw G-code commands (dangerous commands blocked for safety) |

Security

| Tool | Description | |------|-------------| | sign_message | Sign a message with the Bambu Lab X.509 certificate |

Printer Targeting

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

Connection Details

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.

X.509 Certificate Authentication

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-----"

License

MIT