Skip to main content
Glama
apiarya
by apiarya

WeMo MCP Server

Control WeMo smart home devices through AI assistants using natural language.

mcp-name: io.github.apiarya/wemo

MCP Transport MCP Registry

PyPI version Python 3.10+

License: MIT

Table of Contents

Overview

Seamlessly integrate WeMo smart home devices with AI assistants through the Model Context Protocol. Built on pywemo, this server enables natural language control of your WeMo devices with intelligent multi-phase discovery.

Example Usage

Claude Desktop controlling WeMo devices

Control WeMo devices through Claude Desktop with natural language - just ask in plain English!

Key Features

  • πŸ” Smart Discovery - Multi-phase scanning (UPnP/SSDP + network ports) with 100% reliability

  • ⚑ Fast Scanning - Parallel probes with 60 concurrent workers (~23-30s for full subnet)

  • πŸŽ›οΈ Full Control - On/off/toggle/brightness control for all device types

  • ✏️ Device Management - Rename devices and extract HomeKit setup codes

  • πŸ“Š Real-time Status - Query device state and brightness

  • πŸ’Ύ Smart Caching - Automatic device caching for instant access

  • πŸ”Œ Universal - Works with any MCP client (Claude, VS Code, Cursor, etc.)


Prerequisites

All configurations use uvx (from the uv Python package manager) to run the server. Install uv first:

# macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh # macOS with Homebrew brew install uv # Windows powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

After installation, restart your terminal and verify:

uvx --version

Quick Start

Get started in seconds with Claude Code CLI:

claude mcp add wemo -- uvx wemo-mcp-server

Connect

One-Click Installation

Click your client to install instantly:

Client

Install

Claude Desktop

Claude Desktop

Claude Code CLI

Run: claude mcp add wemo -- uvx wemo-mcp-server

VS Code

Install

Cursor

Add to Cursor

Cline

Manual config (VS Code extension)

Windsurf

Manual config

Zed

Manual config

Continue

Manual config (VS Code extension)

Manual Configuration

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{ "mcpServers": { "wemo": { "command": "uvx", "args": ["wemo-mcp-server"] } } }

Restart Claude Desktop after saving.

VS Code

Edit ~/.vscode/mcp.json:

{ "servers": { "wemo": { "type": "stdio", "command": "uvx", "args": ["wemo-mcp-server"] } } }

Reload VS Code after saving.

Cursor

Edit ~/.cursor/mcp.json:

{ "servers": { "wemo": { "type": "stdio", "command": "uvx", "args": ["wemo-mcp-server"] } } }

Restart Cursor after saving.

Cline

Cline is a VS Code extension. Add to VS Code's settings.json:

{ "mcp.servers": { "wemo": { "command": "uvx", "args": ["wemo-mcp-server"] } } }

Reload VS Code after saving.

Windsurf

Edit ~/.windsurf/mcp.json:

{ "mcpServers": { "wemo": { "command": "uvx", "args": ["wemo-mcp-server"] } } }

Restart Windsurf after saving.

Zed

Edit ~/.config/zed/settings.json:

{ "context_servers": { "wemo": { "command": "uvx", "args": ["wemo-mcp-server"] } } }

Restart Zed after saving.

Continue

Continue is a VS Code extension. Edit ~/.continue/config.json:

{ "mcpServers": [ { "name": "wemo", "command": "uvx", "args": ["wemo-mcp-server"] } ] }

Reload VS Code after saving.


MCP Tools

1. scan_network

Discover WeMo devices on your network using intelligent multi-phase scanning.

Example Prompts:

  • "Scan for WeMo devices on my network"

  • "Find all WeMo devices"

  • "Discover devices on 192.168.1.0/24"

Example Response:

Found 12 WeMo devices in 23.5 seconds: 1. Office Light (Dimmer) - 192.168.1.100 - OFF 2. Living Room (Switch) - 192.168.1.101 - ON 3. Bedroom Lamp (Dimmer) - 192.168.1.102 - OFF ...

2. list_devices

List all devices cached from previous scans.

Example Prompts:

  • "List all my WeMo devices"

  • "Show me all devices"

  • "What devices do you know about?"

Example Response:

12 devices in cache: - Office Light (Dimmer) at 192.168.1.100 - Living Room (Switch) at 192.168.1.101 - Bedroom Lamp (Dimmer) at 192.168.1.102 ...

3. get_device_status

Get current state and information for a specific device.

Example Prompts:

  • "Is the office light on?"

  • "What's the status of the bedroom lamp?"

  • "Check the living room switch"

  • "What's the brightness of office light?"

Example Response:

Office Light (Dimmer): - State: OFF - Brightness: 75% - IP: 192.168.1.100 - Model: DimmerLongPress

4. control_device

Control a WeMo device (on/off/toggle/brightness).

Example Prompts:

  • "Turn on the office light"

  • "Turn off the living room"

  • "Toggle the bedroom lamp"

  • "Set office light to 75%"

  • "Dim the bedroom lamp to 50%"

Example Response:

βœ“ Office Light turned ON Brightness set to 75% Current state: ON

5. rename_device

Rename a WeMo device (change its friendly name).

Example Prompts:

  • "Rename Office Dimmer to Office Light"

  • "Change the name of the bedroom device to Bedroom Lamp"

  • "Call the living room switch 'Main Light'"

Example Response:

βœ“ Device renamed successfully 'Office Dimmer' β†’ 'Office Light' IP: 192.168.1.100 The new name will appear in the WeMo app and all control interfaces.

6. get_homekit_code

Get the HomeKit setup code for a WeMo device.

Example Prompts:

  • "Get the HomeKit code for Office Light"

  • "What's the HomeKit setup code for the bedroom lamp?"

  • "Show me the HomeKit code for all devices"

Example Response:

HomeKit Setup Code for 'Office Light': 123-45-678 Use this code to add the device to Apple Home.

Note: Not all WeMo devices support HomeKit. If a device doesn't support HomeKit, you'll get an error message.

How It Works

Multi-Phase Discovery

The server uses a three-phase discovery process optimized for reliability:

  1. Phase 1 - UPnP/SSDP Discovery (Primary)

    • Multicast discovery finds all responsive devices (~12s)

    • Most reliable method, finds devices that don't respond to port probes

    • Uses pywemo's built-in discovery mechanism

  2. Phase 2 - Network Port Scanning (Backup)

    • Parallel probing of WeMo ports (49152-49155) across subnet

    • 60 concurrent workers for fast scanning (~10s for 254 IPs)

    • Catches devices missed by UPnP

  3. Phase 3 - Device Verification (Backup)

    • HTTP verification of active IPs via /setup.xml

    • Parallel verification with 60 workers

    • Validates and extracts device information

This approach achieves 100% device discovery reliability while maintaining fast scan times (23-30 seconds for complete networks).

Feature Comparison

MCP Server vs wemo-ops-center

Comparison of features between this MCP server and the main wemo-ops-center project:

Feature

wemo-ops-center

MCP Server

Notes

Device Discovery

βœ… UPnP + Port Scan

βœ… Implemented

Multi-phase discovery with 100% reliability

Device Control

βœ… On/Off/Toggle

βœ… Implemented

Includes brightness control for dimmers

Device Status

βœ… Real-time

βœ… Implemented

Query by name or IP address

Device Rename

βœ… Friendly names

βœ… Implemented

Updates device cache automatically

HomeKit Codes

βœ… Extract codes

βœ… Implemented

For HomeKit-compatible devices

Multi-subnet

βœ… VLAN support

❌ Planned

Currently single subnet per scan

WiFi Provisioning

βœ… Smart setup

❌ Not planned

Requires PC WiFi connection changes

Scheduling

βœ… Time + Solar

❌ Not planned

Requires persistent daemon (incompatible with MCP model)

Maintenance Tools

βœ… Resets

❌ Not planned

Factory reset, clear WiFi, clear data

Profile Management

βœ… Save/Load

❌ Not planned

WiFi credential profiles for bulk setup

User Interface

βœ… GUI + Web

❌ N/A

MCP uses AI assistant interface

Legend:

  • βœ… Implemented - Feature is available

  • ❌ Not planned - Feature conflicts with MCP architecture or use case

  • ❌ Planned - Feature could be added in future

Why some features aren't planned for MCP:

  • Scheduling: Requires 24/7 background daemon polling. MCP servers are typically invoked on-demand by AI assistants, not run as persistent services.

  • WiFi Provisioning: Requires changing the host PC's WiFi connection to device setup networks, which is disruptive and platform-specific.

  • Maintenance Tools: Destructive operations (factory reset, etc.) better suited for dedicated GUI with confirmation dialogs.

Current MCP Coverage: 5 of 11 core features (45%) - focused on device discovery, monitoring, and control use cases that fit the MCP model.

Development

Setup

git clone https://github.com/apiarya/wemo-mcp-server.git cd wemo-mcp-server uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate uv sync --dev

Running Tests

# E2E tests (requires WeMo devices on network) python tests/test_e2e.py # Unit tests pytest tests/test_server.py -v

Using Development Version

In your MCP client config, use:

{ "command": "python", "args": ["-m", "wemo_mcp_server"], "env": { "PYTHONPATH": "/path/to/mcp/src" } }

Contributing

Contributions welcome! Please:

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Make your changes with tests

  4. Run the test suite (python tests/test_e2e.py)

  5. Commit your changes (git commit -m 'Add amazing feature')

  6. Push to the branch (git push origin feature/amazing-feature)

  7. Open a Pull Request

License

MIT License - see LICENSE file for details.

Acknowledgments

-
security - not tested
A
license - permissive license
-
quality - not tested

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/apiarya/wemo-mcp-server'

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