Content
# 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
```bash
npm install -g elegoo-mcp-server
```
### Option 3: From source
```bash
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)
```json
{
"mcpServers": {
"elegoo": {
"command": "npx",
"args": ["elegoo-mcp-server"]
}
}
}
```
### Using global install
```json
{
"mcpServers": {
"elegoo": {
"command": "elegoo-mcp-server"
}
}
}
```
### Using local clone
```json
{
"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](https://github.com/skribascode) in vibe coding ;-)
## Credits
- SDCP documentation: [OpenCentauri](https://docs.opencentauri.cc/)
- Protocol reference: [sdcp-centauri-carbon](https://github.com/WalkerFrederick/sdcp-centauri-carbon)
## License
MIT