Skip to content

apiarya/wemo-mcp-server

v1.3.0 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Summary

AI summary

Persistent device cache survives restarts and new tools add cache/configuration management.

Full changelog

Release Notes: WeMo MCP Server v1.3.0

Release Date: February 21, 2026
Type: Feature Release
Theme: Production-Grade Enhancements


🎉 What's New

Version 1.3.0 brings Phase 2 improvements that transform WeMo MCP Server into a production-ready tool with enterprise-grade features:

🔄 Automatic Retry Logic

  • 3 retry attempts with exponential backoff
  • Handles transient network failures gracefully
  • Configurable retry delay (default: 0.5s, doubles each attempt)
  • Applied to all device operations

💾 Persistent Device Cache

  • Survives server restarts - no more scanning on every launch
  • 1-hour TTL (configurable from 5 minutes to 24 hours)
  • JSON-based storage at ~/.wemo_mcp_cache.json
  • 26+ cache entries per device - full metadata preserved
  • Smart expiration - auto-refresh when cache expires

⚙️ Full Configuration Management

  • YAML config file support (optional, requires pyyaml)
  • Environment variables for all settings (WEMO_MCP_* prefix)
  • 11 configurable options: network, cache, logging
  • Priority system: env vars > YAML > defaults
  • Load from multiple locations: ./config.yaml, ~/.config/wemo-mcp/, /etc/wemo-mcp/

🛡️ Enhanced Error Handling

  • Error classification: network, device, or configuration errors
  • Actionable suggestions - tells you how to fix issues
  • Graceful degradation - continues working even if cache/config fails
  • Better error messages - no more cryptic failures

📝 Input Validation

  • Pydantic models for all MCP tool inputs
  • Automatic validation with clear error messages
  • Type safety - catches invalid inputs before execution

🆕 New MCP Tools (9 Total)

Three new tools for cache and configuration management:

7. get_cache_info

Inspect cache status and statistics

Prompt: "Show me the device cache status"
Response:
  - Cache enabled: Yes
  - Cache file: ~/.wemo_mcp_cache.json
  - Total devices: 13
  - Cache age: 15 minutes
  - TTL: 1 hour
  - Status: Valid (45 minutes remaining)

8. clear_cache

Force cache refresh

Prompt: "Clear the device cache"
Response:
  - Cache cleared successfully
  - 13 devices removed
  - Next scan will rebuild cache

9. get_configuration

View all current settings

Prompt: "Show current configuration"
Response:
  - Network: 192.168.1.0/24, timeout 0.6s, 60 workers
  - Cache: Enabled, TTL 3600s, ~/.wemo_mcp_cache.json
  - Logging: INFO level
  - Environment variables available: WEMO_MCP_*

📊 Statistics

Code Growth

  • server.py: 701 → 1100+ lines (+57%)
  • New modules: 669 lines (error_handling.py + cache.py + config.py)
  • Documentation: +800 lines (CONFIGURATION.md + config examples)

Test Coverage

  • Test count: 30 → 56 tests (+87%)
  • Coverage: 78% → 63.64% overall (expanded codebase)
  • Test speed: ~3-5 seconds (still fast!)

MCP Tools

  • Tools: 6 → 9 (+50%)
  • Cache management: 2 new tools
  • Configuration: 1 new tool

Configuration Options

  • Configurable settings: 11 total
    • Network: 5 settings (subnet, timeout, workers, retry attempts, retry delay)
    • Cache: 3 settings (enabled, file path, TTL)
    • Logging: 2 settings (level, format)
    • Plus 1 global config file path

🚀 Performance Improvements

Faster Startup

  • Before: Scan required on every operation (~20-30s)
  • After: Load from cache (<100ms)
  • Improvement: ~200x faster for repeated operations

Better Reliability

  • Before: Single failure = operation fails
  • After: 3 retry attempts with exponential backoff
  • Success rate: Significantly improved on flaky networks

Reduced Network Traffic

  • Before: Query device for every status check
  • After: Use cached data if valid
  • Reduction: ~90% fewer network calls for repeated queries

📚 New Documentation

CONFIGURATION.md (400+ lines)

Comprehensive configuration guide covering:

  • ✅ Quick start examples
  • ✅ Complete reference for all 11 settings
  • ✅ Example configurations (home, enterprise, dev, docker)
  • ✅ Troubleshooting section
  • ✅ Advanced topics (dynamic config, precedence, sharing)

config.example.yaml (80+ lines)

Full YAML template with:

  • ✅ All configuration options documented
  • ✅ Example values for different scenarios
  • ✅ Comments explaining each setting

.env.example (60+ lines)

Environment variable template with:

  • ✅ All WEMO_MCP_* variables
  • ✅ Dev, staging, and production examples
  • ✅ Usage instructions

🔧 Example Configurations

Home Network (Default)

export WEMO_MCP_DEFAULT_SUBNET="192.168.1.0/24"
export WEMO_MCP_SCAN_TIMEOUT=0.6
export WEMO_MCP_MAX_WORKERS=60

Large Enterprise Network

export WEMO_MCP_DEFAULT_SUBNET="10.0.0.0/16"
export WEMO_MCP_SCAN_TIMEOUT=1.0
export WEMO_MCP_MAX_WORKERS=100
export WEMO_MCP_CACHE_TTL=7200  # 2 hours

Development/Debug

export WEMO_MCP_LOG_LEVEL=DEBUG
export WEMO_MCP_CACHE_TTL=300  # 5 minutes
export WEMO_MCP_CACHE_ENABLED=false  # Disable for testing

Disable Caching (Fast Changes)

export WEMO_MCP_CACHE_ENABLED=false

✅ Validation

All features validated with real WeMo hardware:

E2E Test Results

  • Devices tested: 13 WeMo devices (switches + dimmers)
  • Tests passed: 5/5 (100%)
  • Tests skipped: 3 (safety precautions for control/rename)
  • Scan time: 20.49s for 192.168.86.0/24 network
  • Cache entries: 26 per device (full metadata)
  • Features validated:
    • ✅ Persistent cache survived server restart
    • ✅ Retry logic handled device timeouts
    • ✅ Configuration loaded from environment variables
    • ✅ All 9 MCP tools working correctly

🆙 Upgrade Guide

From v1.2.0 → v1.3.0

No breaking changes! This is a feature-only release.

Installation

# Update via uvx (recommended)
uvx --reinstall wemo-mcp-server

# Or via pip
pip install --upgrade wemo-mcp-server

Optional: Enable Configuration

# Copy example configs
cp config.example.yaml config.yaml
cp .env.example .env

# Edit with your settings
nano config.yaml

Optional: Configure Cache Location

# Default: ~/.wemo_mcp_cache.json
export WEMO_MCP_CACHE_FILE="/custom/path/cache.json"

Optional: Adjust Cache TTL

# Default: 3600s (1 hour)
export WEMO_MCP_CACHE_TTL=7200  # 2 hours

🐛 Bug Fixes

  • Fixed device cache not persisting between server restarts
  • Fixed error messages not providing actionable guidance
  • Fixed configuration not being easily customizable
  • Fixed retry logic missing for transient network failures

🔮 What's Next: Phase 3 Preview

Coming in future releases:

  • 🏠 Home Assistant integration
  • 📊 Prometheus metrics/monitoring
  • 🔌 Additional smart home platforms
  • 🐳 Official Docker image
  • 📱 Mobile-friendly web UI

📦 Full Changelog

See CHANGELOG.md for complete details.


🙏 Thank You

Thank you for using WeMo MCP Server! If you encounter any issues or have suggestions, please open an issue.


Links:

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track apiarya/wemo-mcp-server

Get notified when new releases ship.

Sign up free

About apiarya/wemo-mcp-server

![wemo-mcp-server MCP server](https://glama.ai/mcp/servers/@apiarya/wemo-mcp-server) 🪟 - Control WeMo smart home devices via AI assistants using natural language. Built on pywemo for 100% local control — no cloud dependency. Supports dimmer brightness, device rename, HomeKit codes, and multi-phase discovery.

All releases →

Beta — feedback welcome: [email protected]