centauri-mcp
Provides tools for discovering, controlling, and monitoring Elegoo Centauri Carbon 3D printers over the local network, including status checks, file management, print controls, timelapse retrieval, and notification watchers.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@centauri-mcpwhat's the status of my printer?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
centauri-mcp
MCP server for the Elegoo Centauri Carbon 3D printer, built on the SDCP 3.0
protocol as documented by the OpenCentauri
project (docs/software/api.md). Works over the local network — no cloud.
Features
Read-only (no approval needed)
Tool | Description |
| UDP broadcast discovery (port 3000) |
| Temps, position, fans, lights, live print progress |
| Firmware, build volume, capabilities, storage |
| Files on |
| Past jobs with decoded failure reasons + fixes |
| Success rate, print hours, failure-cause breakdown |
| Per-job timelapse video URL / MP4 download |
| Errors/notices pushed by the printer |
| SDCP error code → cause + suggested fix |
| Monitor state and log |
Control (annotated so MCP clients require approval)
Tool | Description |
| Start a file; |
| Pause/resume the active job |
| Cancel (irreversible; requires |
| Phase controls |
| silent/balanced/sport/ludicrous or a raw % |
| Part-cooling / auxiliary / chamber fans individually |
| Enable/disable timelapse recording |
| Rename the printer |
| MD5-verified HTTP upload (± auto-start) |
| Permanent delete (requires |
| Chamber-camera JPEG (toggles the single video stream slot) |
| Start/stop the detached watcher ( |
| Save Pushover keys for the watcher |
| Global priority and sound for all alerts |
| Current settings + all valid options (read-only) |
| Verify the notification path end to end |
Related MCP server: 3D Printer MCP Server
Notification priority and sound
One global setting covers every alert the watcher sends — there is no per-event configuration:
set_notification_settings(priority=1, sound="cosmic")Either argument may be given alone; the other is left unchanged. Settings are re-read on every send, so a running watcher picks up changes without a restart.
Priority | Behavior |
-2 | Lowest — no notification, badge only |
-1 | Low — no sound or vibration |
0 | Normal — default alert |
1 | High — bypasses quiet hours |
2 | Emergency — repeats until acknowledged ( |
Sounds: pushover, bike, bugle, cashregister, classical, cosmic,
falling, gamelan, incoming, intermission, magic, mechanical,
pianobar, siren, spacealarm, tugboat, alien, climb, persistent,
echo, updown, vibrate, none.
With nothing set, priority falls back to per-event defaults (pause and printer errors high, stop and complete normal) and the sound is your Pushover account default. Setting a global priority overrides those defaults everywhere.
Environment equivalents: PUSHOVER_PRIORITY, PUSHOVER_SOUND (the config
file wins if both are present).
The watcher
start_monitor spawns centauri_mcp.watcher as a detached process. It
outlives the MCP server and your client session, so alerts still arrive hours
into a print with nothing open.
It holds a WebSocket to the printer and reacts to every pushed status
message rather than polling a cache — a brief Complete -> Idle transition
cannot slip between samples. Notifications fire on:
Event | Pushover priority |
Print paused (with reason when the printer reports one) | 1 |
Print stopped | 0 |
Print complete | 0 |
Printer error pushed on | 1 |
Each carries filename, layer, percent complete, and a camera snapshot unless
started with with_snapshots=false.
Continuous vs one-shot
By default the watcher is continuous: after notifying you it keeps
running, so subsequent prints are covered too. It stops only on
stop_monitor, the stop flag, a kill, or a reboot.
Pass stop_after_print=true for one-shot mode — it shuts itself down once
the print reaches Complete or Stopped, after the notification has been sent. A
pause does not end it, since the print can still resume.
start_monitor(stop_after_print=True)Run it standalone (e.g. from Task Scheduler at logon, so it covers prints started from the printer's own screen):
python -m centauri_mcp.watcher --ip 192.168.1.50python -m centauri_mcp.watcher --ip 192.168.1.50 --exit-on-completeState lives in ~/.centauri-mcp/:
File | Purpose |
| Live state + heartbeat, read by |
| Human-readable event log |
| Liveness check / stop target |
| Touch to request a graceful exit |
| Credentials, when not supplied via env |
Override the directory with CENTAURI_MCP_HOME. It deliberately avoids
%LOCALAPPDATA%: the Microsoft Store build of Python virtualizes AppData into
a per-package sandbox, which hides these files from you and from any other
interpreter.
Install
git clone https://github.com/blanders2/centauri-mcp.git
cd centauri-mcp
pip install -e .Register with Claude Code:
claude mcp add centauri-carbon -- python -m centauri_mcp.serverConfiguration (environment variables, all optional)
CENTAURI_IP— printer IP; skips discovery (recommended if your printer has a DHCP reservation). Without it, the first discovered printer is used.PUSHOVER_TOKEN/PUSHOVER_USER— enables phone notifications from the watcher (print complete / paused / stopped / errors, with camera snapshot attached). The detached watcher inherits these from the MCP server; to run it independently at boot, useset_pushover_credentialsinstead, which writes~/.centauri-mcp/pushover.json.CENTAURI_MCP_HOME— override the watcher's state directory.
Example registration with env vars:
claude mcp add centauri-carbon -e CENTAURI_IP=192.168.1.50 -e PUSHOVER_TOKEN=xxx -e PUSHOVER_USER=yyy -- python -m centauri_mcp.serverSafety design
Tools that can affect a running print carry MCP annotations (
readOnlyHint: false, anddestructiveHint: truefor stop/delete), so clients prompt for approval before running them.stop_printanddelete_filesadditionally require an explicitconfirm=trueargument — a bare call refuses and explains why.The dangerous reverse-engineered config G-codes (
M8803/M8807, which can brick the printer) are deliberately not exposed.The printer allows only one concurrent MJPEG stream;
get_snapshotenables the stream, grabs one frame, and releases it.
Protocol notes
WebSocket JSON on
ws://<ip>:3030/websocket; UDP discoveryM99999on port 3000; MJPEG camera on port 3031; HTTP multipart upload with MD5 check.Several SDCP field names are misspelled in the protocol itself (
CurrenCoord,RelaseFilmState, ...) — the client handles both spellings.
This server cannot be installed
Maintenance
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
- Alicense-qualityBmaintenanceEnables 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.58222GPL 2.0
- Alicense-qualityFmaintenance3D Printing MCP By OctoEverywhere35Apache 2.0
- Flicense-qualityBmaintenanceAn 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
- AlicenseBqualityCmaintenanceA 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.3782GPL 2.0
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server wrapping the Tesla Fleet API and TeslaMate API
MCP server for Hailuo (MiniMax) AI video generation
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/blanders2/centauri-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server