Skip to main content
Glama
marctheshark3

bambu-p1s-mcp

bambu-p1s-mcp

Harness-agnostic MCP server for a Bambu Lab P1S on the local network.

Any MCP client can use it: Hermes, Grok, Claude Code, Cursor. The server speaks stdio (local subprocess) and Streamable HTTP (remote harness).

It does not talk to Bambu Cloud. It talks to the printer:

  • MQTT over TLS, port 8883 — status and print commands

  • Implicit FTPS, port 990 — list / upload files

  • Optional Bambu Studio CLI — slice STL/3MF to a printable .gcode.3mf

Where to run it

The MCP process has to reach the printer. The agent harness does not.

If Hermes is on a DGX Spark that is not on the printer LAN, run this server on the LAN machine (or any box that can open 192.168.x.x:8883 and :990) and point Hermes at the HTTP URL. Grok on that same LAN box can use stdio.

This clone lives at /home/whaleshark/Documents/bambu-p1s-mcp. On the current LAN box the printer-facing IPs are typically:

  • LAN: 192.168.1.195

  • Tailscale: 100.123.149.116

Spark should use whichever of those it can route to, on port 8765.

P1S  <--- MQTT/FTPS ---  MCP host
                           |-- stdio --> harness on this host
                           |-- HTTP  --> Hermes on Spark / any remote MCP client

Related MCP server: Klipper MCP Server

Install

cd /home/whaleshark/Documents/bambu-p1s-mcp
uv sync --extra dev
cp .env.example .env
# fill BAMBU_IP, BAMBU_ACCESS_CODE, BAMBU_SERIAL from the printer screen
uv run bambu-p1s-mcp doctor

Printer screen: Settings → Network for IP and access code, Settings → Device for serial. Turn on LAN mode. Developer Mode if local project_file start is rejected.

Run

Stdio (Grok / Hermes on this machine):

uv run bambu-p1s-mcp

HTTP daemon (Hermes on Spark, or any remote client):

# bind LAN/Tailscale; set BAMBU_MCP_TOKEN in .env
BAMBU_MCP_HOST=0.0.0.0 uv run bambu-p1s-mcp --http
# health: http://<host>:8765/health
# mcp:    http://<host>:8765/mcp

User systemd unit: contrib/bambu-p1s-mcp.service.

Point a harness at it

Grok (~/.grok/config.toml), stdio:

[mcp_servers.bambu]
command = "/home/whaleshark/Documents/bambu-p1s-mcp/.venv/bin/bambu-p1s-mcp"
startup_timeout_sec = 45

Grok, HTTP (after the daemon is up):

[mcp_servers.bambu]
url = "http://127.0.0.1:8765/mcp"
headers = { Authorization = "Bearer ${BAMBU_MCP_TOKEN}" }

Hermes (~/.hermes/config.yaml) on Spark:

mcp_servers:
  bambu:
    url: "http://192.168.1.195:8765/mcp"
    headers:
      Authorization: "Bearer ${BAMBU_MCP_TOKEN}"
    timeout: 180

If Spark is only on Tailscale, use http://100.123.149.116:8765/mcp. Reload with /reload-mcp.

Ready-to-copy snippets: configs/.

Tools

Tool

Write?

What it does

printer_doctor

no

Env, ports, MQTT, FTPS, slicer

printer_status

no

Idle/printing, job, %, layers, temps, remaining

printer_ams

no

AMS / external trays

printer_files

no

SD card listing

printer_pause / resume / stop

yes

Job control

printer_speed

yes

silent / standard / sport / ludicrous

printer_upload

yes

Push a sliced file over FTPS

printer_print

yes

Upload if local path, then start

slice_model_file

yes

Bambu Studio CLI → .gcode.3mf

Write tools require confirm=true. printer_print refuses if the printer is already RUNNING.

Ask an agent:

  • “What’s on the P1S right now?”

  • “Anything in the AMS?”

  • “Slice ~/Documents/lamp/stls/base.stl for the P1S.”

  • “Upload that 3mf and print plate 1.”

Slice notes

BAMBU_SLICER should point at the bambu-studio binary (this machine has /home/whaleshark/.local/bin/bambu-studio).

Project .3mf files that already contain printer settings can be sliced as-is. Bare STL/STEP needs machine + process + filament JSON. The server auto-discovers P1S 0.4 / 0.20mm Standard @BBL X1C / Bambu PLA Basic @BBL P1S 0.4 nozzle from ~/.config/BambuStudio/system/BBL when present.

Security

  • LAN access code is the MQTT/FTPS password. Keep it in .env, not in git.

  • HTTP without BAMBU_MCP_TOKEN is only for localhost. When Spark (or anything off-box) connects, set a token and bind BAMBU_MCP_HOST=0.0.0.0.

  • Do not port-forward this to the public internet.

  • This is not affiliated with Bambu Lab.

Goal

Agent brief: GOAL.md.

A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables interaction with 3D printer management systems through an MCP server, supporting STL file manipulation, slicing, and control of printers like OctoPrint, Klipper, Duet, and more.
    103
    225
    GPL 2.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that enables AI assistants to control and monitor Klipper 3D printers via the Moonraker API. It supports comprehensive printer management, including G-code execution, toolchanger operations, and real-time status monitoring.
    17
  • A
    license
    A
    quality
    B
    maintenance
    Enables comprehensive control and monitoring of Bambu Lab 3D printers through Claude using local MQTT, FTPS, and X.509 authentication. Users can manage print jobs, monitor real-time status, handle filament through AMS, and adjust hardware settings like temperature and lighting.
    24
    30
    17
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A Bambu Lab-focused MCP server for controlling Bambu printers, manipulating STL files, and managing end-to-end 3MF print workflows from any MCP-compatible client.
    37
    138
    GPL 2.0

View all related MCP servers

Related MCP Connectors

  • MCP server wrapping the Tesla Fleet API and TeslaMate API

  • MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.

  • MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/marctheshark3/bambu-p1s-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server