Skip to main content
Glama
Eufy RoboVac MCP Server

Eufy RoboVac MCP Server

by appleton

Eufy RoboVac MCP Server

A Model Context Protocol (MCP) server for controlling Eufy RoboVac devices. Built with TypeScript and Vite.

Setup

  1. Install dependencies:

npm install
  1. Get your device credentials:

    • Device ID and Local Key from your Eufy Home app or network analysis

    • Find your RoboVac's IP address on your network

Related MCP server: Tesla MCP Server

Development

Run in development mode with hot reload:

npm run dev

Type checking:

npm run typecheck

Production

Build the project:

npm run build

Run the built server:

npm start

Available Tools

Connection & Setup

  • robovac_scan_network - Scan local network for RoboVac devices (🆕 no credentials needed!)

  • robovac_connect_discovered - Connect to a discovered device using its IP

  • robovac_connect - Manual connection using device credentials

  • robovac_auto_initialize - Cloud-based discovery (⚠️ May not work due to API changes)

Basic Controls

  • robovac_start_cleaning - Start cleaning cycle

  • robovac_stop_cleaning - Stop cleaning cycle

  • robovac_return_home - Return to charging dock

  • robovac_play - Start/resume cleaning

  • robovac_pause - Pause cleaning

  • robovac_find_robot - Make the RoboVac beep to locate it

Advanced Controls

  • robovac_set_work_mode - Set cleaning mode (AUTO, SMALL_ROOM, SPOT, EDGE, NO_SWEEP)

  • robovac_set_clean_speed - Set suction power (STANDARD, BOOST_IQ, MAX, NO_SUCTION)

Status Information

  • robovac_get_status - Get current device status (legacy)

  • robovac_get_battery - Get battery level

  • robovac_get_error_code - Get current error code

  • robovac_get_work_mode - Get current cleaning mode

  • robovac_get_clean_speed - Get current suction level

  • robovac_get_work_status - Get detailed work status

  • robovac_get_play_pause - Get play/pause state

Utility Functions

  • robovac_format_status - Print formatted status to console

  • robovac_get_all_statuses - Get all status information at once

Usage with MCP Client

  1. Scan your local network to find RoboVac devices:

robovac_scan_network()

This will show you:

  • All devices with open Tuya/Eufy ports (6668, 6667, 443)

  • Devices with Anker/Eufy MAC addresses (⭐ likely RoboVacs)

  • IP addresses of potential devices

  1. Connect to a discovered device:

robovac_connect_discovered(ip="192.168.1.100", deviceId="your_device_id", localKey="your_local_key")

Getting Device Credentials

You still need the device ID and local key:

  1. Try community tools:

    • eufy-security-client or similar projects

    • Check GitHub for updated credential grabbers

  2. Network traffic analysis:

    • Monitor Eufy app network traffic

    • Use tools like Wireshark or Charles Proxy

  3. Router/firmware methods:

    • Some routers log device information

    • Check if your RoboVac firmware exposes credentials

Alternative Methods

Manual connection (if you have all credentials):

robovac_connect(deviceId="your_device_id", localKey="your_local_key", ip="192.168.1.100")

Cloud discovery (may not work due to API changes):

robovac_auto_initialize(email="your@email.com", password="your_password")

Control Your RoboVac

Once connected, use any control tools:

robovac_start_cleaning()
robovac_get_status()
robovac_return_home()
robovac_set_work_mode(mode="SPOT")
robovac_set_clean_speed(speed="MAX")

Available Tools

20 tools
robovac_auto_initializeC

Automatically discover and initialize the first RoboVac device found

Inputs: email (required), password (required), deviceIndex.

robovac_connectB

Connect to your RoboVac using device credentials (manual setup)

Inputs: deviceId (required), localKey (required), ip.

robovac_connect_discoveredC

Connect to a discovered RoboVac device by IP (requires device ID and local key)

Inputs: ip (required), deviceId (required), localKey (required).

robovac_find_robotB

Make the robovac beep to help locate it

Inputs: enable.

robovac_format_statusB

Get a formatted display of all robovac status information

Inputs: no named parameters.

robovac_get_all_statusesC

Get all status information from the robovac at once

Inputs: force.

robovac_get_batteryA

Get the battery level of the robovac

Inputs: no named parameters.

robovac_get_clean_speedB

Get the current cleaning speed of the robovac

Inputs: force.

robovac_get_error_codeC

Get the current error code of the robovac

Inputs: force.

robovac_get_play_pauseB

Get the current play/pause state of the robovac

Inputs: force.

robovac_get_statusB

Get the current status of the robovac

Inputs: no named parameters.

robovac_get_work_modeC

Get the current work mode of the robovac

Inputs: force.

robovac_get_work_statusC

Get the current work status of the robovac

Inputs: force.

robovac_pauseB

Pause robovac cleaning

Inputs: no named parameters.

robovac_playB

Start/resume robovac cleaning

Inputs: no named parameters.

robovac_return_homeA

Send the robovac back to its charging dock

Inputs: no named parameters.

robovac_set_clean_speedC

Set the suction speed of the robovac

Inputs: speed (required).

robovac_set_work_modeC

Set the cleaning mode of the robovac

Inputs: mode (required).

robovac_start_cleaningB

Start the robovac cleaning cycle

Inputs: no named parameters.

robovac_stop_cleaningB

Stop the robovac cleaning cycle

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 20 tools

    Disambiguation2/5

    Multiple tools have unclear boundaries and overlapping purposes, causing potential confusion. For example, robovac_play and robovac_start_cleaning both seem to initiate cleaning, while robovac_get_status, robovac_get_all_statuses, and robovac_format_status all retrieve status information with unclear distinctions. The descriptions don't sufficiently differentiate these tools, making it hard for an agent to choose correctly.

    Naming Consistency5/5

    Tool names follow a highly consistent verb_noun pattern throughout, using snake_case with clear prefixes like 'robovac_' for all tools. The naming convention is predictable and readable, with no deviations or mixed styles, making it easy to understand the purpose of each tool at a glance.

    Tool Count2/5

    With 20 tools, this server feels overly heavy and redundant for controlling a RoboVac. Many tools could be consolidated (e.g., multiple status getters or cleaning controls), leading to unnecessary complexity. A more streamlined set of 5-10 tools would better suit the domain without sacrificing functionality.

    Completeness4/5

    The tool surface covers the core RoboVac operations well, including connection, status retrieval, cleaning control, and settings adjustment. Minor gaps exist, such as lack of scheduling or zone cleaning tools, but agents can work around these with the available tools. The coverage is sufficient for basic to intermediate use cases.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      A server that enables interaction with Home Assistant devices and automations through the Model Context Protocol, allowing users to monitor device states, control devices, trigger automations, and list entities.
      4
      48
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol server that connects to the Tesla Fleet API, allowing AI assistants like Claude to control Tesla vehicles and access vehicle information through natural language commands.
      20
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol server that integrates with Home Assistant to provide smart home control capabilities through natural language, supporting devices like lights, climate systems, locks, alarms, and humidifiers.
      3
      MIT