Skip to main content
Glama

Fibaro MCP Server

Fibaro Home Center integration for the Model Context Protocol (MCP).

Use it with MCP-capable clients (Claude Desktop, Cursor, VS Code extensions, etc.) to control devices, run scenes, manage variables, and administer your Fibaro system.

Features

Device Control

  • List and filter devices by room or type

  • Get detailed device information and current state

  • Control devices with various actions (on/off, dimming, color control)

  • Support for lights, switches, thermostats, and more

  • v3: Bulk operations for multiple devices at once

Scene Management

  • List all available scenes

  • Get detailed scene information

  • Execute and stop scenes programmatically

  • v3: Scene templates with parameter substitution

  • v3: Lua REPL for interactive testing

Room & Section Management

  • List all rooms and sections in your home

  • Filter devices and scenes by room

System Integration

  • Access global variables

  • Get system information

  • Retrieve weather data

  • Monitor energy consumption

  • v3: System backup and restore

  • v3: Webhook server and MQTT bridge

Analytics & History (v3)

  • Device usage patterns and statistics

  • Scene execution history and performance

  • Energy consumption trends

  • System health monitoring

  • Analytics dashboard

Automation Builder (v3)

  • Visual automation creation with JSON

  • Multi-condition triggers (AND/OR logic)

  • Device state, time, and variable conditions

  • Generates valid Fibaro Lua code

Related MCP server: HC3 MCP Server

Installation

Most users should not need to clone this repo. Configure your MCP client to run the server via npx:

{
  "command": "npx",
  "args": ["-y", "fibaro-mcp"]
}

From source (development)

npm install
npm run build

Configuration

You can configure the server in three ways (in priority order):

  1. FIBARO_HOST/FIBARO_USERNAME/FIBARO_PASSWORD env vars (explicit)

  2. FIBARO_CONFIG=/absolute/path/to/fibaro.json (single config file)

  3. .env file (loaded automatically when the server starts)

  • FIBARO_HOST: The hostname or IP address of your Fibaro Home Center (required)

  • FIBARO_USERNAME: Your Fibaro username (required)

  • FIBARO_PASSWORD: Your Fibaro password (required)

  • FIBARO_PORT: The port number (optional, defaults to 443 for HTTPS, 80 for HTTP)

  • FIBARO_HTTPS: Whether to use HTTPS (optional, defaults to true)

Tool listing mode:

  • FIBARO_TOOLSET: intent (default), legacy, or both

Example Configuration

export FIBARO_HOST="192.168.1.100"
export FIBARO_USERNAME="admin"
export FIBARO_PASSWORD="your-password"
export FIBARO_PORT="443"
export FIBARO_HTTPS="true"

Example FIBARO_CONFIG

Create a JSON file anywhere on disk (do not commit it), e.g. ~/fibaro-mcp.json:

{
  "host": "192.168.1.100",
  "username": "admin",
  "password": "your-password",
  "port": 443,
  "https": true
}

Then set:

export FIBARO_CONFIG="$HOME/fibaro-mcp.json"

Example .env

Create .env next to where you run the server:

FIBARO_HOST=192.168.1.100
FIBARO_USERNAME=admin
FIBARO_PASSWORD=your-password
FIBARO_PORT=443
FIBARO_HTTPS=true

Setup (common MCP clients)

The server communicates over stdio. Most clients need:

  • Command: npx (recommended) or node (local checkout)

  • Args: [-y, fibaro-mcp] (recommended) or [/absolute/path/to/repo/dist/index.js]

  • Env: either FIBARO_CONFIG or FIBARO_HOST/FIBARO_USERNAME/FIBARO_PASSWORD

If configuration is missing, instruct the agent to call the first_run tool.

The server will start even without Fibaro credentials so the agent can do this.

Example:

  • Call: first_run

  • Optionally provide: client, os, repo_path, fibaro_host, fibaro_username, fibaro_https, fibaro_port

The tool returns:

  • commands to build (npm install, npm run build)

  • a template fibaro-mcp.json for FIBARO_CONFIG

  • a ready-to-paste MCP client configuration snippet

Security: don’t paste passwords into chat logs; don’t commit fibaro-mcp.json or .env.

Claude Desktop

Add this configuration to your Claude Desktop config file:

MacOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "fibaro": {
      "command": "npx",
      "args": ["-y", "fibaro-mcp"],
      "env": {
        "FIBARO_CONFIG": "/absolute/path/to/fibaro-mcp.json",
        "FIBARO_TOOLSET": "intent"
      }
    }
  }
}

Cursor

Add the MCP server entry in Cursor’s MCP settings (JSON). Use the same structure as Claude Desktop:

{
  "mcpServers": {
    "fibaro": {
      "command": "npx",
      "args": ["-y", "fibaro-mcp"],
      "env": {
        "FIBARO_CONFIG": "/absolute/path/to/fibaro-mcp.json"
      }
    }
  }
}

VS Code (MCP-capable extensions)

Most MCP extensions use the same command/args/env shape. Prefer FIBARO_CONFIG so you don’t copy credentials into multiple places.

Available Tools

By default, you'll see a small "intent" toolset:

  • fibaro_device - Device control and info

  • fibaro_scene - Scene management

  • fibaro_variable - Global variables

  • fibaro_quick_app - Quick App management

  • fibaro_home - System info, weather, energy, rooms, sections, and more

v3 Tools (also included by default)

  • fibaro_template - Scene templates with parameter substitution

  • fibaro_history - Device state history

  • fibaro_scene_history - Scene execution history

  • fibaro_backup - System backup and restore (JSON/YAML)

  • fibaro_repl - Interactive Lua REPL sandbox

  • fibaro_bulk - Bulk device operations

  • fibaro_analytics - Usage analytics and system health

  • fibaro_energy_graph - Historical power/energy data

  • fibaro_integration - Webhook server and MQTT bridge

  • fibaro_automation - Automation builder (generates Lua)

All v3 tools use the op parameter (e.g., fibaro_analytics op=dashboard). See FEATURES.md for the complete list of operations per tool.

You can also expose legacy tools with FIBARO_TOOLSET=legacy or FIBARO_TOOLSET=both.

Device Management

list_devices

List all devices in your Fibaro system.

  • Optional filters: room_id, type

get_device

Get detailed information about a specific device.

  • Parameters: device_id

control_device

Execute any action on a device.

  • Parameters: device_id, action, args (optional)

turn_on

Turn on a device (light, switch, etc.).

  • Parameters: device_id

turn_off

Turn off a device.

  • Parameters: device_id

set_brightness

Set brightness level for dimmable lights.

  • Parameters: device_id, level (0-100)

set_color

Set RGB color for color-capable lights.

  • Parameters: device_id, r, g, b, w (optional)

set_temperature

Set target temperature for thermostats.

  • Parameters: device_id, temperature

Scene Management

list_scenes

List all scenes in the system.

  • Optional filter: room_id

get_scene

Get detailed information about a specific scene.

  • Parameters: scene_id

run_scene

Execute a scene.

  • Parameters: scene_id

stop_scene

Stop a running scene.

  • Parameters: scene_id

Room & Section Management

list_rooms

List all rooms in the system.

list_sections

List all sections in the system.

Global Variables

list_global_variables

List all global variables.

get_global_variable

Get the value of a specific global variable.

  • Parameters: name

set_global_variable

Set the value of a global variable.

  • Parameters: name, value

System Information

get_system_info

Get Fibaro Home Center system information.

get_weather

Get current weather information.

get_energy_panel

Get energy consumption data.

Lua Script Management

get_scene_lua

Get the Lua script code from a scene.

  • Parameters: scene_id

create_scene

Create a new Lua scene.

  • Parameters: name, room_id, lua (optional)

update_scene_lua

Update the Lua code of an existing scene.

  • Parameters: scene_id, lua (optional), name (optional), room_id (optional)

delete_scene

Delete a scene.

  • Parameters: scene_id

list_quick_apps

List all Quick Apps (Lua-based applications) in the system.

get_device_lua

Get Lua code and Quick App variables from a device.

  • Parameters: device_id

create_quick_app

Create a new Quick App (Lua application).

  • Parameters: name, type, code (optional), room_id (optional)

update_quick_app_code

Update the Lua code of a Quick App.

  • Parameters: device_id, code

update_quick_app_variables

Update Quick App variables.

  • Parameters: device_id, variables (array)

delete_device

Delete a device (including Quick Apps).

  • Parameters: device_id

Available Resources

The server provides the following resources that can be accessed through the MCP protocol:

  • fibaro://devices - Current state of all devices

  • fibaro://rooms - List of all rooms

  • fibaro://scenes - List of all scenes

  • fibaro://system - System information

  • fibaro://weather - Current weather

Example Interactions

Here are some example prompts you can use with Claude:

  • "Show me all the lights in my living room"

  • "Turn off all lights in the bedroom"

  • "Set the thermostat to 22 degrees"

  • "What's the current temperature outside?"

  • "Run the 'Good Night' scene"

  • "Dim the kitchen lights to 50%"

  • "Show me all devices that are currently on"

  • "What's my current energy consumption?"

  • "Show me the Lua code for scene 10"

  • "Create a new Lua scene called 'Morning Routine'"

  • "Update the Lua code in scene 15"

  • "List all my Quick Apps"

  • "Create a new Quick App for weather monitoring"

  • "Update the code in Quick App 42"

  • "Delete scene 20"

Development

Build

npm run build

Development Mode (watch)

npm run dev

Run directly

npm start

Documentation

v3 Documentation

AI Assistant Usage Tips

When using this MCP server with AI assistants like Claude, follow these guidelines for efficient operation:

Avoid Listing Everything First

Don't start by listing all devices, scenes, or rooms. The full lists can be over 1MB and waste context.

Do use targeted queries:

  • Ask for a specific device by name: fibaro_device operation=get name="Kitchen Light"

  • Filter by room: fibaro_device operation=list room_id=5

  • Get only what you need: fibaro_scene operation=get id=10

Use Name-Based Lookups

All tools support name-based lookups - you don't need IDs:

  • fibaro_device operation=control name="Living Room Lamp" action=turnOn

  • fibaro_scene operation=run name="Good Night"

  • fibaro_variable operation=get name=HomeMode

Prefer Intent Tools

The default intent toolset (fibaro_device, fibaro_scene, etc.) combines multiple operations into single tools, reducing API calls.

Check Analytics Instead of Listing

For overview information, use analytics:

  • fibaro_analytics operation=system_health - Quick health check

  • fibaro_analytics operation=dashboard - Comprehensive overview

Example Efficient Workflows

# Bad: Lists everything (1MB+)
fibaro_device operation=list
fibaro_scene operation=list

# Good: Targeted queries
fibaro_device operation=get name="Kitchen Light"
fibaro_scene operation=run name="Morning Routine"

Development

Use local code with npx-style config

If you want your MCP client config to look like the published npx fibaro-mcp setup but run your local working copy instead:

npm install
npm run build
npm link

Then set your MCP client to run:

  • Command: fibaro-mcp

  • Args: []

To undo:

npm unlink

Security Notes

  • The server accepts self-signed certificates by default (common in Fibaro installations)

  • Credentials are passed via environment variables

  • All communication with the Fibaro Home Center uses authentication

  • Consider using HTTPS for production deployments

Troubleshooting

Connection Issues

  • Verify your Fibaro Home Center is accessible from your network

  • Check that the hostname/IP address is correct

  • Ensure the port is correct (default: 443 for HTTPS)

  • Verify your credentials are correct

Device Control Issues

  • Check that devices are enabled and visible in the Fibaro interface

  • Verify the device supports the action you're trying to perform

  • Check device IDs are correct (use list_devices to get IDs)

Scene Issues

  • Ensure scenes are properly configured in Fibaro

  • Check scene IDs are correct (use list_scenes to get IDs)

  • Verify scenes are not already running when starting them

Contributing

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

License

MIT

Author

Cezar "ikari" Pokorski
GitHub: @ikari-pl
Email: _@ikari.software

Acknowledgments

Built with the Model Context Protocol SDK by Anthropic.

Available Tools

8 tools
fibaro_deviceA

Device management: list/get/control devices. IMPORTANT: Avoid 'op=list' without filters - it returns 1MB+ of data. Instead: use 'op=get' with 'name' parameter for specific devices, or filter with room_id/type/interface. Supports: turn_on, turn_off, set_brightness, set_color, set_temperature, action, get_lua.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: text (default) or json (stringified MCP result)
opYesOperation: list|get|action|turn_on|turn_off|set_brightness|set_color|set_temperature|delete|get_lua
device_idNoDevice ID (required for most ops)
actionNoFibaro action name (for op=action)
argsNoAction arguments (for op=action)
levelNoBrightness % (op=set_brightness)
rNo
gNo
bNo
wNoOptional white channel (0-255)
temperatureNoTarget temperature °C (op=set_temperature)
room_idNoFilter for op=list
section_idNoFilter for op=list
typeNoFilter by Fibaro device type for op=list
base_typeNoFilter by baseType for op=list
nameNoFilter by name (case-insensitive, ignores diacritics) for op=list
interfaceNoFilter by interface/capability for op=list
parent_idNoFilter by parent device ID for op=list
enabledNoFilter by enabled for op=list
visibleNoFilter by visible for op=list
deadNoFilter by dead/unresponsive for op=list
propertiesNoFor op=list: return only selected properties (same as list_devices)

TDQS

A3.9/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 full burden. It warns about large data with unfiltered list, but lacks details on authentication, rate limits, side effects of actions (e.g., delete), or response format. Partial disclosure.

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 three sentences, front-loaded with purpose, then critical usage advice, then supported operations. No wasted words.

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

Completeness3/5

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

With 22 parameters and no output schema, the description covers usage advice but lacks details on return values, error handling, or parameter dependencies. Adequate but not complete for a complex tool.

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

Parameters3/5

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

Schema description coverage is high (86%), so the description adds minimal extra meaning. It lists supported operations, but those are already in the op parameter description. The 'args' parameter remains undocumented. Baseline score.

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

Purpose4/5

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

The description clearly states 'Device management: list/get/control devices' and lists specific operations, making the purpose obvious. However, it does not explicitly differentiate from sibling tools like fibaro_home or fibaro_scene, which is a minor gap.

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 provides explicit guidance: 'Avoid op=list without filters' and recommends using op=get with filters, specifying alternatives and when to use them. This is exemplary usage advice.

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

fibaro_homeB

Home/system management: rooms, sections, users, weather, energy_graph, energy_panel, system_info. For quick stats use 'op=device_stats'. For current power consumption use 'op=energy_panel'. For historical energy/power data use 'op=energy_graph'. Supports: rooms, sections, users, profiles, notifications, alarms, zwave, backups, settings, weather, system_info, energy_graph, energy_panel, plugins.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: text (default) or json (stringified MCP result)
opYesOperation: system_info|weather|energy_graph|energy_panel|rooms|sections|create_room|update_room|delete_room|create_section|update_section|delete_section|users|create_user|update_user|delete_user|profiles|get_active_profile|set_active_profile|notifications|send_notification|alarms|arm_alarm|disarm_alarm|zwave_network|start_zwave_inclusion|stop_zwave_inclusion|start_zwave_exclusion|stop_zwave_exclusion|remove_failed_zwave_node|heal_zwave_network|create_backup|list_backups|restore_backup|get_settings|update_settings|restart_system|get_event_log|geofences|create_geofence|update_geofence|delete_geofence|plugins|install_plugin|uninstall_plugin|restart_plugin|trigger_custom_event|device_stats|energy_graph|energy_panel
room_idNo
section_idNo
nameNo
iconNo
user_idNo
usernameNo
passwordNo
emailNo
typeNo
profile_idNo
partition_idNo
node_idNo
backup_idNo
settingsNo
fromNo
toNo
limitNo
geofence_idNo
latitudeNo
longitudeNo
radiusNo
plugin_idNo
urlNo
event_nameNo
dataNo
notificationNo
titleNo
textNo
usersNo
device_idNo
paramsNo
aggregationNoFor device_stats: aggregation interval (auto selects based on time span)
max_pointsNoFor device_stats: max data points (default: 1000)
metricsNoFor device_stats: metrics to include
propertyNoFor device_stats: legacy property filter
groupingNoFor energy_graph: group by devices or rooms (default: devices)

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It fails to indicate which operations are destructive (e.g., delete_room, restore_backup), required permissions, side effects, or rate limits. The description only lists operations without behavioral context.

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

Conciseness3/5

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

The description is moderately concise but contains repetition (e.g., 'energy_graph, energy_panel' appears twice). It front-loads the general purpose and then lists supported topics, which is reasonable, but could be more tightly structured.

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

Completeness2/5

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

For a tool with 38 parameters and many operations, the description is incomplete. It does not cover all operations, lacks details about return values, error conditions, or prerequisites. It provides only a high-level overview and specific guidance for a few operations.

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

Parameters2/5

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

With only 18% schema description coverage, the description should compensate. It explains a few sub-operations (device_stats, energy_panel, energy_graph) but does not provide semantics for most parameters like room_id, section_id, or the many op enum values. The description adds minimal value beyond the schema.

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

Purpose4/5

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

The description clearly states the tool's purpose as 'Home/system management' and lists major capabilities (rooms, sections, users, weather, etc.). It distinguishes between sub-operations within the tool, though it does not explicitly differentiate from sibling tools like fibaro_device.

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 explicit guidance for certain operations: 'For quick stats use op=device_stats', 'For current power consumption use op=energy_panel', 'For historical energy/power data use op=energy_graph'. This helps an agent choose the appropriate operation within the tool, though it does not cover all operations or exclude sibling tools.

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

fibaro_quick_appB

Quick App intent tool: list/create/update code/update variables/get lua/delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: text (default) or json (stringified MCP result)
opYesOperation: list|create|update_code|update_variables|get_lua|delete
device_idNoQuick App device ID
nameNoQuick App name (op=create)
typeNoQuick App type (op=create)
room_idNoRoom ID (op=create)
codeNoLua code (op=create/update_code)
variablesNoVariables array (op=update_variables)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavioral traits. It only lists operations without mentioning side effects, authentication needs, error handling, or return behavior. For a tool that includes destructive operations like delete, this is insufficient.

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 that lists all operations without any redundant phrases. Every word carries meaning, and it is front-loaded for quick scanning.

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

Completeness2/5

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

Given the tool's complexity (8 parameters, no output schema, multiple operations), the description is incomplete. It lacks information about return values, error conditions, required permissions, and operation-specific behavior. The agent would not have enough context to use the tool correctly in many scenarios.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description does not add any meaning beyond what the input schema already provides for each parameter. While the schema descriptions are complete, the tool description itself contributes no extra parameter context.

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's purpose as a 'Quick App intent tool' and enumerates all supported operations (list, create, update code, update variables, get lua, delete). This provides a specific verb+resource combination and differentiates it from sibling tools like fibaro_device or fibaro_scene.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. Sibling tools are listed but without any comparative context or conditions for selection. No when-not-to-use scenarios are mentioned.

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

fibaro_sceneA

Scene management: list/get/run/stop scenes and Lua code. IMPORTANT: Avoid 'op=list' without filters - use 'op=get' with 'name' or 'id' for specific scenes, or filter by room_id. Supports: run, stop, create, update_lua, get_lua, delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: text (default) or json (stringified MCP result)
opYesOperation: list|get|run|stop|get_lua|create|update_lua|delete
scene_idNo
room_idNoFilter for op=list or target room for op=create/update_lua
nameNoScene name (op=create/update_lua)
luaNoLua code (op=create/update_lua)

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are present, so the description must shoulder the behavioral disclosure burden. It mentions operations like run, stop, create, delete, but does not explain side effects (e.g., running a scene triggers actions, deleting removes it permanently). For a tool with destructive operations, this is a gap.

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 two sentences with no waste. The critical usage advice is front-loaded with 'IMPORTANT'. Every word adds value.

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

Completeness3/5

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

Given 6 parameters and moderate complexity, the description covers the main point but lacks details on return values (no output schema) and behavioral effects of mutations. It is adequate but not fully complete for safe autonomous use.

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 coverage is 83% (5/6 parameters described). The description adds nuance: it clarifies that 'name' can be used with 'op=get' (though schema only lists 'name' for create/update_lua) and that 'room_id' can filter 'list' operations. This goes beyond the schema's own 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 'Scene management: list/get/run/stop scenes and Lua code' and lists all supported operations, leaving no ambiguity about the tool's purpose. It differentiates from sibling tools like fibaro_device or fibaro_home by focusing on scenes.

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 explicit 'IMPORTANT' guidance on when to use 'list' vs 'get', including filtering advice for efficiency. However, it does not compare this tool to sibling tools like resolve_by_name or first_run, so cross-tool guidance is missing.

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

fibaro_variableC

Variable intent tool: list/get/set/create/delete global variables.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: text (default) or json (stringified MCP result)
opYesOperation: list|get|set|create|delete
nameNoVariable name
valueNoVariable value (op=set/create)
variableNoAdvanced create payload (op=create)

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the operations available but fails to mention side effects, idempotency, permissions, or response behavior. For a tool that modifies state (create/delete/update), this is insufficient.

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

Conciseness3/5

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

The description is very short (one sentence) but includes redundant phrasing ('Variable intent tool'). It could be more concise while retaining clarity. Not overly verbose, but not optimally structured.

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

Completeness2/5

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

Given 5 parameters (with nested objects) and no output schema, the description is too brief. It omits details on return values, error handling, and advanced usage (e.g., the 'variable' object payload). The tool's complexity demands a more complete description.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond listing the operations. Baseline 3 is appropriate; the description does not enhance understanding of the schema.

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

Purpose4/5

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

The description clearly states the tool manages global variables with operations list/get/set/create/delete, making the purpose specific and actionable. However, it does not differentiate from sibling tools (e.g., fibaro_device, fibaro_scene), though the resource type is distinct enough to avoid confusion.

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

Usage Guidelines2/5

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

No guidance is provided on when to use or not use this tool relative to alternatives. While sibling tools cover different resources, the description offers no contextual cues or exclusions, leaving the agent to infer usage independently.

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

find_by_nameA

Find devices, rooms, or scenes by name (case-insensitive, ignores diacritics). Returns ranked candidates.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: text (default) or json (stringified MCP result)
queryYesSearch query
kindsNoOptional: Restrict search kinds (devices|rooms|scenes)
limitNoMax results per kind (default: 20)

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries full weight. It discloses case-insensitivity and diacritics handling, which are key behavioral traits. However, it does not mention ranking criteria, pagination, or any side effects, slightly reducing transparency.

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?

One sentence, no wasted words. Information is densed and front-loaded.

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

Completeness3/5

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

Given no output schema, the description should explain return values. 'Returns ranked candidates' is vague; lacks details on candidate structure (e.g., IDs, types). The tool is not complex but missing output context reduces completeness.

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 100% coverage with descriptions, but the description adds value by explaining case-insensitivity and ranked results beyond schema. For 'kinds' and 'limit', schema provides basics; description does not add further, but overall meaningful addition.

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 finds devices, rooms, or scenes by name, with specific behavioral details (case-insensitive, ignores diacritics, returns ranked candidates). It distinguishes from sibling tool 'resolve_by_name' by focusing on search rather than exact resolution.

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?

The description implies when to use (name-based search) but does not explicitly state when not to use or compare with alternatives like 'resolve_by_name' or other search methods. No exclusions or context for choosing among siblings.

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

first_runA

Setup helper. Use this when configuration is missing. Returns step-by-step instructions plus config templates for common MCP clients.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: text (default) or json (stringified MCP result)
clientNoWhich MCP client you are using (Claude Desktop / Cursor / VS Code extension / Other)
osNoYour OS (macOS / Windows / Linux)
repo_pathNoAbsolute path to this repo (used to build the node args pointing to dist/index.js)
fibaro_hostNoFibaro Home Center host (IP or hostname)
fibaro_usernameNoFibaro username
fibaro_httpsNoWhether Fibaro uses HTTPS (default: true)
fibaro_portNoPort (default: 443 for HTTPS, 80 for HTTP)

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavioral traits. It only mentions returns (instructions/templates) but does not state that the tool has no side effects, modifies nothing, or requires no authentication. This is insufficient for a setup tool.

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?

Two sentences, front-loaded with purpose, no redundant information. Every word earns its place.

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?

For a setup helper with 8 parameters, the description is minimal but sufficient to convey output (instructions+templates). It could mention that no state changes occur, but overall it completes the picture given the simple nature of the tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains each parameter. The description adds no extra meaning beyond the overall purpose; for instance, 'format', 'client', 'os' are self-explanatory in schema. Baseline 3 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 'Setup helper' and explains it returns step-by-step instructions and config templates. It is specific about the resource (configuration setup) and distinguishes from sibling tools like fibaro_device which are for device interaction.

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 'Use this when configuration is missing,' providing clear when-to-use guidance. It does not list alternatives or when not to use, but the sibling set makes it obvious this is for initial setup only.

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

resolve_by_nameB

Resolve a single device by name (or multiple devices if the query is plural). Errors on ambiguity for singular queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: text (default) or json (stringified MCP result)
queryYesName query (e.g., "kitchen light")
kindNoOptional: Restrict kind (device|room|scene). Default: device

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavior. It mentions the plurality and error behavior, but is silent on side effects, idempotency, or any additional behavioral traits. Minimal disclosure for a tool with no annotations.

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 a single clear sentence, free of fluff. It conveys core behavior efficiently. Could be slightly longer to cover return value, but overall concise and well-structured.

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

Completeness2/5

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

Given the lack of output schema and the presence of a 'format' parameter, the description should explain what the tool returns and how the format parameter affects it. This is missing, making the tool less complete for an agent to use correctly.

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

Parameters3/5

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

Schema coverage is 100%, so each parameter is documented. The description adds context about the query parameter's plurality behavior but does not elaborate further on parameter semantics. Baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states it resolves a device by name, with specific behavior for singular vs plural queries. It distinguishes itself from siblings like find_by_name by mentioning ambiguity handling, but does not explicitly contrast with similar tools.

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?

The description implies usage context by noting that singular queries error on ambiguity, hinting at when to use carefully. However, it lacks explicit guidance on when to prefer this tool over siblings like find_by_name or the Fibaro-specific tools.

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. 8 tool updatesv3.0.0
    • First observedfibaro_device
    • First observedfibaro_home
    • First observedfibaro_quick_app
    • First observedfibaro_scene
    • First observedfibaro_variable
    • First observedfind_by_name
    • First observedfirst_run
    • First observedresolve_by_name

TDQS

B3.4/5.0
Disambiguation4/5

Most tools target distinct domains (devices, scenes, home, variables, quick apps). However, find_by_name and resolve_by_name overlap significantly in purpose, and fibaro_device also supports name-based retrieval, causing potential confusion.

Naming Consistency3/5

Five tools follow the 'fibaro_*' prefix convention, but three (find_by_name, first_run, resolve_by_name) break this pattern. Naming is readable but inconsistent, mixing noun phrases with verb phrases.

Tool Count5/5

With 8 tools, the set is well-scoped for a home automation system. Each tool covers a major functional area without being too numerous or sparse.

Completeness4/5

The tool set covers all major aspects of Fibaro home automation: device control, scenes, home/system info, variables, and quick apps. Minor gaps like advanced scheduling or bulk operations exist but don't hinder core usage.

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

  • F
    license
    B
    quality
    D
    maintenance
    Enables control of Fibaro Home Center 3 smart home devices through natural language commands. Supports device control, scene management, lighting adjustments, and RGB color changes with automatic HC3 connection.
    13
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Fibaro Home Center 3 smart home systems through natural language commands. Provides comprehensive device control, scene management, QuickApp development, and system monitoring capabilities via the HC3 REST API.
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Home Assistant smart home devices through natural language. Control devices, manage automations, query entity states, and retrieve historical data across your home automation system.
    1
    MIT

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/ikari-software/fibaro-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server