# 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