Skip to main content
Glama
appleton
by appleton

robovac_connect

Connect to your Eufy RoboVac using device credentials for manual setup, enabling control through the MCP server.

Instructions

Connect to your RoboVac using device credentials (manual setup)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID of your Eufy RoboVac
localKeyYesThe local key for your Eufy RoboVac
ipNoThe IP address of your Eufy RoboVac (optional, defaults to 192.168.1.100)

Implementation Reference

  • Handler logic for the robovac_connect tool. Attempts connection with provided IP or falls back to auto-discovery and default IP, using the initializeRoboVac helper.
    case "robovac_connect": // Auto-discover best IP if not provided or if connection fails let connectTargetIP = args?.ip as string | undefined; let connectSuccess = false; if (connectTargetIP) { connectSuccess = await this.initializeRoboVac( args?.deviceId as string, args?.localKey as string, connectTargetIP ); } if (!connectSuccess) { console.error( "[DEBUG] Manual connection failed or no IP provided, trying auto-discovery..." ); const discoveredIP = await this.discoverBestRoboVacIP(); if (discoveredIP) { connectTargetIP = discoveredIP; connectSuccess = await this.initializeRoboVac( args?.deviceId as string, args?.localKey as string, connectTargetIP ); } } // Fallback to default IP if still not successful if (!connectSuccess && !connectTargetIP) { connectTargetIP = "192.168.1.100"; connectSuccess = await this.initializeRoboVac( args?.deviceId as string, args?.localKey as string, connectTargetIP ); } return { content: [ { type: "text", text: connectSuccess ? `RoboVac connected successfully at ${connectTargetIP}!` : `Failed to connect to RoboVac. ${ connectTargetIP ? `Tried ${connectTargetIP} but connection failed.` : "" } Check your device ID, local key, and network connection.`, }, ], isError: !connectSuccess, };
  • Input schema and description for the robovac_connect tool, defined in the listTools response.
    name: "robovac_connect", description: "Connect to your RoboVac using device credentials (manual setup)", inputSchema: { type: "object", properties: { deviceId: { type: "string", description: "The device ID of your Eufy RoboVac", }, localKey: { type: "string", description: "The local key for your Eufy RoboVac", }, ip: { type: "string", description: "The IP address of your Eufy RoboVac (optional, defaults to 192.168.1.100)", }, }, required: ["deviceId", "localKey"], }, },
  • Helper method that creates a new RoboVac instance with the given credentials and attempts to connect. Returns success boolean.
    private async initializeRoboVac( deviceId: string, localKey: string, ip?: string ): Promise<boolean> { try { this.robovac = new RoboVac({ deviceId: deviceId, localKey: localKey, ip: ip || "192.168.1.100", }); await this.robovac.connect(); return true; } catch (error) { console.error("Failed to initialize RoboVac:", error); return false; }
  • Helper method for auto-discovering the best IP for a RoboVac device on the network, used as fallback in the connect handler.
    private async discoverBestRoboVacIP(): Promise<string | null> { try { console.error("[DEBUG] Auto-discovering RoboVac devices..."); const devices = await this.networkDiscovery.discoverDevices(); if (devices.length === 0) { console.error("[DEBUG] No devices found during auto-discovery"); return null; } // Filter for likely RoboVac devices const likelyRoboVacs = devices.filter((device) => device.isLikelyRoboVac); if (likelyRoboVacs.length > 0) { const bestDevice = likelyRoboVacs[0]; // Take the first likely device console.error( `[DEBUG] Found likely RoboVac at ${bestDevice.ip} (MAC: ${bestDevice.mac}, Vendor: ${bestDevice.vendor})` ); return bestDevice.ip; } // If no likely RoboVacs, try devices with port 6668 open const devicesWithPort6668 = devices.filter((device) => device.ports.includes(6668) ); if (devicesWithPort6668.length > 0) { const potentialDevice = devicesWithPort6668[0]; console.error( `[DEBUG] Found potential RoboVac at ${potentialDevice.ip} with port 6668 open` ); return potentialDevice.ip; } console.error("[DEBUG] No suitable RoboVac candidates found"); return null; } catch (error) { console.error( `[DEBUG] Auto-discovery failed: ${(error as Error).message}` ); return null; } }

Latest Blog Posts

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/appleton/sam'

If you have feedback or need assistance with the MCP directory API, please join our Discord server