Skip to main content
Glama
elgato-keylight

elgato-keylight

elgato-keylight

Control Elgato Key Lights from CLI, waybar, and Claude Code (MCP).

Install

# Development
uv sync

# Global CLI
uv tool install -e ".[mcp]"

Related MCP server: hue_mcp

CLI

elgato status                # Show all lights
elgato on                    # Turn all on
elgato off                   # Turn all off
elgato toggle                # Toggle on/off
elgato brightness 75         # Set brightness (0-100)
elgato brightness-up         # +10 brightness
elgato brightness-down       # -10 brightness
elgato temperature 200       # Set color temp (143-344)
elgato preset webcam         # Apply preset (per-light values)
elgato identify              # Flash to identify
elgato -l right status       # Target specific light

# Effects
elgato flash                 # Flash on/off
elgato pulse                 # Smooth brightness pulse
elgato celebrate             # Color temperature dance
elgato alert                 # Urgent attention flash
elgato mood focus            # Set mood (cozy/focus/relax/energize/movie)

Waybar

Add to ~/.config/waybar/config.jsonc:

"custom/lights": {
    "exec": "elgato-waybar",
    "return-type": "json",
    "interval": 30,
    "on-click": "elgato toggle",
    "on-click-right": "elgato preset video",
    "on-scroll-up": "elgato brightness-up",
    "on-scroll-down": "elgato brightness-down"
}

Add to ~/.config/waybar/style.css:

#custom-lights {
    color: #7aa2f7;
}
#custom-lights.off {
    color: #565f89;
}
#custom-lights.mixed {
    color: #e0af68;
}

MCP Server

Add to ~/.claude.json:

{
    "mcpServers": {
        "elgato-keylight": {
            "command": "uv",
            "args": ["run", "--directory", "/path/to/elgato-control-home-automation", "--extra", "mcp", "elgato-mcp"]
        }
    }
}

Config

Config lives at ~/.config/elgato-keylight/config.toml. Presets support per-light overrides:

[presets.webcam]
brightness = 32       # fallback for unnamed lights
temperature = 179

[presets.webcam.right]
brightness = 18       # right light gets its own values
temperature = 181

[presets.webcam.left]
brightness = 46       # left light gets its own values
temperature = 177

License

Licensed under either of

at your option.

Available Tools

13 tools
alert_flashB

Urgent attention-getting flash at max brightness. Restores original state.

Args: flashes: Number of alert flashes (default 5). light_names: Optional list of light names.

Inputs: flashes, light_names. Returns: result

apply_presetC

Apply a named lighting preset.

Available presets: bright, dim, warm, cool, video.

Args: preset_name: Name of the preset to apply. light_names: Optional list of light names.

Inputs: preset_name (required), light_names. Returns: result

celebrateA

Fun alternating color temperature dance! Perfect for celebrating a win. Restores original state when done.

Inputs: no named parameters. Returns: result

dim_for_attentionA

Slowly dim lights to subtly get attention without being jarring. Restores original state.

Args: light_names: Optional list of light names.

Inputs: light_names. Returns: result

flash_lightsB

Flash the lights on/off to get attention or say hello! Restores original state.

Args: times: Number of flashes (default 3). light_names: Optional list of light names.

Inputs: times, light_names. Returns: result

get_light_statusA

Get the current status of all (or specified) lights.

Args: light_names: Optional list of light names to query (e.g. ["left", "right"]). If not provided, queries all configured lights.

Inputs: light_names. Returns: result

pulse_lightsA

Smoothly pulse light brightness up and down. Restores original state.

Args: cycles: Number of pulse cycles (default 3). light_names: Optional list of light names.

Inputs: cycles, light_names. Returns: result

set_brightnessB

Set brightness of all (or specified) lights.

Args: brightness: Brightness level 0-100. light_names: Optional list of light names.

Inputs: brightness (required), light_names. Returns: result

set_mood_lightingB

Set a mood lighting preset. This persists (does not restore previous state).

Available moods: cozy, focus, relax, energize, movie.

Args: mood: The mood to set.

Inputs: mood (required). Returns: result

set_temperatureA

Set color temperature of all (or specified) lights.

Args: temperature: Temperature in Elgato units (143=cool/7000K to 344=warm/2900K). light_names: Optional list of light names.

Inputs: temperature (required), light_names. Returns: result

toggle_lightsA

Toggle all (or specified) lights on/off.

Args: light_names: Optional list of light names to toggle.

Inputs: light_names. Returns: result

turn_offC

Turn off all (or specified) lights.

Args: light_names: Optional list of light names to turn off.

Inputs: light_names. Returns: result

turn_onB

Turn on all (or specified) lights.

Args: light_names: Optional list of light names to turn on.

Inputs: light_names. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 13 tools

    Disambiguation5/5

    Each tool has a clear, distinct purpose: basic on/off/toggle, brightness/temperature control, status query, presets, and specific effects. Descriptions like 'alert_flash' vs 'flash_lights' highlight urgency vs casual use, preventing confusion.

    Naming Consistency4/5

    Most tools follow a verb_noun pattern (e.g., 'turn_on', 'set_brightness'), but 'celebrate' is a single-word verb, and 'dim_for_attention' uses a preposition, introducing slight inconsistency.

    Tool Count5/5

    13 tools cover all essential controls (power, brightness, temperature, status) plus presets and effects without being excessive. The count is well-scoped for the domain.

    Completeness5/5

    The tool set includes CRUD-like operations (turn on/off, set brightness/temp, get status), multiple presets (apply_preset, set_mood_lighting), and fun effects, leaving no obvious gaps for typical usage.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      MCP server for controlling Meticulous espresso machines via Claude and other AI clients.
      22
      112 npm
      MIT
    • F
      license
      Not graded
      quality
      C
      maintenance
      A production-ready Model Context Protocol (MCP) server that enables Claude to control Philips Hue lights through natural language commands.
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      MCP server for the Calcifier smart camping lamp, enabling control of lamp state, brightness, color temperature, mode, and battery charging via natural language with Claude.
      -
    • A
      license
      A
      quality
      D
      maintenance
      MCP server that enables AI agents to control Twinkly lights through natural language, supporting operations like on/off, color, brightness, and effects.
      14
      24 npm
      ISC