Skip to main content
Glama
kaeljune

Fibaro HC3 MCP Server

by kaeljune

Fibaro HC3 MCP Server

⚠️ DEMO VERSION DISCLAIMER
This is a demonstration/educational version of the Fibaro HC3 MCP Server. It is NOT a commercial product and is provided as-is for learning and testing purposes only. Use at your own risk.

An MCP (Model Context Protocol) Server for controlling Fibaro Home Center 3 through Claude AI.

Features

  • Auto-connect to Fibaro HC3 on startup (one-time configuration)

  • Retrieve information about devices, scenes, and rooms

  • Control devices (turn on/off, set values, brightness, colors)

  • Run and stop scenes

  • Full Claude AI integration for natural language control

  • Support for RGB lights with color name mapping

  • HTTP/HTTPS protocol support

Related MCP server: Homey MCP Server

Installation

One-command installation - no need to clone the repository:

curl -sSL https://raw.githubusercontent.com/kaeljune/fibaro-mcp-server/main/quick-install.sh | bash

This script will:

  • ✅ Check dependencies (git, node.js, npm)

  • ✅ Choose your AI client (Claude Desktop or Cursor)

  • ✅ Automatically clone the repository

  • ✅ Ask for Fibaro HC3 connection details

  • ✅ Test the connection

  • ✅ Install dependencies and build the project

  • ✅ Configure your AI client automatically

  • ✅ Ready to use!

📋 Manual Installation

If you prefer to install manually:

  1. Clone this repository:

git clone https://github.com/kaeljune/fibaro-mcp-server.git
cd fibaro-mcp-server
  1. Install dependencies:

npm install
  1. Build the project:

npm run build
  1. Run the configuration script:

./install-claude.sh

Usage

After installation, no manual connection required. The MCP server will automatically connect to Fibaro HC3 when your AI client (Claude Desktop or Cursor) starts.

Supported AI Clients

  • Claude Desktop - Full MCP support

  • Cursor - MCP integration for AI-powered coding

1. View Device List

Show all devices

2. Control Lights

Turn off light number 3
Turn on living room light
Set light number 5 brightness to 50%

3. Control RGB Lights

Change RGB light number 10 to red
Set RGB light number 10 to purple (255,0,255,0)

4. Run Scenes

Run scene "Good Night"

Available Commands

Information

  • fibaro_get_devices: Get list of all devices

  • fibaro_get_device: Get detailed device information by ID

  • fibaro_get_scenes: Get list of all scenes

  • fibaro_get_scene: Get detailed scene information by ID

  • fibaro_get_rooms: Get list of all rooms

Control

  • fibaro_turn_on_device: Turn on device by ID

  • fibaro_turn_off_device: Turn off device by ID

  • fibaro_set_device_value: Set property value for device

  • fibaro_set_brightness: Set brightness for lights/dimmers (0-100%)

  • fibaro_set_color: Set RGB color for RGB lights (R,G,B,W: 0-255)

  • fibaro_control_rgb_light: Complete RGB light control (on/off + color + brightness)

  • fibaro_run_scene: Run scene by ID

  • fibaro_stop_scene: Stop scene by ID

Integration Examples

After configuration, you can talk to Claude like:

  • "Turn off all lights in the house"

  • "Turn on bedroom light"

  • "Run good morning scene"

  • "Show status of all sensors"

  • "Set living room light brightness to 50%"

  • "Change living room RGB light to green"

  • "Set RGB light number 5 to light purple"

Claude will automatically:

  1. Connect to Fibaro HC3 (if not already connected)

  2. Find matching devices/scenes

  3. Execute control commands

  4. Report results

Security

  • This server only connects locally to Fibaro HC3

  • Login credentials are stored securely in MCP configuration

  • Supports both HTTP and HTTPS with self-signed certificate acceptance

  • No sensitive information is stored in logs

Troubleshooting

Cannot connect to Fibaro HC3

  • Re-run the installation script: ./install-claude.sh

  • Check IP address and port (default HTTP: 80, HTTPS: 443)

  • Ensure username/password are correct

  • Check firewall and network connectivity

  • Try accessing HC3 web interface from browser

MCP Server not working

  • Check the path in Claude configuration

  • Ensure project has been built (npm run build)

  • Restart Claude Desktop after configuration changes

  • Check Claude Desktop logs for detailed error messages

Changing Fibaro HC3 connection information

To change IP, username, or password:

  1. Re-run the installation script: ./install-claude.sh

  2. Enter new information

  3. Restart Claude Desktop

License

This is a demo/educational project. Not for commercial use.

Available Tools

13 tools
fibaro_control_rgb_lightA

Complete control for RGB lights: turn on/off, set color, and brightness in one command. Use this when user wants to control multiple aspects of an RGB light at once (e.g., "turn on light 5 red color at 50% brightness").

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDevice ID
actionYesTurn light on or off
color_nameNoColor name (e.g., "red", "green", "blue", "xanh lá", "tím")
brightnessNoBrightness level (0-100), optional

TDQS

A3.9/5.0
Behavior2/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 mentions the tool's capabilities but lacks behavioral details like required permissions, error handling, rate limits, or what happens if optional parameters are omitted. The description doesn't contradict annotations, but it's insufficient for a mutation tool with no annotation coverage.

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 and front-loaded, with two sentences that efficiently convey purpose and usage guidelines without any wasted words. Every sentence adds clear value to the tool's understanding.

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 the tool's complexity (mutation with 4 parameters) and lack of annotations or output schema, the description is incomplete. It covers purpose and usage well but misses critical behavioral context like side effects or response format, leaving gaps for an AI agent to operate safely.

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 fully documents all parameters. The description adds minimal value by implying that parameters can be combined in one command but doesn't provide additional syntax or format details beyond what the schema already specifies.

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 with specific verbs ('turn on/off, set color, and brightness') and resource ('RGB lights'), distinguishing it from siblings like fibaro_set_brightness or fibaro_set_color by emphasizing multi-aspect control in one command.

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?

It explicitly states when to use this tool ('when user wants to control multiple aspects of an RGB light at once') and provides an example, effectively distinguishing it from single-function siblings without mentioning when not to use it, which is sufficient given the clear context.

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

fibaro_get_deviceC

Get specific device by ID from Fibaro HC3

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDevice ID

TDQS

C2.9/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 states it's a read operation ('Get'), but doesn't mention authentication requirements, rate limits, error conditions, or what the return format looks like. For a tool with no annotation coverage, this leaves significant 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 a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information.

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 read operation with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what information about the device is returned, how to interpret the response, or any behavioral constraints. The context signals show this is a simple tool, but the description doesn't adequately compensate for the lack of structured metadata.

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 the single 'id' parameter as a number representing 'Device ID'. The description adds no additional parameter semantics beyond what's in the schema, maintaining the baseline score of 3 for adequate but unenhanced parameter documentation.

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 action ('Get') and resource ('specific device by ID from Fibaro HC3'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from its sibling 'fibaro_get_devices' which presumably retrieves multiple devices, though the 'by ID' specification provides some implicit distinction.

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 explicit guidance is provided about when to use this tool versus alternatives. While 'by ID' suggests it's for retrieving a single known device, there's no mention of when to choose this over 'fibaro_get_devices' or other retrieval tools, nor any prerequisites or constraints for usage.

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

fibaro_get_devicesB

Get all devices from Fibaro HC3

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the basic action. It lacks details on behavior such as pagination, rate limits, error handling, or what 'all devices' includes (e.g., status, metadata). This leaves significant gaps for an agent to understand operational traits.

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 a single, efficient sentence with no wasted words. It front-loads the key action and resource, making it easy to parse quickly.

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 no annotations, no output schema, and multiple sibling tools, the description is incomplete. It doesn't explain return values (e.g., device list format), error cases, or how it fits into the broader toolset, making it inadequate for full contextual understanding.

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 0 parameters with 100% schema coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here, but it doesn't compensate for any gaps since there are none.

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 action ('Get all devices') and resource ('from Fibaro HC3'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'fibaro_get_device' (singular) or 'fibaro_get_rooms', leaving room for confusion about scope.

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 this tool versus alternatives. For example, it doesn't specify if this should be used for bulk retrieval versus 'fibaro_get_device' for single devices, or mention prerequisites like authentication or system state.

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

fibaro_get_roomsB

Get all rooms from Fibaro HC3

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 carries full burden for behavioral disclosure. It states 'Get all rooms' but doesn't clarify if this returns a list, object, or paginated results; whether it's a read-only operation; or if there are any rate limits or authentication requirements. The description is too minimal to provide adequate 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly. There's no wasted verbiage or redundant information.

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 annotations and output schema, the description is incomplete for a tool that likely returns structured data (e.g., a list of rooms). It doesn't explain the return format, potential errors, or how the data might be used in context with sibling tools. For a data retrieval tool, this leaves significant gaps in understanding its full behavior.

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 parameters and 100% schema description coverage, the schema already fully documents the lack of inputs. The description doesn't need to add parameter details, and it correctly implies no parameters are required by not mentioning any. This meets the baseline expectation for a parameterless tool.

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 action ('Get all rooms') and target resource ('from Fibaro HC3'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'fibaro_get_devices' or 'fibaro_get_scenes' that also retrieve collections, missing an opportunity to clarify what distinguishes this specific retrieval operation.

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?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'fibaro_get_devices' and 'fibaro_get_scenes' that also fetch data, there's no indication of whether this should be used for room-specific queries, as part of a broader setup, or in what context room information is needed.

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

fibaro_get_sceneC

Get specific scene by ID from Fibaro HC3

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesScene ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a 'Get' operation, implying read-only, but doesn't clarify if it requires authentication, has rate limits, returns error handling details, or what the output format is. This leaves significant gaps for a tool with no annotation coverage.

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 a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it appropriately sized and easy to parse.

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 (a read operation with no output schema and no annotations), the description is incomplete. It doesn't explain what information is returned (e.g., scene details, status), error conditions, or behavioral traits like permissions needed. This leaves the agent with insufficient context for reliable use.

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?

The input schema has 100% description coverage, with the 'id' parameter clearly documented as 'Scene ID'. The description adds no additional meaning beyond this, such as explaining ID formats or constraints. Baseline 3 is appropriate since the schema does the heavy lifting.

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 action ('Get specific scene') and resource ('from Fibaro HC3'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'fibaro_get_scenes' (which likely lists scenes) or 'fibaro_get_device' (which gets devices), so it misses full sibling distinction.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'fibaro_get_scene' over 'fibaro_get_scenes' or other sibling tools, nor does it specify prerequisites like needing a valid scene ID.

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

fibaro_get_scenesB

Get all scenes from Fibaro HC3

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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 states this is a retrieval operation ('Get'), but doesn't describe what 'all scenes' means (e.g., pagination, filtering, format), whether authentication is required, or any rate limits. The description provides minimal behavioral context beyond the basic operation.

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 a single, efficient sentence with no wasted words. It's appropriately sized for a simple retrieval tool and gets straight to the point without unnecessary elaboration.

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?

For a zero-parameter retrieval tool with no output schema, the description provides the basic operation but lacks important context. It doesn't explain what a 'scene' is in this system, what information is returned, or how this differs from the singular 'fibaro_get_scene' tool. The description is minimally adequate but leaves gaps in understanding the tool's full context.

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, and schema description coverage is 100% (empty schema). The description appropriately doesn't discuss parameters since there are none, and doesn't need to compensate for any schema gaps. This meets the baseline expectation for parameterless tools.

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 verb ('Get') and resource ('all scenes from Fibaro HC3'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'fibaro_get_scene' (singular) or explain how this differs from other retrieval tools in the set.

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 this tool versus alternatives like 'fibaro_get_scene' (singular scene retrieval) or 'fibaro_get_devices' (different resource type). The description only states what it does, not when it's appropriate.

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

fibaro_run_sceneC

Run/start a scene

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesScene ID to run

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but does not explain what 'running a scene' does (e.g., triggers automation, affects devices), whether it requires specific permissions, or what the expected outcome or response might be. This leaves significant gaps in understanding the tool's behavior.

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 'Run/start a scene' is extremely concise—just three words—with zero wasted language. It is front-loaded and efficiently conveys the core action, though this brevity contributes to gaps in other dimensions.

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 that performs an action (running a scene) with no annotations and no output schema, the description is insufficient. It lacks details on behavior, outcomes, error conditions, or how it interacts with sibling tools. Given the complexity implied by the action and the absence of structured data, more context is needed for completeness.

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?

The input schema has 100% description coverage, with the single parameter 'id' documented as 'Scene ID to run'. The description does not add any additional meaning or context beyond this, such as how to obtain valid scene IDs or format requirements. Given the high schema coverage, a baseline score of 3 is appropriate.

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

Purpose3/5

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

The description 'Run/start a scene' clearly states the action (run/start) and target resource (a scene), which is adequate. However, it does not differentiate this tool from its sibling 'fibaro_stop_scene' or explain what 'running a scene' entails in this context, making it somewhat vague.

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?

The description provides no guidance on when to use this tool versus alternatives like 'fibaro_stop_scene' for stopping scenes or other device-specific tools (e.g., 'fibaro_turn_on_device'). There is no mention of prerequisites, such as needing a valid scene ID, or contextual cues for invocation.

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

fibaro_set_brightnessA

Set brightness or dimmer level for lights and dimmable devices. Use this when user mentions brightness, dimming, intensity, or percentage levels (0-100%). Keywords: bright, dim, brightness, level, percent, %.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDevice ID
brightnessYesBrightness level (0-100)

TDQS

A3.5/5.0
Behavior2/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 of behavioral disclosure. It describes the action ('Set brightness or dimmer level') but lacks details on behavioral traits such as required permissions, whether the change is immediate or reversible, error handling, or rate limits. For a mutation tool with zero annotation coverage, this is a significant gap, though it does specify the percentage range (0-100%).

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 appropriately sized and front-loaded: the first sentence states the purpose, and the second provides usage guidelines and keywords. Every sentence earns its place with no wasted words, making it efficient and easy to parse.

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 the tool's complexity (a mutation tool with 2 parameters), no annotations, and no output schema, the description is moderately complete. It covers purpose and usage but lacks behavioral details like error handling or response format. It's adequate for basic use but has clear gaps for an AI agent to fully understand the tool's behavior and outcomes.

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?

The input schema has 100% description coverage, with clear documentation for both parameters ('id' and 'brightness'), including the brightness range (0-100). The description adds minimal value beyond the schema by mentioning 'percentage levels (0-100%)' and keywords, but it doesn't provide additional semantic context (e.g., how 'id' relates to devices). Baseline 3 is appropriate when the schema does the heavy lifting.

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: 'Set brightness or dimmer level for lights and dimmable devices.' It specifies the verb ('Set') and resource ('brightness or dimmer level for lights and dimmable devices'), making it easy to understand. However, it doesn't explicitly differentiate from siblings like 'fibaro_set_color' or 'fibaro_set_device_value,' which might also handle brightness in some contexts, so it doesn't reach the highest score.

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 clear context for when to use this tool: 'when user mentions brightness, dimming, intensity, or percentage levels (0-100%).' It includes keywords like 'bright, dim, brightness, level, percent, %' to guide usage. However, it doesn't explicitly state when not to use it or name alternatives (e.g., 'fibaro_set_color' for color changes), so it falls short of a perfect score.

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

fibaro_set_colorB

Set RGB color for RGB lights and color-changing devices. Use this when user mentions colors, color names, or wants to change light color. Keywords: color, red, green, blue, yellow, purple, pink, orange, cyan, magenta, white, RGB, màu.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDevice ID
redYesRed color value (0-255)
greenYesGreen color value (0-255)
blueYesBlue color value (0-255)
whiteNoWhite color value (0-255), optional

TDQS

B3.4/5.0
Behavior2/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 of behavioral disclosure. While it states the tool sets colors, it doesn't mention any behavioral traits: whether this requires specific permissions, if it's a destructive/write operation (implied but not stated), rate limits, error conditions, or what happens to devices not supporting RGB. For a mutation tool with zero annotation coverage, this is a significant gap in 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 appropriately sized and front-loaded: the first sentence states the core purpose, followed by usage guidance and keywords. The keyword list is somewhat redundant with the usage context but serves as a quick reference. Overall, it's efficient with minimal waste, though the keyword list could be integrated more seamlessly.

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 the tool's complexity (a write operation with 5 parameters) and the absence of annotations and output schema, the description is moderately complete. It covers purpose and usage but lacks behavioral details (e.g., side effects, permissions) and output information. For a mutation tool without annotations, it should do more to compensate, but the clear purpose and usage guidelines provide a basic foundation.

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%, with all parameters well-documented in the schema (e.g., 'Red color value (0-255)'). The description doesn't add any parameter-specific information beyond what's in the schema. According to the rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.

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: 'Set RGB color for RGB lights and color-changing devices.' This specifies the verb ('Set') and resource ('RGB color for RGB lights and color-changing devices'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'fibaro_control_rgb_light' or 'fibaro_set_brightness', which likely have overlapping functionality.

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 clear usage context: 'Use this when user mentions colors, color names, or wants to change light color.' This gives practical guidance on when to invoke the tool. It also includes a keyword list for pattern matching. However, it doesn't specify when NOT to use this tool or mention alternatives among the siblings (e.g., when to use 'fibaro_set_brightness' instead).

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

fibaro_set_device_valueA

Set a specific property value for a device. Use this ONLY for advanced properties like temperature setpoints, modes, or custom device properties. Do NOT use for brightness (use fibaro_set_brightness) or colors (use fibaro_set_color).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDevice ID
propertyYesProperty name to set (e.g., "targetTemperature", "mode", "state")
valueYesValue to set

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 implies a mutation operation ('Set') but doesn't disclose behavioral traits like required permissions, error handling, or response format. The description adds some context about property types but lacks details on side effects or system behavior.

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 front-loaded with the purpose and usage guidelines in two concise sentences, with zero wasted words. Every sentence earns its place by providing critical differentiation from sibling tools.

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 complexity (mutation tool with no annotations and no output schema), the description is reasonably complete for its purpose. It clearly defines the tool's scope and exclusions, though it could benefit from more behavioral details like error conditions or response expectations to be fully comprehensive.

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 three parameters (id, property, value). The description adds minimal semantic context by mentioning examples like 'temperature setpoints, modes', which loosely relates to the 'property' parameter but doesn't provide additional syntax or format details 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 specific action ('Set a specific property value') and resource ('for a device'), distinguishing it from siblings like fibaro_set_brightness and fibaro_set_color by specifying it's for advanced properties like temperature setpoints, modes, or custom device properties.

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 usage guidelines: 'Use this ONLY for advanced properties like temperature setpoints, modes, or custom device properties' and 'Do NOT use for brightness (use fibaro_set_brightness) or colors (use fibaro_set_color)', clearly indicating when to use this tool versus alternatives.

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

fibaro_stop_sceneC

Stop a running scene

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesScene ID to stop

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Stop') but lacks details on permissions required, whether the operation is reversible, error conditions (e.g., if the scene isn't running), or response behavior. This is a significant gap for a mutation 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?

The description is a single, efficient sentence with zero waste. It is front-loaded with the core action and target, making it highly concise and well-structured for quick understanding.

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 (a mutation operation to stop scenes), lack of annotations, and no output schema, the description is incomplete. It fails to address behavioral aspects like error handling, permissions, or what happens after stopping a scene, leaving gaps that could hinder effective agent use.

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?

The schema description coverage is 100%, with the single parameter 'id' documented as 'Scene ID to stop'. The description adds no additional meaning beyond this, such as format examples or where to obtain valid IDs. The baseline score of 3 is appropriate since the schema handles the parameter documentation adequately.

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 action ('Stop') and target ('a running scene'), providing a specific verb+resource combination. It distinguishes itself from siblings like 'fibaro_run_scene' by indicating the opposite action, though it doesn't explicitly mention sibling differentiation in the text.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't specify prerequisites (e.g., that a scene must be running), mention related tools like 'fibaro_get_scene' for checking status, or indicate any exclusions or context for usage.

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

fibaro_turn_off_deviceC

Turn off a device (like lights, switches)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDevice ID to turn off

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits such as required permissions, whether the change is immediate/reversible, error conditions (e.g., invalid ID), or side effects (e.g., device state updates).

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 a single, efficient sentence with zero waste. It's front-loaded with the core action and includes helpful examples without unnecessary elaboration.

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 mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on return values, error handling, and behavioral context needed for reliable agent use, given the tool's potential impact.

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 the 'id' parameter fully. The description adds no additional meaning about the parameter (e.g., how to find device IDs, format constraints), resulting in the baseline score for high schema coverage.

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 action ('Turn off') and target resource ('a device'), with examples ('like lights, switches') that help clarify scope. However, it doesn't explicitly differentiate from sibling tools like 'fibaro_turn_on_device' or 'fibaro_set_device_value' beyond the obvious opposite action.

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 this tool versus alternatives. It doesn't mention prerequisites (e.g., device must be on), exclusions (e.g., not for scenes), or comparisons to siblings like 'fibaro_set_device_value' for more granular control.

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

fibaro_turn_on_deviceC

Turn on a device (like lights, switches)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDevice ID to turn on

TDQS

C2.9/5.0
Behavior2/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 states the action ('Turn on') but lacks critical behavioral details: whether this requires authentication, if it's idempotent, what happens on failure, or any rate limits. For a mutation tool with zero annotation coverage, this is a significant gap in safety and operational context.

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 a single, efficient sentence with zero waste. It's front-loaded with the core action and includes helpful examples without unnecessary elaboration, making it easy to parse quickly.

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 this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on permissions, error handling, return values, or how it differs from sibling tools. The context signals indicate minimal complexity, but the description doesn't compensate for the missing structured data.

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%, with the single parameter 'id' documented as 'Device ID to turn on'. The description adds no additional parameter semantics beyond this, such as format examples or where to find device IDs. Baseline 3 is appropriate since the schema adequately covers the parameter.

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 action ('Turn on') and target resource ('a device'), with examples ('like lights, switches') that help clarify scope. It distinguishes from obvious opposites like 'fibaro_turn_off_device', but doesn't explicitly differentiate from similar siblings like 'fibaro_set_device_value' or 'fibaro_set_brightness' for brightness control.

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 this tool versus alternatives. The description doesn't mention prerequisites (e.g., device must be off), exclusions (e.g., not for RGB lights), or comparisons to siblings like 'fibaro_set_brightness' for dimmable devices or 'fibaro_set_device_value' for generic control.

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

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes, such as fibaro_get_devices for retrieving all devices and fibaro_run_scene for starting scenes. However, there is some overlap between fibaro_control_rgb_light and the more specific fibaro_set_brightness and fibaro_set_color tools, which could cause confusion when controlling RGB lights, as the general tool combines functions of the specialized ones.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with a 'fibaro_' prefix and a clear verb_noun structure, such as fibaro_get_device, fibaro_set_brightness, and fibaro_turn_on_device. This uniformity makes the tool set predictable and easy to navigate.

Tool Count5/5

With 13 tools, the count is well-scoped for a home automation server covering devices, scenes, and control actions. Each tool serves a specific function, such as retrieval, control, or scene management, without redundancy, making the set comprehensive yet manageable.

Completeness4/5

The tool set provides good coverage for the Fibaro HC3 domain, including CRUD-like operations for devices and scenes (get, turn on/off, set properties) and scene control (run, stop). A minor gap is the lack of tools for creating or deleting devices or scenes, but agents can likely work around this with existing tools for most common tasks.

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
    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
  • 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.
  • 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/kaeljune/fibaro-mcp-server'

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