Elegoo Mcp Server
About
Control Elegoo 3D printers (Centauri Carbon) via SDCP. Monitor status, pause/resume prints, manage files, control lights. 100% local.
Explore
| Feature | Supported | Notes |
|---------|-----------|-------|
| Multi-printer management | ✓ | Add, remove, switch between printers |
| Connect/Disconnect | ✓ | WebSocket connection |
| Get Status | ✓ | Temperatures, position, print progress |
| Pause/Resume/Stop Print | ✓ | |
| Start Print | ✓ | From files on printer |
| Light Control | ✓ | On/Off |
| List Files | ✓ | With thumbnails for printed files |
| Camera Stream | ✓ | Live MJPEG URL |
| Temperature Control | ✗ | Not supported via SDCP |
| Fan Control | ✗ | Not supported via SDCP |
| Speed Control | ✗ | Not supported via SDCP |
| Movement/Homing | ✗ | Not supported via SDCP |
| Delete Files | ✗ | Not supported via SDCP |
Features marked ✗ must be controlled via the printer touchscreen.
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
Elegoo Mcp ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
- Node.js 18+
- Elegoo Centauri Carbon (or compatible SDCP printer)
- Printer on same local network
npm install -g elegoo-mcp-server
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"elegoo": {
"command": "elegoo-mcp-server"
}
}
}
"What's the printer status?"
"Pause the print"
"Resume printing"
"Turn on the light"
"Show me the files on the printer"
"Start printing benchy.gcode"
"Show me the camera"
elegoo_start
Initialize Elegoo MCP and show welcome message. Call this when user wants to start using Elegoo MCP (e.g., "start elegoo", "launch printer"). Returns: - If no printers: Prompts to add a printer with elegoo_setup - If 1 printer: Connects automatically - If multiple printers: Lists all printers and asks user to choose with elegoo_select IMPORTANT: When multiple printers are available, you MUST ask the user which one to use before proceeding. Do NOT auto-connect to default. This is the main entry point for the Elegoo MCP experience.
elegoo_setup
Setup a new printer for first-time use or add another printer. Call this when: - No printers are configured yet - User wants to add a new printer - User provides an IP address for a new printer Args: - ip: Local IP address of the printer - name: Friendly name (default: "Elegoo Printer") - port: WebSocket port (default: 3030) Returns connection status and welcome message.
elegoo_select
Select and connect to a saved printer. Use when user wants to switch between multiple saved printers. Args: - identifier: Printer name, IP, or ID Returns connection status.
elegoo_add_printer
Add a new Elegoo printer to your saved configuration. This saves the printer so you don't need to enter the IP each time. The configuration is stored in ~/.elegoo/config.json Args: - name: Friendly name for the printer - ip: Local IP address of the printer - port: WebSocket port (default: 3030) - setAsDefault: Set as default printer (default: true) Returns: The saved printer entry.
elegoo_remove_printer
Remove a printer from your saved configuration. Args: - identifier: Printer ID, name, or IP address Returns: Success status.
elegoo_list_printers
List all saved printers in your configuration. Returns: All configured printers with their details.
elegoo_set_default
Set which printer to use by default when connecting. Args: - identifier: Printer ID, name, or IP address Returns: Success status.
elegoo_update_printer
Update a saved printer's configuration (name, IP, or port). Args: - identifier: Printer ID, name, or IP address to update - name: New name (optional) - ip: New IP address (optional) - port: New port (optional) Returns: Updated printer configuration.
elegoo_connect
Connect to an Elegoo printer via SDCP WebSocket protocol. If no IP is provided, connects to the default saved printer. New printers are automatically saved to config for future use. Args: - ip (string, optional): IP address. If not provided, uses default printer. - port (number): WebSocket port, default 3030 - name (string, optional): Friendly name for the printer - save (boolean): Save to config for future use (default: true) Returns: Connection status and printer info. Examples: - Connect to default printer: elegoo_connect() - Connect to specific IP: elegoo_connect(ip: "192.168.1.138") - Connect and save: elegoo_connect(ip: "192.168.1.138", name: "Centauri Carbon")
elegoo_disconnect
Disconnect from the currently connected Elegoo printer.
elegoo_status
Get detailed status of the connected Elegoo printer. Returns current temperatures, print progress, position, fan speeds, and more. The printer must be connected first using elegoo_connect. Returns: - machineStatus: Current machine state (Idle, Printing, etc.) - printStatus: Current print state - temperatures: Nozzle, bed, and chamber temps (current and target) - position: Current X, Y, Z coordinates - fans: Speed of model, auxiliary, and chamber fans - printInfo: If printing - filename, progress, layers, time remaining
elegoo_wake
Attempt to wake up a sleeping/idle printer. Tries multiple methods to wake the printer: 1. Request attributes 2. Request status 3. Toggle light on/off Use this if the printer is connected but not responding to status requests. The printer must be connected first using elegoo_connect. Returns: - success: Whether wake-up succeeded - method: Which method worked - status: Current printer status after wake
elegoo_pause
Pause the current print job. Can be resumed with elegoo_resume.
elegoo_resume
Resume a paused print job.
elegoo_stop
Stop the current print job. WARNING: This cannot be undone - the print will be cancelled.
elegoo_start_print
Start printing a file that's already on the printer. Args: - filename: Name of the gcode file (e.g., "model.gcode" or full path "/local/model.gcode") - startLayer: Layer to start from (default: 0) - calibration: Run calibration before printing (default: false) - timelapse: Enable timelapse recording (default: false)
elegoo_set_light
Turn the printer light on or off.
elegoo_list_files
List gcode files stored on the printer. This also serves as the PRINT HISTORY - files with thumbnails (✓) have been printed before. Use this command when user asks for: - List of files on the printer - Print history / historique des impressions - What has been printed before IMPORTANT - Display format: When showing results to the user, display each file on one line with: - A status icon at the start: "✓" if thumbnailUrl is present (already printed), "○" if not (never printed) - File name and estimated time - If thumbnailUrl is present: add a clickable link "[Preview]" at the end When user clicks "[Preview]", call elegoo_view_file with that filename. Example output format: 1. ✓ tripod-lou (PETG) - 2h22m [Preview] 2. ○ Flower Embrace (PLA) - 9m36s 3. ✓ 3DBenchy (PLA) - 15m29s [Preview]
elegoo_view_file
Open the 3D preview/thumbnail of a gcode file in the browser. IMPORTANT: Only works for files that have been printed before (those with ✓ icon). Files that have never been printed (○ icon) do not have a preview available. Use this when the user wants to see or preview a gcode file from the printer. The thumbnail image will open in the default browser. Args: - filename: Name of the gcode file (e.g., "model.gcode")
elegoo_camera
Get the camera stream URL from the printer. Returns the URL to access the live camera feed. The URL can be opened in a browser or used in video players like VLC.
- elegoo_start: Initialize Elegoo MCP and show welcome message.
Call this when user wants to start using Elegoo MCP (e.g., "start elegoo", "launch printer").
Returns:
- If no printers: Prompts to add a printer with elegoo_setup
- If 1 printer: Connects automatically
- If multiple printers: Lists all printers and asks user to choose with elegoo_select
IMPORTANT: When multiple printers are available, you MUST ask the user which one to use before proceeding. Do NOT auto-connect to default.
This is the main entry point for the Elegoo MCP experience.
- elegoo_setup: Setup a new printer for first-time use or add another printer.
Call this when:
- No printers are configured yet
- User wants to add a new printer
- User provides an IP address for a new printer
Args:
- ip: Local IP address of the printer
- name: Friendly name (default: "Elegoo Printer")
- port: WebSocket port (default: 3030)
Returns connection status and welcome message.
- elegoo_select: Select and connect to a saved printer.
Use when user wants to switch between multiple saved printers.
Args:
- identifier: Printer name, IP, or ID
Returns connection status.
- elegoo_add_printer: Add a new Elegoo printer to your saved configuration.
This saves the printer so you don't need to enter the IP each time.
The configuration is stored in ~/.elegoo/config.json
Args:
- name: Friendly name for the printer
- ip: Local IP address of the printer
- port: WebSocket port (default: 3030)
- setAsDefault: Set as default printer (default: true)
Returns:
The saved printer entry.
- elegoo_remove_printer: Remove a printer from your saved configuration.
Args:
- identifier: Printer ID, name, or IP address
Returns:
Success status.
- elegoo_list_printers: List all saved printers in your configuration.
Returns:
All configured printers with their details.
- elegoo_set_default: Set which printer to use by default when connecting.
Args:
- identifier: Printer ID, name, or IP address
Returns:
Success status.
- elegoo_update_printer: Update a saved printer's configuration (name, IP, or port).
Args:
- identifier: Printer ID, name, or IP address to update
- name: New name (optional)
- ip: New IP address (optional)
- port: New port (optional)
Returns:
Updated printer configuration.
- elegoo_connect: Connect to an Elegoo printer via SDCP WebSocket protocol.
If no IP is provided, connects to the default saved printer.
New printers are automatically saved to config for future use.
Args:
- ip (string, optional): IP address. If not provided, uses default printer.
- port (number): WebSocket port, default 3030
- name (string, optional): Friendly name for the printer
- save (boolean): Save to config for future use (default: true)
Returns:
Connection status and printer info.
Examples:
- Connect to default printer: elegoo_connect()
- Connect to specific IP: elegoo_connect(ip: "192.168.1.138")
- Connect and save: elegoo_connect(ip: "192.168.1.138", name: "Centauri Carbon")
- elegoo_disconnect: Disconnect from the currently connected Elegoo printer.
- elegoo_status: Get detailed status of the connected Elegoo printer.
Returns current temperatures, print progress, position, fan speeds, and more.
The printer must be connected first using elegoo_connect.
Returns:
- machineStatus: Current machine state (Idle, Printing, etc.)
- printStatus: Current print state
- temperatures: Nozzle, bed, and chamber temps (current and target)
- position: Current X, Y, Z coordinates
- fans: Speed of model, auxiliary, and chamber fans
- printInfo: If printing - filename, progress, layers, time remaining
- elegoo_wake: Attempt to wake up a sleeping/idle printer.
Tries multiple methods to wake the printer:
1. Request attributes
2. Request status
3. Toggle light on/off
Use this if the printer is connected but not responding to status requests.
The printer must be connected first using elegoo_connect.
Returns:
- success: Whether wake-up succeeded
- method: Which method worked
- status: Current printer status after wake
- elegoo_pause: Pause the current print job. Can be resumed with elegoo_resume.
- elegoo_resume: Resume a paused print job.
- elegoo_stop: Stop the current print job. WARNING: This cannot be undone - the print will be cancelled.
- elegoo_start_print: Start printing a file that's already on the printer.
Args:
- filename: Name of the gcode file (e.g., "model.gcode" or full path "/local/model.gcode")
- startLayer: Layer to start from (default: 0)
- calibration: Run calibration before printing (default: false)
- timelapse: Enable timelapse recording (default: false)
- elegoo_set_light: Turn the printer light on or off.
- elegoo_list_files: List gcode files stored on the printer. This also serves as the PRINT HISTORY - files with thumbnails (✓) have been printed before.
Use this command when user asks for:
- List of files on the printer
- Print history / historique des impressions
- What has been printed before
IMPORTANT - Display format:
When showing results to the user, display each file on one line with:
- A status icon at the start: "✓" if thumbnailUrl is present (already printed), "○" if not (never printed)
- File name and estimated time
- If thumbnailUrl is present: add a clickable link "[Preview]" at the end
When user clicks "[Preview]", call elegoo_view_file with that filename.
Example output format:
1. ✓ tripod-lou (PETG) - 2h22m [Preview]
2. ○ Flower Embrace (PLA) - 9m36s
3. ✓ 3DBenchy (PLA) - 15m29s [Preview]
- elegoo_view_file: Open the 3D preview/thumbnail of a gcode file in the browser.
IMPORTANT: Only works for files that have been printed before (those with ✓ icon).
Files that have never been printed (○ icon) do not have a preview available.
Use this when the user wants to see or preview a gcode file from the printer.
The thumbnail image will open in the default browser.
Args:
- filename: Name of the gcode file (e.g., "model.gcode")
- elegoo_camera: Get the camera stream URL from the printer.
Returns the URL to access the live camera feed. The URL can be opened in a browser or used in video players like VLC.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"elegoo mcp server": {
"elegoo": {
"command": "npx",
"args": [
"elegoo-mcp-server"
]
}
}
}
}
McpServers
{
"elegoo": {
"command": "npx",
"args": [
"elegoo-mcp-server"
]
}
}
A local MCP (Model Context Protocol) server for controlling Elegoo 3D printers via the SDCP protocol.
100% local - no cloud dependencies.
> ⚠️ Your computer and printer must be on the same local network (WiFi or Ethernet).
Tested with Elegoo Centauri Carbon and Claude Desktop. Should work with any MCP-compatible client (VS Code, Cursor, etc.).
Features
| Feature | Supported | Notes |
|---------|-----------|-------|
| Multi-printer management | ✓ | Add, remove, switch between printers |
| Connect/Disconnect | ✓ | WebSocket connection |
| Get Status | ✓ | Temperatures, position, print progress |
| Pause/Resume/Stop Print | ✓ | |
| Start Print | ✓ | From files on printer |
| Light Control | ✓ | On/Off |
| List Files | ✓ | With thumbnails for printed files |
| Camera Stream | ✓ | Live MJPEG URL |
| Temperature Control | ✗ | Not supported via SDCP |
| Fan Control | ✗ | Not supported via SDCP |
| Speed Control | ✗ | Not supported via SDCP |
| Movement/Homing | ✗ | Not supported via SDCP |
| Delete Files | ✗ | Not supported via SDCP |
Features marked ✗ must be controlled via the printer touchscreen.
Prerequisites
- Node.js 18+
- Elegoo Centauri Carbon (or compatible SDCP printer)
- Printer on same local network
Installation
Option 1: npx (Recommended)
No installation needed! Just configure Claude Desktop directly.
Option 2: Global install
npm install -g elegoo-mcp-server
Option 3: From source
git clone https://github.com/skribascode/elegoo-mcp-server.git
cd elegoo-mcp-server
npm install
npm run build
Configuration for Claude Desktop
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Using npx (recommended)
{
"mcpServers": {
"elegoo": {
"command": "npx",
"args": ["elegoo-mcp-server"]
}
}
}
Using global install
{
"mcpServers": {
"elegoo": {
"command": "elegoo-mcp-server"
}
}
}
Using local clone
{
"mcpServers": {
"elegoo": {
"command": "node",
"args": ["/path/to/elegoo-mcp-server/dist/index.js"]
}
}
}
Restart Claude Desktop after saving.
Quick Start
1. Install the MCP (see above)
2. Restart Claude Desktop
3. Say: "Connect to my Elegoo printer"
4. Claude will ask for your printer's IP address
5. Done! Your printer is saved for future sessions.
Usage Examples
"What's the printer status?"
"Pause the print"
"Resume printing"
"Turn on the light"
"Show me the files on the printer"
"Start printing benchy.gcode"
"Show me the camera"
Available Tools
Startup
| Tool | Description | |------|-------------| |elegoo_start | Initialize and connect to default printer |
| elegoo_setup | Configure a new printer |
| elegoo_select | Switch between saved printers |
Configuration
| Tool | Description | |------|-------------| |elegoo_add_printer | Add a printer |
| elegoo_remove_printer | Remove a printer |
| elegoo_list_printers | List saved printers |
| elegoo_set_default | Set default printer |
| elegoo_update_printer | Update printer settings |
Printer Control
| Tool | Description | |------|-------------| |elegoo_connect | Connect to printer |
| elegoo_disconnect | Disconnect |
| elegoo_status | Get full status (temps, position, progress) |
| elegoo_wake | Wake up sleeping printer |
| elegoo_pause | Pause print |
| elegoo_resume | Resume print |
| elegoo_stop | Cancel print |
| elegoo_start_print | Start a print job |
| elegoo_set_light | Turn light on/off |
| elegoo_list_files | List files / print history (files with ✓ = already printed) |
| elegoo_view_file | View file thumbnail (printed files only) |
| elegoo_camera | Get camera stream URL |
Protocol
This server implements SDCP (Smart Device Control Protocol) v3.0.0.
- Connection: WebSocket at ws://{IP}:3030/websocket
- Config storage: ~/.elegoo/config.json
Known Issues
- Firmware v1.1.29: Light control may not work during printing. Firmware v1.1.25 works correctly.
Author
Made by @skribascode in vibe coding ;-)
Credits
- SDCP documentation: OpenCentauri
- Protocol reference: sdcp-centauri-carbon
License
MIT
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



