Skip to main content
Glama

UPDATE

Homey now offer their own MCP Server: https://homey.app/en-gb/news/introducing-the-homey-mcp-server/

MCP Server for Homey

Model Context Protocol (MCP) server for interacting with the Homey smart home platform.

Features

  • Device Management: List and control all Homey devices

  • Capability Control: Set device capabilities (on/off, brightness, temperature, etc.)

  • Zone Management: List and organize zones

  • Flow Automation: List and trigger Homey Flows

Examples

  • "Show me all lights that are on downstairs"

  • "Can you turn on the livingroom light and set its brightness to 75%"

  • "What is the livingrooms temperature?"

Prerequisites

  • Node.js >= 18

  • A Homey Pro device with local API access

  • Homey API token and local IP address

Getting Homey API Credentials

  1. Navigate to Settings → API Keys in the Homey Web App

  2. Tap "New API Key"

  3. Give it a name and select appropriate permissions

  4. Copy the generated API token

  5. Find your Homey's local IP address in Settings → General → Network

Installation

npm install
npm run build

Configuration

Create a .env file or set environment variables:

HOMEY_API_TOKEN=your_api_token_here
HOMEY_LOCAL_IP=192.168.1.xxx

Usage

Running the Server

npm run build
node dist/index.js

Claude Desktop Configuration

Add to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "homey": {
      "command": "node",
      "args": ["/absolute/path/to/demo/dist/index.js"],
      "env": {
        "HOMEY_API_TOKEN": "your_api_token_here",
        "HOMEY_LOCAL_IP": "192.168.1.xxx"
      }
    }
  }
}

Available Tools

list_devices

List all devices connected to Homey with their capabilities and status.

get_device

Get detailed information about a specific device.

Parameters:

  • deviceId (string): The ID of the device

set_capability

Set a capability value for a device.

Parameters:

  • deviceId (string): The ID of the device

  • capability (string): The capability to set (e.g., onoff, dim, target_temperature)

  • value (any): The value to set

Examples:

  • Turn on a light: { deviceId: "abc123", capability: "onoff", value: true }

  • Set brightness: { deviceId: "abc123", capability: "dim", value: 0.5 }

  • Set temperature: { deviceId: "abc123", capability: "target_temperature", value: 21 }

list_zones

List all zones in your Homey setup.

list_flows

List all available Flows.

trigger_flow

Trigger a specific Homey Flow.

Parameters:

  • flowId (string): The ID of the flow to trigger

Development

Watch Mode

npm run watch

Lint

npm run lint

Fix Linting Errors

npm run lint:fix

Project Structure

.
├── src/
│   └── index.ts       # Main MCP server implementation
├── dist/              # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── README.md

Common Device Capabilities

  • onoff: Turn device on/off (boolean)

  • dim: Brightness level (0-1)

  • target_temperature: Target temperature (number)

  • measure_temperature: Current temperature (read-only)

  • measure_power: Power consumption (read-only)

  • measure_humidity: Humidity level (read-only)

  • volume_set: Volume level (0-1)

  • speaker_playing: Playback state (boolean)

Troubleshooting

Connection Issues

  • Verify your Homey's local IP address hasn't changed

  • Ensure the API token has sufficient permissions

  • Check that your device is on the same network as Homey

Device Not Found

  • Use list_devices to get the correct device ID

  • Verify the device is available in the Homey app

License

MIT

Available Tools

6 tools
get_deviceC

Get details about a specific device

Inputs: deviceId (required).

list_devicesB

List all devices connected to Homey

Inputs: no named parameters.

list_flowsB

List all flows in Homey

Inputs: no named parameters.

list_zonesB

List all zones in Homey

Inputs: no named parameters.

set_capabilityC

Set a capability value for a device (e.g., turn on/off, set brightness)

Inputs: deviceId (required), capability (required), value (required).

trigger_flowC

Trigger a Homey Flow

Inputs: flowId (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: get_device retrieves details for a specific device, list_devices lists all devices, list_flows lists flows, list_zones lists zones, set_capability modifies device capabilities, and trigger_flow activates flows. There is no overlap or ambiguity between these functions.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with snake_case: get_device, list_devices, list_flows, list_zones, set_capability, and trigger_flow. This uniformity makes the tool set predictable and easy to understand.

    Tool Count5/5

    With 6 tools, this server is well-scoped for managing a Homey system. The count is appropriate, covering key operations like device management, flow control, and zone listing without being overwhelming or insufficient.

    Completeness4/5

    The tool set covers core Homey operations well, including device retrieval, listing, capability setting, and flow management. A minor gap is the lack of tools for creating, updating, or deleting devices, flows, or zones, but agents can still perform essential tasks with the provided tools.

    Related MCP Connectors