Elegoo Mcp Server

by skribascode

209 downloads Not rated yet

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:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Elegoo Mcp Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.