WeMo MCP Server Configuration Guide
February 22, 2026 · View on GitHub
Complete guide to configuring the WeMo MCP Server for your environment.
Table of Contents
Quick Start
Method 1: Environment Variables (Recommended)
Quickest way to customize settings:
# Set your network subnet
export WEMO_MCP_DEFAULT_SUBNET="192.168.1.0/24"
# Extend cache lifetime to 2 hours
export WEMO_MCP_CACHE_TTL=7200
# Enable debug logging
export WEMO_MCP_LOG_LEVEL=DEBUG
# Start the server
uvx wemo-mcp-server
Method 2: YAML Configuration File
For persistent configuration:
# Copy example config
cp config.example.yaml config.yaml
# Edit with your preferred editor
nano config.yaml
# Server will automatically load config.yaml if present
Configuration Methods
The server loads configuration in this priority order (highest to lowest):
- Environment Variables - Override everything
- YAML Config File - Persistent settings
- Default Values - Built-in defaults
Environment Variables
All settings can be configured with the WEMO_MCP_ prefix:
WEMO_MCP_DEFAULT_SUBNET=192.168.1.0/24
WEMO_MCP_SCAN_TIMEOUT=0.6
WEMO_MCP_MAX_WORKERS=60
WEMO_MCP_CACHE_ENABLED=true
WEMO_MCP_CACHE_FILE=~/.wemo_mcp_cache.json
WEMO_MCP_CACHE_TTL=3600
WEMO_MCP_LOG_LEVEL=INFO
Load from .env file:
cp .env.example .env
# Edit .env with your settings
source .env # or use dotenv loader
YAML Configuration File
The server looks for config.yaml in these locations (in order):
- Current working directory:
./config.yaml - User config directory:
~/.config/wemo-mcp/config.yaml - System config directory:
/etc/wemo-mcp/config.yaml
Example config.yaml:
network:
default_subnet: "192.168.1.0/24"
scan_timeout: 0.6
max_workers: 60
retry_attempts: 3
retry_delay: 0.5
cache:
enabled: true
file_path: "~/.wemo_mcp_cache.json"
ttl_seconds: 3600
logging:
level: "INFO"
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
Configuration Reference
Network Settings
default_subnet
- Environment:
WEMO_MCP_DEFAULT_SUBNET - Default:
192.168.1.0/24 - Format: CIDR notation (e.g.,
192.168.1.0/24,10.0.0.0/16) - Description: Network subnet to scan when not specified in scan_network call
- Examples:
192.168.1.0/24- Single /24 network (254 hosts)10.0.0.0/16- Large /16 network (65,534 hosts)192.168.0.0/16- Two /16 networks
scan_timeout
- Environment:
WEMO_MCP_SCAN_TIMEOUT - Default:
0.6 - Range:
0.1-5.0seconds - Description: Connection timeout for port probing during network scan
- Tips:
- Lower values = faster scan, may miss slow devices
- Higher values = slower scan, catches all devices
- Use
1.0for large networks or WiFi devices - Use
0.4for wired networks with fast devices
max_workers
- Environment:
WEMO_MCP_MAX_WORKERS - Default:
60 - Range:
1-200 - Description: Maximum concurrent threads for parallel scanning
- Tips:
- Higher values = faster scan, may overwhelm network/router
- Lower values = slower scan, gentler on network
- Use
30-60for home networks - Use
100-150for enterprise networks - Reduce if experiencing network issues
retry_attempts
- Environment:
WEMO_MCP_RETRY_ATTEMPTS - Default:
3 - Range:
1-10 - Description: Number of retry attempts for device operations
- Note: Applied to control/status operations with exponential backoff
retry_delay
- Environment:
WEMO_MCP_RETRY_DELAY - Default:
0.5 - Range:
0.1-5.0seconds - Description: Initial delay between retries (doubles each retry)
Cache Settings
enabled
- Environment:
WEMO_MCP_CACHE_ENABLED - Default:
true - Values:
true,false,1,0,yes,no - Description: Enable/disable persistent device caching
- Benefits:
- Faster startup (no scan needed)
- Survives server restarts
- Reduces network traffic
file_path
- Environment:
WEMO_MCP_CACHE_FILE - Default:
~/.wemo_mcp_cache.json - Format: Absolute or relative path
- Description: Location of cache file
- Examples:
~/.wemo_mcp_cache.json- User home directory/var/cache/wemo-mcp/devices.json- System cache./cache.json- Current directory
ttl_seconds
- Environment:
WEMO_MCP_CACHE_TTL - Default:
3600(1 hour) - Range:
0- unlimited - Description: Cache time-to-live in seconds
- Special:
0= never expire - Examples:
300- 5 minutes (frequent changes)3600- 1 hour (balanced)7200- 2 hours (stable network)86400- 24 hours (rare changes)
Logging Settings
level
- Environment:
WEMO_MCP_LOG_LEVEL - Default:
INFO - Values:
DEBUG,INFO,WARNING,ERROR,CRITICAL - Description: Logging verbosity level
- Recommendations:
DEBUG- Development, troubleshootingINFO- Production, normal operationWARNING- Production, only warnings/errorsERROR- Production, only errors
format
- Environment:
WEMO_MCP_LOG_FORMAT - Default:
%(asctime)s - %(name)s - %(levelname)s - %(message)s - Description: Python logging format string
- Examples:
%(levelname)s: %(message)s- Simple format%(asctime)s [%(levelname)s] %(message)s- Compact format%(asctime)s - %(name)s - %(levelname)s - %(message)s- Full format
Example Configurations
Home Network (Default)
Simple home network with standard settings:
export WEMO_MCP_DEFAULT_SUBNET="192.168.1.0/24"
export WEMO_MCP_SCAN_TIMEOUT=0.6
export WEMO_MCP_MAX_WORKERS=60
Large Network
Enterprise or multi-subnet setup:
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
IoT/Guest Network
Isolated network with limited devices:
export WEMO_MCP_DEFAULT_SUBNET="192.168.99.0/24"
export WEMO_MCP_SCAN_TIMEOUT=0.8
export WEMO_MCP_MAX_WORKERS=30
export WEMO_MCP_CACHE_TTL=3600
Development/Debug
Maximum verbosity for troubleshooting:
export WEMO_MCP_DEFAULT_SUBNET="192.168.1.0/24"
export WEMO_MCP_LOG_LEVEL=DEBUG
export WEMO_MCP_CACHE_TTL=300 # 5 minutes
export WEMO_MCP_CACHE_ENABLED=false # Disable for testing
Docker/Container
Environment-based configuration for containers:
# Dockerfile or docker-compose.yml
ENV WEMO_MCP_DEFAULT_SUBNET=192.168.1.0/24
ENV WEMO_MCP_CACHE_FILE=/var/cache/wemo/devices.json
ENV WEMO_MCP_CACHE_TTL=7200
ENV WEMO_MCP_LOG_LEVEL=INFO
Multiple Subnets
Scan multiple networks (requires multiple scans):
# First subnet
claude chat "Scan 192.168.1.0/24 for devices"
# Second subnet
claude chat "Scan 10.0.0.0/16 for devices"
# Results are merged in cache
Troubleshooting
No Devices Found
Problem: scan_network finds 0 devices
Solutions:
-
Check subnet:
# Find your subnet (macOS/Linux) ifconfig | grep "inet " # or ip addr show # Use correct subnet export WEMO_MCP_DEFAULT_SUBNET="your.subnet.0/24" -
Increase timeout:
export WEMO_MCP_SCAN_TIMEOUT=1.5 -
Check network connectivity:
# Ping a known WeMo device ping 192.168.1.100
Slow Scanning
Problem: Network scan takes too long
Solutions:
-
Reduce workers (if overwhelming network):
export WEMO_MCP_MAX_WORKERS=30 -
Reduce timeout (if devices respond quickly):
export WEMO_MCP_SCAN_TIMEOUT=0.4 -
Use smaller subnet:
export WEMO_MCP_DEFAULT_SUBNET="192.168.1.0/28" # Only 14 hosts
Cache Issues
Problem: Devices not updating or cache corruption
Solutions:
-
Clear cache manually:
claude chat "Clear the device cache" -
Delete cache file:
rm ~/.wemo_mcp_cache.json -
Disable caching:
export WEMO_MCP_CACHE_ENABLED=false -
Reduce TTL:
export WEMO_MCP_CACHE_TTL=300 # 5 minutes
Device Control Failures
Problem: Devices found but control commands fail
Solutions:
-
Enable debug logging:
export WEMO_MCP_LOG_LEVEL=DEBUG -
Check device responsiveness:
# Use WeMo app to control device # If WeMo app works, MCP should work -
Rescan network:
claude chat "Clear cache and scan for devices"
Configuration Not Loading
Problem: Environment variables or config file ignored
Solutions:
-
Verify environment variables:
env | grep WEMO_MCP -
Check config file location:
ls -la ~/.config/wemo-mcp/config.yaml ls -la ./config.yaml -
Use get_configuration tool:
claude chat "Show me the current configuration" -
Restart server/client after configuration changes
Advanced Topics
Dynamic Configuration
Change settings without restarting:
# Use get_configuration to verify current settings
claude chat "Show current configuration"
# MCP tools respect current environment
# Export new values before next operation
export WEMO_MCP_SCAN_TIMEOUT=1.0
claude chat "Scan for devices" # Uses new timeout
Configuration Precedence
When multiple configuration sources exist:
Environment Variables (highest priority)
↓
YAML Config File
↓
Default Values (lowest priority)
Example:
config.yamlsetsscan_timeout: 0.8- Environment has
WEMO_MCP_SCAN_TIMEOUT=1.0 - Result: Uses
1.0(environment wins)
Sharing Configuration
For teams:
- Commit
config.example.yamlto git - Team members copy and customize locally
- Add
config.yamlto.gitignore(already done)
For deployment:
- Use environment variables in production
- Use config files for local development
- Document settings in README or wiki
Getting Help
If you're still having issues:
-
Enable debug logging:
export WEMO_MCP_LOG_LEVEL=DEBUG -
Check logs for error messages
-
Verify settings:
claude chat "Show configuration" -
Test basic connectivity:
claude chat "Scan for devices" -
Open an issue on GitHub with:
- Configuration (sanitize IP addresses)
- Debug logs
- Network setup description
- Expected vs actual behavior
See Also
- README.md - Main documentation
- config.example.yaml - Complete YAML config template
- .env.example - Environment variable template
- CHANGELOG.md - Version history and changes