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

CI codecov Quality Gate Security Rating PyPI version Python 3.10+

MCP Registry MCP Transport

License: MIT

Table of Contents

Related MCP server: MCP Casambi

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

Turning on lights with natural language

Control WeMo devices through AI assistants with natural language - just ask in plain English!

Goodnight scene turns off all devices

"Goodnight" — one command turns off every device in the house

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 - Persistent device cache with 1-hour TTL survives restarts

  • 🔧 Configurable - YAML config files + environment variables for all settings

  • 🔄 Auto-Retry - Automatic retry with exponential backoff for network errors

  • 🛡️ Error Handling - Detailed error messages with actionable suggestions

  • 🔌 Universal - Works with any MCP client (Claude, VS Code, Cursor, etc.)

  • 📡 MCP Resources - Live device state via devices:// and device://{id} URIs

  • 💬 MCP Prompts - Built-in guided prompts: discover, status report, scene control, troubleshoot

  • 🗣️ MCP Elicitations - Interactive clarification when subnet or device name is ambiguous


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"],
      "env": {
        "WEMO_MCP_DEFAULT_SUBNET": "192.168.1.0/24"
      }
    }
  }
}

Restart Claude Desktop after saving.

VS Code

Edit ~/.vscode/mcp.json:

{
  "servers": {
    "wemo": {
      "type": "stdio",
      "command": "uvx",
      "args": ["wemo-mcp-server"],
      "env": {
        "WEMO_MCP_DEFAULT_SUBNET": "192.168.1.0/24"
      }
    }
  }
}

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.


Configuration

The WeMo MCP Server supports flexible configuration through YAML files and environment variables.

Quick Configuration

The most important setting is your network subnet — the server defaults to 192.168.1.0/24 but your devices may be on a different subnet (e.g. 192.168.86.0/24).

Set it directly in your MCP client config using env:

"env": {
  "WEMO_MCP_DEFAULT_SUBNET": "192.168.86.0/24"
}

Or export it before starting the server:

Using Environment Variables (simplest):

export WEMO_MCP_DEFAULT_SUBNET="192.168.1.0/24"
export WEMO_MCP_CACHE_TTL=7200
export WEMO_MCP_LOG_LEVEL=DEBUG

Using YAML Config File:

# Copy example config and customize
cp config.example.yaml config.yaml
# Edit config.yaml with your settings

Configuration Options

Setting

Environment Variable

Default

Description

Network

Default subnet

WEMO_MCP_DEFAULT_SUBNET

192.168.1.0/24

Network to scan for devices

Scan timeout

WEMO_MCP_SCAN_TIMEOUT

0.6

Port probe timeout (seconds)

Max workers

WEMO_MCP_MAX_WORKERS

60

Concurrent scanning threads

Cache

Enable cache

WEMO_MCP_CACHE_ENABLED

true

Persistent device caching

Cache file

WEMO_MCP_CACHE_FILE

~/.wemo_mcp_cache.json

Cache file location

Cache TTL

WEMO_MCP_CACHE_TTL

3600

Cache lifetime (seconds)

Logging

Log level

WEMO_MCP_LOG_LEVEL

INFO

DEBUG, INFO, WARNING, ERROR

Example Configurations

Large Network (multiple subnets):

export WEMO_MCP_DEFAULT_SUBNET="10.0.0.0/16"
export WEMO_MCP_SCAN_TIMEOUT=1.0
export WEMO_MCP_MAX_WORKERS=100

Debug Mode:

export WEMO_MCP_LOG_LEVEL=DEBUG
export WEMO_MCP_CACHE_TTL=300  # 5 minutes

Disable Caching:

export WEMO_MCP_CACHE_ENABLED=false

See config.example.yaml and .env.example for complete configuration templates.

For detailed configuration guide, see CONFIGURATION.md.


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.

HomeKit code retrieval step 1

HomeKit code retrieval step 2

7. get_cache_info

Get information about the persistent device cache.

Example Prompts:

  • "Show me cache information"

  • "Is the device cache expired?"

  • "How many devices are cached?"

Example Response:

Device Cache Status:
  ✅ Cache exists
  📁 Location: ~/.wemo_mcp_cache.json
  📊 Devices: 12
  ⏰ Age: 1,234 seconds (20.6 minutes)
  💾 TTL: 3,600 seconds (1 hour)
  ✅ Status: Valid (not expired)

8. clear_cache

Clear the persistent device cache to force a fresh scan.

Example Prompts:

  • "Clear the device cache"

  • "Reset the cache and rescan"

  • "Delete cached devices"

Example Response:

✅ Cache cleared successfully
Next scan will discover devices fresh.
Run scan_network to rebuild the cache.

Note: This clears both the persistent cache file and in-memory cache. After clearing, run scan_network to rediscover devices.

9. get_configuration

View current server configuration settings.

Example Prompts:

  • "Show me the server configuration"

  • "What are the current settings?"

  • "Display configuration"

Example Response:

Current Configuration:
  Network:
    • Default subnet: 192.168.1.0/24
    • Scan timeout: 0.6 seconds
    • Max workers: 60
  Cache:
    • Enabled: true
    • File: ~/.wemo_mcp_cache.json
    • TTL: 3600 seconds (1 hour)
  Logging:
    • Level: INFO

Note: Shows all configuration including defaults and environment variable overrides. Use environment variables with WEMO_MCP_ prefix to customize.


MCP Capabilities

Beyond tools, this server exposes the full suite of MCP primitives.

Resources

Subscribe to live device data without calling a tool:

URI

Description

devices://

JSON index of all cached devices

device://{name-or-ip}

Live state for a specific device (URL-encoded name supported)

Clients that support MCP Resources (VS Code, MCP Inspector) can read these directly.

Prompts

Four built-in guided prompts available via / slash commands in supporting clients:

Prompt

Description

discover-devices

Guided network scan with subnet selection

device-status-report

Summary report of all device states

activate-scene

Control multiple devices as a scene

troubleshoot-device

Step-by-step device troubleshooting

MCP prompts in VS Code

All four prompts surfaced as /mcp.wemo.* slash commands in VS Code

Elicitations

The server proactively asks for missing information rather than failing silently:

  • scan_network — if no custom subnet is configured (default 192.168.1.0/24), asks which subnet to scan before proceeding

  • control_device — if a device name isn't found in cache, presents closest matches and asks which device was intended

MCP elicitation prompting for subnet

Elicitation in action — server asks for the subnet rather than scanning the wrong network silently

Client Support Matrix

Feature

Claude Desktop

VS Code

Cursor

MCP Inspector

Tools

Resources

⚠️ protocol only

Prompts

⚠️ no slash UI

/ commands

Elicitations

✅ v1.1+

✅ v0.20+


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).

Local Control Signal Flow

All device commands travel exclusively over your local network — no cloud hop required at any stage.

Voice path (Google Home + WeMo):

sequenceDiagram
    participant U as User
    participant GH as Google Home Hub
    participant GC as Google Cloud (ASR only)
    participant WD as WeMo Device

    U->>GH: "Hey Google, turn on chandelier"
    GH->>GC: Audio stream for speech-to-text
    GC-->>GH: Intent: {action: ON, device: chandelier}
    GH->>WD: Matter OnOff.On (UDP 5540, LAN)
    WD-->>GH: ACK
    GH-->>U: "OK, turning on chandelier"

MCP path (AI assistant + this server):

sequenceDiagram
    participant U as User
    participant AI as AI Assistant
    participant MS as MCP Server
    participant WD as WeMo Device

    U->>AI: "Turn on the desk light"
    AI->>MS: tools/call control_device("desk light", "on")
    MS->>WD: UPnP/SOAP BinaryState=1 (TCP 49153, LAN)
    WD-->>MS: HTTP 200 OK
    MS-->>AI: {success: true, state: "on"}
    AI-->>U: "Desk light is now on!"

Both paths use local protocols only after the initial voice recognition (Google Cloud handles speech-to-text; Belkin's cloud is never involved).

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

# Unit tests (CI-compatible, ~4 seconds, 128 tests)
.venv/bin/python -m pytest tests/test_server.py tests/test_phase2.py tests/test_models.py -v

# With coverage report
pytest tests/test_server.py tests/test_phase2.py tests/test_models.py --cov=wemo_mcp_server --cov-report=html

# E2E tests (requires WeMo devices on network)
python tests/test_e2e.py

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

Available Tools

11 tools
clear_cacheA

Clear the persistent device cache.

Removes the cache file and clears in-memory cache. Useful when devices have changed or cache is corrupted. Run scan_network after clearing to rebuild the cache.

Returns

Dictionary containing:
- success: Whether cache was cleared successfully
- message: Descriptive message
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral disclosure burden. It states the tool removes the cache file and clears in-memory cache, and describes the return dictionary. This is transparent about the destructive action, but could mention idempotency or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: three short sentences plus a structured return value specification. It is front-loaded with the action and contains no redundant information. Every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, a simple output schema, and the context signals, the description fully covers purpose, usage guidance, and outcome. It explains when to use, what happens, and what to do next. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters (100% coverage trivially). The description adds no parameter info, but none is needed. Baseline for 0 parameters is 4. The description could have explicitly stated 'no arguments required,' but not necessary.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool clears the persistent device cache, specifying it removes the cache file and clears in-memory cache. It distinguishes itself from siblings like 'get_cache_info' (which reads cache) and 'scan_network' (which rebuilds cache), providing a specific verb and resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use: 'when devices have changed or cache is corrupted.' It also suggests a follow-up step ('Run scan_network after clearing'). It does not explicitly mention when not to use, but the context implies it's for troubleshooting. This is clear enough for an agent, though exclusions would improve it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

control_deviceA

Control a WeMo device (turn on, off, toggle, or set brightness).

Controls a device by sending turn on, turn off, or toggle commands. For dimmer devices, you can also set the brightness level (1-100). The device must have been discovered via scan_network first.

Args:

device_identifier: Device name (e.g., "Office Light") or IP address (e.g., "192.168.1.100")
action: Action to perform - must be one of: "on", "off", "toggle", "brightness"
brightness: Brightness level (1-100) - only used when action is "brightness" or "on" for dimmer devices
ctx: MCP context injected by FastMCP; used to elicit the correct device when identifier is ambiguous

Returns:

Dictionary containing:
- success: Boolean indicating if the action succeeded
- device_name: Name of the device
- action_performed: The action that was executed
- new_state: The state after the action
- brightness: Current brightness level (for dimmers)
ParametersJSON Schema
NameRequiredDescriptionDefault
device_identifierYes
actionYes
brightnessNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully covers behavioral traits: it sends commands, supports dimmers, requires prior discovery, and details the return dictionary. It could mention if the action is idempotent, but overall transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Args and Returns sections, making it easy to parse. It is slightly verbose but every section adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple actions, conditional parameter, prerequisite), the description covers all necessary aspects: prerequisite scanning, action options, parameter relationships, and return format. No output schema is provided, but the description compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds clear meaning: device_identifier can be name or IP, action is constrained to four values, and brightness is conditional on action. This fully compensates for missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool controls a WeMo device with specific actions (on, off, toggle, brightness) and distinguishes it from sibling tools like get_device_status and list_devices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly notes the prerequisite that the device must be discovered via scan_network, and explains the brightness parameter usage. However, it does not provide when-not-to-use or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cache_infoA

Get information about the persistent device cache.

Returns information about the cache file including age, expiration status, and device count. Useful for determining if a rescan is needed.

Returns

Dictionary containing:
- exists: Whether cache file exists
- path: Path to cache file
- age_seconds: Age of cache in seconds
- expired: Whether cache has expired
- device_count: Number of devices in cache
- ttl_seconds: Time-to-live for cache entries
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, but the description fully explains the read-only nature and the returned fields (age, expiration, etc.), leaving no behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct, front-loaded with purpose, and uses a clear returns section without unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and an output schema (implied from context), the description covers all necessary aspects and provides complete return value documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so no parameter description is needed; the description does not add confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies 'Get information about the persistent device cache' and lists what it returns, clearly distinguishing it from sibling tools like clear_cache or list_devices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states it is 'useful for determining if a rescan is needed,' providing context for use, though it does not explicitly contrast with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_configurationA

Get current server configuration.

Returns all configuration settings including network parameters, cache settings, and logging levels. Useful for debugging or verifying environment variable overrides.

Returns

Dictionary containing:
- configuration: All configuration sections
- source: Information about configuration sources (env vars, config file)
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool returns configuration and source info, but does not explicitly state if it's read-only or safe. The lack of mention of side effects is acceptable for a getter, but more clarity on behavioral traits would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a main sentence and a Returns section, but it redundantly lists examples in both prose and the structured list. Slightly verbose, but overall clear and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema (implied), the description provides sufficient context about use cases (debugging, verification) and return content, making it complete for an agent to understand invocation and outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description need not add parameter semantics. Baseline of 4 is appropriate as it covers no-param case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves server configuration, listing specific settings (network, cache, logging). It distinctly differs from sibling tools like control_device or clear_cache, which involve mutations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly mentions use for debugging or verifying environment overrides, providing context. However, it does not state when to avoid use or name sibling alternatives, but siblings are mostly unrelated so exclusion is unnecessary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_device_statusA

Get the current status of a WeMo device.

Retrieves the current state and information for a device by name or IP address. The device must have been discovered via scan_network first.

Args:

device_identifier: Device name (e.g., "Office Light") or IP address (e.g., "192.168.1.100")

Returns:

Dictionary containing:
- device_name: Name of the device
- state: Current state ("on" or "off")
- Additional device information
ParametersJSON Schema
NameRequiredDescriptionDefault
device_identifierYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses prerequisite (discovery) and return fields, but lacks details on error behavior, authentication, or side effects. Since no annotations, description carries burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, well-structured with Args and Returns sections, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers essential information (purpose, prerequisite, return fields). Output schema exists but description is vague on 'additional device information'. Could mention error states.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% coverage; description compensates by providing examples (name or IP address) for device_identifier, adding significant meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves current status and information for a WeMo device by name or IP, distinguishing it from siblings like list_devices or show_device_status_ui.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit prerequisite: device must be discovered via scan_network first. No explicit alternatives or when-not-to-use, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_homekit_codeA

Get the HomeKit setup code for a WeMo device.

Retrieves the HomeKit setup code (HKSetupCode) for devices that support HomeKit integration. This code can be used to add the device to Apple Home. The device must have been discovered via scan_network first.

Note: Not all WeMo devices support HomeKit. If a device doesn't support HomeKit or doesn't have a setup code, an error will be returned.

Args:

device_identifier: Device name (e.g., "Office Light") or IP address (e.g., "192.168.1.100")

Returns:

Dictionary containing:
- success: Boolean indicating if the code was retrieved
- device_name: Name of the device
- homekit_code: The HomeKit setup code (format: XXX-XX-XXX)
- device_ip: IP address of the device
ParametersJSON Schema
NameRequiredDescriptionDefault
device_identifierYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It clearly states prerequisites (device discovered, HomeKit support) and the possibility of an error. It also describes the return format. No contradictions or hidden side effects are evident.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: summary, prerequisites, note, Args, Returns. Every sentence adds necessary information without redundancy. It is concise yet comprehensive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is one parameter and an output schema (implied by context), the description covers all essential aspects: what it does, prerequisites, parameter usage, and return value structure. No gaps are apparent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only a type 'string' for 'device_identifier' with 0% coverage. The description adds significant meaning: it explains the parameter can be a device name (e.g., 'Office Light') or IP address (e.g., '192.168.1.100'), which is essential for the agent to use it correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a HomeKit setup code for a WeMo device. The verb 'Get' and resource 'HomeKit setup code' are specific. This distinguishes it from sibling tools like 'control_device' or 'get_device_status', which perform different functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that the device must be discovered via 'scan_network' first and notes that not all devices support HomeKit, implying when not to use. It does not explicitly compare to siblings, but the context is sufficient for an agent to decide when to invoke this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_devicesA

List all discovered WeMo devices from the cache.

Returns a list of devices that were found in previous network scans. Run scan_network first to populate the device cache.

Returns

Dictionary containing:
- device_count: Number of cached devices
- devices: List of device names and IPs
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes return format (dictionary with device_count and devices list) and source (cache), but does not explicitly state it is read-only or has no side effects; still adequate without annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise three sentences plus returns section, front-loaded with purpose and prerequisite, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, prerequisite, and return format completely for a parameterless list tool with an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%, so baseline is 4; description adds no param details but none are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description specifies verb 'list' and resource 'WeMo devices from cache', clearly distinguishing from siblings like 'scan_network' (populates cache) and 'get_device_status' (specific device).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states prerequisite 'Run scan_network first to populate the device cache', guiding when and when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_deviceA

Rename a WeMo device (change its friendly name).

Changes the friendly name of a WeMo device. This is the name that appears in the WeMo app and is used to identify the device. The device must have been discovered via scan_network first.

After renaming, the device cache will be updated with the new name. You may want to run scan_network again to refresh the device list.

Args:

device_identifier: Current device name (e.g., "Office Dimmer") or IP address (e.g., "192.168.1.100")
new_name: New friendly name for the device (e.g., "Office Light")

Returns:

Dictionary containing:
- success: Boolean indicating if the rename succeeded
- old_name: The previous name of the device
- new_name: The new name of the device
- device_ip: IP address of the device
ParametersJSON Schema
NameRequiredDescriptionDefault
device_identifierYes
new_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the device cache will be updated and recommends refreshing the list. It does not mention side effects or mutability beyond renaming, but the behavior is adequately covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections (Args, Returns) and front-loaded with the core action. There is minor redundancy (two sentences saying essentially the same thing), but overall it's concise and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, the description covers prerequisites, behavior, parameters, and return values comprehensively. It could mention error handling or edge cases, but for a straightforward rename tool, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates thoroughly. For device_identifier, it specifies it can be a current name or IP, with examples. For new_name, it explains it's the new friendly name with an example. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool renames a WeMo device, changing its friendly name. It distinguishes from siblings (e.g., control_device, get_device_status) by focusing solely on renaming, a unique action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear prerequisite: the device must be discovered via scan_network first. It also suggests running scan_network again after renaming. While it doesn't explicitly list when not to use it, the context is sufficient given no alternative renaming tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_networkA

Scan network for WeMo devices using pywemo discovery.

This tool scans the specified subnet for WeMo devices by:

  1. Probing all IPs in the subnet on common WeMo ports (49152-49155)

  2. Verifying responsive IPs by attempting to read device descriptions

  3. Using pywemo library to properly identify and parse WeMo devices

Args:

subnet: Network subnet in CIDR notation (default: from config or "192.168.1.0/24")
timeout: Connection timeout in seconds for port probing (default: from config or 0.6)
max_workers: Maximum concurrent workers for network scanning (default: from config or 60)
ctx: MCP context injected by FastMCP; used to elicit the subnet when none is configured

Returns:

Dictionary containing:
- scan_parameters: The parameters used for scanning
- results: Summary with device counts
- devices: List of discovered WeMo devices with full details
ParametersJSON Schema
NameRequiredDescriptionDefault
subnetNo
timeoutNo
max_workersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes the scanning steps: probing ports, verifying responsiveness, using pywemo. However, it omits potential side effects like network load or that scanning may be slow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-organized with clear sections (purpose, steps, args, returns). Could be slightly more concise but appropriate for the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers input, process, and output adequately. No annotations or schema descriptions, but description provides thorough details. Missing error handling or empty results clarification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description fully compensates by explaining all three parameters including defaults and context usage. Each parameter is described with sufficient detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool scans network for WeMo devices using pywemo. Verb 'scan' and resource 'network for WeMo devices' are specific and distinguish from siblings like list_devices or control_device.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage for initial device discovery but no explicit when-to-use or when-not-to-use compared to sibling tools. The description lacks guidance on alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

show_device_dashboardA

Show an interactive WeMo device dashboard inline in the host.

Returns rich HTML showing all cached devices as cards with Toggle / On / Off buttons. Supported in Claude Desktop, VS Code, ChatGPT, Goose and any other MCP Apps-compatible host (spec: SEP-1865).

Text-only fallback: use list_devices instead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It describes the output (rich HTML with cards/buttons) but does not mention side effects, authentication, or caching details. However, the tool appears to be a read-only display of cached devices.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a single sentence for purpose, one for output, and one for fallback. All information is front-loaded and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema present, the description covers the main purpose, output format, and fallback. It could mention the dependency on prior caching or scan, but the phrase 'all cached devices' implies that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so the description does not need to explain parameter details. It adds no parameter info, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Show an interactive WeMo device dashboard inline in the host' and specifies the rich HTML output with cards and buttons. It also distinguishes itself from sibling tool list_devices by noting the text-only fallback.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says it is 'Supported in Claude Desktop, VS Code, ChatGPT, Goose and any other MCP Apps-compatible host', indicating when to use this tool. It also provides a clear alternative: 'Text-only fallback: use list_devices instead.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

show_device_status_uiA

Show a device status card with interactive controls.

Returns rich HTML for a single device showing its name, IP, model, and On / Off / Toggle buttons. Supported in Claude Desktop, VS Code, ChatGPT, Goose and any other MCP Apps-compatible host.

Args:

device_identifier: Device name or IP address.

Text-only fallback: use get_device_status + control_device instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_identifierYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It mentions the tool returns HTML and supports various hosts, but does not state whether it modifies device state, requires authentication, or handles errors. While the tool name implies read-only, this is not explicitly confirmed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise—two sentences plus an args line—with no redundancy. It is front-loaded with the main purpose and efficiently includes fallback guidance and supported hosts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter and the presence of an output schema, the description adequately covers the tool's purpose, output format (rich HTML), supported hosts, and alternatives. It lacks explicit error handling or permission details, but overall is complete for a simple UI tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds essential meaning by specifying that device_identifier is 'Device name or IP address.' This bridges the gap, though additional details like format or validation would improve clarity further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool shows a device status card with interactive controls, specifying it returns rich HTML with device details and buttons. It distinguishes itself from siblings by mentioning a text-only fallback using get_device_status and control_device.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides usage guidance: 'Text-only fallback: use get_device_status + control_device instead.' This tells the agent when to avoid this tool and offers clear alternatives, making the usage criteria well-defined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updatesv1.4.1
    • First observedclear_cache
    • First observedcontrol_device
    • First observedget_cache_info
    • First observedget_configuration
    • First observedget_device_status
    • First observedget_homekit_code
    • First observedlist_devices
    • First observedrename_device
    • First observedscan_network
    • First observedshow_device_dashboard
    • First observedshow_device_status_ui

TDQS

A4.5/5.0
Disambiguation5/5

Each tool has a clear and distinct purpose. Even the two UI tools are differentiated by scope (full dashboard vs single device card), and control vs status are separate. No overlapping functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., clear_cache, get_device_status, scan_network). The naming is predictable and easy to understand.

Tool Count5/5

With 11 tools, the server is well-scoped for its domain. It covers all necessary operations without being bloated or undersized.

Completeness5/5

The tool set provides a complete CRUD-like surface: discovery, listing, status, control (on/off/toggle/brightness), renaming, cache management, configuration, and even HomeKit code retrieval. No obvious gaps.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables control and monitoring of Wyze smart home devices through AI assistants. Supports device discovery, control (on/off, brightness, color), group management, and health tracking for scales with real-time status monitoring.
    15
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables control of lights in CASAMBI networks through Bluetooth interface without requiring APIs. Provides direct lighting control and management capabilities through natural language interactions.
    1
    GPL 3.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to control Philips Hue smart lighting systems, including individual lights, groups, scenes, brightness, and color adjustments through natural language commands.
    -

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