Skip to main content

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

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.

Metadata

Release files for mcp-wyze-server 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-wyze-server 0.1.2
File Size Uploaded Provenance
mcp_wyze_server-0.1.2.tar.gz 10.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-wyze-server 0.1.2
File Interpreter ABI Platform
mcp_wyze_server-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 19.8 kB

Release files / mcp_wyze_server-0.1.2.tar.gz

Download URL mcp_wyze_server-0.1.2.tar.gz
Size 10.0 kB
Tags Source
SHA-256 checksum
How to use checksums
998c409dc7ab87dfc016ec75ff79872b77bfc116b0c9818caf5f900f1443fad7
BLAKE2b-256 checksum
How to use checksums
f6d6ff63dbdeb83b726444d01598c31e0a3b78a877a3d2bc15b97e4bdabd2a93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release files / mcp_wyze_server-0.1.2-py3-none-any.whl

Download URL mcp_wyze_server-0.1.2-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c933f627d8883a0c6d36c8db4e8b4cfae1767b7eb3d51a195353f70546173b26
BLAKE2b-256 checksum
How to use checksums
15d95ad9b6842969d399465861dc366cc291468a69a6034f4c156632b618290e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Security for mcp-wyze-server 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page