loading…
Search for a command to run...
loading…
Enables control of Fibaro Home Center devices, scenes, variables, and system administration through natural language.
Enables control of Fibaro Home Center devices, scenes, variables, and system administration through natural language.
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.
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"]
}
npm install
npm run build
You can configure the server in three ways (in priority order):
FIBARO_HOST/FIBARO_USERNAME/FIBARO_PASSWORD env vars (explicit)FIBARO_CONFIG=/absolute/path/to/fibaro.json (single config file).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 bothexport FIBARO_HOST="192.168.1.100"
export FIBARO_USERNAME="admin"
export FIBARO_PASSWORD="your-password"
export FIBARO_PORT="443"
export FIBARO_HTTPS="true"
FIBARO_CONFIGCreate 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"
.envCreate .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
The server communicates over stdio. Most clients need:
npx (recommended) or node (local checkout)[-y, fibaro-mcp] (recommended) or [/absolute/path/to/repo/dist/index.js]FIBARO_CONFIG or FIBARO_HOST/FIBARO_USERNAME/FIBARO_PASSWORDIf 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:
first_runclient, os, repo_path, fibaro_host, fibaro_username, fibaro_https, fibaro_portThe tool returns:
npm install, npm run build)fibaro-mcp.json for FIBARO_CONFIGSecurity: don’t paste passwords into chat logs; don’t commit fibaro-mcp.json or .env.
Add this configuration to your Claude Desktop config file:
~/Library/Application Support/Claude/claude_desktop_config.json
%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"
}
}
}
}
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"
}
}
}
}
Most MCP extensions use the same command/args/env shape. Prefer FIBARO_CONFIG so you don’t copy credentials into multiple places.
By default, you'll see a small "intent" toolset:
fibaro_device - Device control and infofibaro_scene - Scene managementfibaro_variable - Global variablesfibaro_quick_app - Quick App managementfibaro_home - System info, weather, energy, rooms, sections, and morefibaro_template - Scene templates with parameter substitutionfibaro_history - Device state historyfibaro_scene_history - Scene execution historyfibaro_backup - System backup and restore (JSON/YAML)fibaro_repl - Interactive Lua REPL sandboxfibaro_bulk - Bulk device operationsfibaro_analytics - Usage analytics and system healthfibaro_energy_graph - Historical power/energy datafibaro_integration - Webhook server and MQTT bridgefibaro_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.
list_devicesList all devices in your Fibaro system.
room_id, typeget_deviceGet detailed information about a specific device.
device_idcontrol_deviceExecute any action on a device.
device_id, action, args (optional)turn_onTurn on a device (light, switch, etc.).
device_idturn_offTurn off a device.
device_idset_brightnessSet brightness level for dimmable lights.
device_id, level (0-100)set_colorSet RGB color for color-capable lights.
device_id, r, g, b, w (optional)set_temperatureSet target temperature for thermostats.
device_id, temperaturelist_scenesList all scenes in the system.
room_idget_sceneGet detailed information about a specific scene.
scene_idrun_sceneExecute a scene.
scene_idstop_sceneStop a running scene.
scene_idlist_roomsList all rooms in the system.
list_sectionsList all sections in the system.
list_global_variablesList all global variables.
get_global_variableGet the value of a specific global variable.
nameset_global_variableSet the value of a global variable.
name, valueget_system_infoGet Fibaro Home Center system information.
get_weatherGet current weather information.
get_energy_panelGet energy consumption data.
get_scene_luaGet the Lua script code from a scene.
scene_idcreate_sceneCreate a new Lua scene.
name, room_id, lua (optional)update_scene_luaUpdate the Lua code of an existing scene.
scene_id, lua (optional), name (optional), room_id (optional)delete_sceneDelete a scene.
scene_idlist_quick_appsList all Quick Apps (Lua-based applications) in the system.
get_device_luaGet Lua code and Quick App variables from a device.
device_idcreate_quick_appCreate a new Quick App (Lua application).
name, type, code (optional), room_id (optional)update_quick_app_codeUpdate the Lua code of a Quick App.
device_id, codeupdate_quick_app_variablesUpdate Quick App variables.
device_id, variables (array)delete_deviceDelete a device (including Quick Apps).
device_idThe server provides the following resources that can be accessed through the MCP protocol:
fibaro://devices - Current state of all devicesfibaro://rooms - List of all roomsfibaro://scenes - List of all scenesfibaro://system - System informationfibaro://weather - Current weatherHere are some example prompts you can use with Claude:
npm run build
npm run dev
npm start
When using this MCP server with AI assistants like Claude, follow these guidelines for efficient operation:
Don't start by listing all devices, scenes, or rooms. The full lists can be over 1MB and waste context.
Do use targeted queries:
fibaro_device operation=get name="Kitchen Light"fibaro_device operation=list room_id=5fibaro_scene operation=get id=10All tools support name-based lookups - you don't need IDs:
fibaro_device operation=control name="Living Room Lamp" action=turnOnfibaro_scene operation=run name="Good Night"fibaro_variable operation=get name=HomeModeThe default intent toolset (fibaro_device, fibaro_scene, etc.) combines multiple operations into single tools, reducing API calls.
For overview information, use analytics:
fibaro_analytics operation=system_health - Quick health checkfibaro_analytics operation=dashboard - Comprehensive overview# 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"
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:
fibaro-mcp[]To undo:
npm unlink
list_devices to get IDs)list_scenes to get IDs)Contributions are welcome! Please feel free to submit a Pull Request.
MIT
Cezar "ikari" Pokorski
GitHub: @ikari-pl
Email: [email protected]
Built with the Model Context Protocol SDK by Anthropic.
Выполни в терминале:
claude mcp add fibaro-mcp -- npx Безопасность
Низкий рискАвтоматическая эвристика по публичным данным — не гарантия безопасности.