Skip to main content

MCP server for controlling Wyze smart home devices

Project description

MCP Wyze Server

An MCP (Model Context Protocol) server for controlling Wyze smart home devices using the wyze-sdk library.

Overview

This MCP server provides a comprehensive interface for interacting with Wyze devices through AI assistants like Claude. It supports authentication, device discovery, device control, and group management for various Wyze smart home products.

Features

  • Authentication: Secure login using Wyze API credentials
  • Device Discovery: List and get information about all Wyze devices
  • Device Control: Turn devices on/off, adjust brightness, and more
  • Group Management: Control entire rooms or groups of devices at once
  • Live Resources: Real-time device and group status monitoring
  • Automatic Login: Uses environment variables for seamless authentication

Prerequisites

  • Python 3.13+
  • Wyze developer account with API credentials
  • uv package manager

Installation

Option 1: Install from PyPI (Recommended)

uv pip install mcp-wyze-server

Or with pip:

pip install mcp-wyze-server

Option 2: Install from Source

  1. Clone the repository:
git clone https://github.com/aldilaff/mcp-wyze-server.git
cd mcp-wyze-server
  1. Install with uv:
uv pip install -e .

Or build and install:

uv build
uv pip install dist/*.whl

Configure Environment Variables

After installation, configure environment variables:

cp .env.example .env

Edit .env and add your Wyze credentials:

WYZE_EMAIL=your-email@example.com
WYZE_PASSWORD=your-password
WYZE_KEY_ID=your-key-id-here
WYZE_API_KEY=your-api-key-here

Getting Wyze API Credentials

To obtain your Wyze API credentials:

  1. Visit the Wyze Developer Portal
  2. Create a developer account if you don't have one
  3. Create a new API key
  4. Note down your KEY_ID and API_KEY

Usage

Running the Server Standalone

If installed from PyPI:

mcp-wyze-server

If running from source:

uv run python src/mcp_wyze_server/server.py

Integrating with Claude Desktop

Add this configuration to your Claude Desktop MCP settings:

If installed globally via pip/uv:

{
  "mcpServers": {
    "wyze": {
      "command": "/Users/{yourusername}/.local/bin/uv",
      "args": ["tool", "run", "mcp-wyze-server"],
      "env": {
        "WYZE_EMAIL": "your-email@example.com",
        "WYZE_PASSWORD": "your-password",
        "WYZE_KEY_ID": "your-key-id",
        "WYZE_API_KEY": "your-api-key"
      }
    }
  }
}

Note: Replace /Users/yourusername/.local/bin/uv with the actual path to your uv installation. You can find this by running which uv in your terminal.

If running from source (recommended for development):

{
  "mcpServers": {
    "wyze": {
      "command": "/Users/yourusername/.local/bin/uv",
      "args": [
        "run",
        "--directory",
        "/path/to/mcp-wyze-server",
        "python",
        "src/mcp_wyze_server/server.py"
      ],
      "env": {
        "WYZE_EMAIL": "your-email@example.com",
        "WYZE_PASSWORD": "your-password",
        "WYZE_KEY_ID": "your-key-id",
        "WYZE_API_KEY": "your-api-key"
      }
    }
  }
}

Note: Replace /Users/yourusername/.local/bin/uv with your actual uv path.

Configuration with Other MCP Clients

This server uses stdio transport and can be integrated with any MCP client that supports the protocol.

If installed via PyPI:

mcp-wyze-server

If running from source:

uv run python /path/to/mcp-wyze-server/src/mcp_wyze_server/server.py

Available MCP Tools

Authentication

  • wyze_login() - Login to Wyze account (uses env vars)

Device Management

  • wyze_get_devices() - List all devices
  • wyze_device_info(device_mac) - Get device details
  • wyze_get_device_status(device_mac) - Get accurate current status (power state, brightness, etc.)

Basic Device Control

  • wyze_turn_on_device(device_mac) - Turn on a device
  • wyze_turn_off_device(device_mac) - Turn off a device
  • wyze_set_brightness(device_mac, brightness) - Set brightness (0-100)

Enhanced Light Control

  • wyze_set_color_temp(device_mac, color_temp) - Set color temperature (2700K-6500K)
  • wyze_set_color(device_mac, color) - Set RGB color (hex format)
  • wyze_set_light_effect(device_mac, effect) - Set visual effects
  • wyze_set_light_sun_match(device_mac, enabled) - Enable/disable sun matching
  • wyze_clear_light_timer(device_mac) - Clear scheduled timers

Scale Management

  • wyze_get_scales() - List all Wyze scales
  • wyze_get_scale_info(device_mac) - Get detailed scale information
  • wyze_get_scale_records(device_mac, user_id, days_back) - Get weight/body composition records

Resources

  • wyze://devices - Live device list with status
  • wyze://scales - Live scale list with family members

Prompts

  • wyze_device_control_prompt(device_name, action) - Generate control prompts
  • wyze_scale_health_prompt(family_member_name, timeframe) - Generate health analysis prompts

Supported Devices

This server supports various Wyze device types including:

  • Lights (Bulbs, Light Strips)
  • Switches
  • Plugs
  • Scales
  • Locks
  • Cameras (basic control)
  • Thermostats
  • And more...

Development

This project uses:

  • FastMCP: A high-performance MCP server framework
  • wyze-sdk: Comprehensive Python interface for Wyze devices
  • uv: Fast Python package manager

Project Structure

mcp-wyze-server/
├── src/
│   └── mcp_wyze_server/
│       ├── __init__.py
│       └── server.py     # MCP server implementation
├── test_device.py        # Device testing utility
├── pyproject.toml        # Project dependencies
├── .env.example          # Environment variables template
├── CLAUDE.md             # Development guidelines for Claude
├── LICENSE               # MIT License
└── README.md             # This file

Troubleshooting

Common Issues

  1. Authentication Failed: Ensure your Wyze credentials are correct and API keys are valid
  2. Device Not Found: Device MAC addresses are case-sensitive
  3. Connection Timeout: Check your network connection and Wyze service status

Debug Mode

Enable debug logging by setting the environment variable:

export MCP_DEBUG=true

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Wyze SDK for the excellent Python library
  • MCP for the Model Context Protocol specification
  • FastMCP for the MCP server framework

Disclaimer

This project is not affiliated with, endorsed by, or sponsored by Wyze Labs, Inc. All product names, logos, and brands are property of their respective owners.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_wyze_server-0.1.2.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_wyze_server-0.1.2-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file mcp_wyze_server-0.1.2.tar.gz.

File metadata

  • Download URL: mcp_wyze_server-0.1.2.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for mcp_wyze_server-0.1.2.tar.gz
Algorithm Hash digest
SHA256 998c409dc7ab87dfc016ec75ff79872b77bfc116b0c9818caf5f900f1443fad7
MD5 713c38356b5031cbe78fca3f2542573c
BLAKE2b-256 f6d6ff63dbdeb83b726444d01598c31e0a3b78a877a3d2bc15b97e4bdabd2a93

See more details on using hashes here.

File details

Details for the file mcp_wyze_server-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_wyze_server-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c933f627d8883a0c6d36c8db4e8b4cfae1767b7eb3d51a195353f70546173b26
MD5 9dc310ba101ece1ee7fea6e8de51bdd2
BLAKE2b-256 15d95ad9b6842969d399465861dc366cc291468a69a6034f4c156632b618290e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page