Control Fibaro Smart Home with Natural Language
A community MCP server letting Claude control Fibaro Home Center 3 smart-home devices, rooms, and scenes via natural language.
Maintainer of this project? Claim this page to edit the listing.
1.0.0Add to Favorites
Why it matters
Integrate your Fibaro Home Center 3 with AI assistants to control smart home devices and execute automation scenarios using natural language commands.
Outcomes
What it gets done
Control Fibaro devices (lights, appliances, etc.) via natural language.
Execute and manage Fibaro automation scenes.
Query room and device information from your HC3 system.
Deploy as a standalone service or within a Docker container.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-fibaro-hc3 | bash Capabilities
Tools your agent gets
Get all rooms in your HC3 system
Get detailed information about a specific room
List devices with optional filtering
Get full information about a device
Execute any device action (turnOn, turnOff, toggle, setValue, etc.)
Get all scenarios in your HC3 system
Get detailed information about a specific scenario
Execute a scenario asynchronously or synchronously
Overview
Fibaro HC3 MCP Server
A community-built MCP server exposing 10 tools to control Fibaro Home Center 3 rooms, devices, and scenes via its official REST API, supporting both stdio and HTTP transports plus Docker deployment. Use when a Fibaro HC3 hub is already running and conversational device/scene control through Claude is wanted; the source flags this as an unofficial, as-is community project not affiliated with Fibaro.
What it does
This MCP server integrates LLM applications like Claude Desktop directly with Fibaro Home Center 3 smart home systems, letting natural-language requests such as "turn on all lights in the living room," "toggle main kitchen lamp," "execute my goodnight scene," or "set bedroom lamp to 10%" translate into real device and scene actions. It exposes 10 tools across four groups. Room management: list_rooms gets all rooms in the HC3 system, get_room gets detailed information about a specific room. Device control: list_devices lists devices with optional filtering, get_device gets comprehensive device details, and call_device_action executes any device action such as turnOn, turnOff, toggle, or setValue. Scene management: list_scenes gets all scenes, get_scene gets details of a specific scene, execute_scene runs a scene either asynchronously or synchronously, and kill_scene stops a running scene. A system tool, test_connection, checks connectivity to the HC3 system.
The server implements the official Fibaro HC3 REST API directly, covering the Rooms (/api/rooms), Devices (/api/devices), and Scenes (/api/scenes) endpoints. It supports two MCP transports: stdio (the default, used for local Claude Desktop integration) and HTTP, which exposes POST /mcp for client requests, GET /mcp for server-to-client notifications via SSE, and DELETE /mcp for session termination, with an x-api-key header recommended for authenticating HTTP requests.
When to use - and when NOT to
Use this when a household or installation already runs a Fibaro HC3 hub and the goal is controlling lights, devices, and automation scenes through Claude in natural language instead of the Fibaro app. The source is explicit that this is a community-developed solution, not affiliated with, endorsed by, or sponsored by Fibaro or Fibar Group S.A., and is provided as-is without warranties - the author takes no responsibility for damage or issues from using it, so it should be evaluated at the user's own risk rather than treated as an officially supported integration.
Capabilities
Beyond the 10 tools, development support includes an MCP Inspector reachable via npm run dev, providing an interactive web interface at http://localhost:6274/ to test tools directly, plus build/watch/start scripts. Docker deployment is supported via docker-compose up -d, configured through the same environment variables used for a local install, with HTTP transport bound to 0.0.0.0 for container access.
How to install
Installation builds the TypeScript source and runs it directly:
npm install
npm run build
Configuration is environment-variable driven via a .env file: HC3_HOST, HC3_USERNAME, and HC3_PASSWORD are required, with optional HC3_PORT (default 80), SERVER_TIMEOUT, LOG_LEVEL, and MCP transport settings (MCP_TRANSPORT_TYPE of stdio or http, MCP_HTTP_HOST, MCP_HTTP_PORT, MCP_HTTP_API_KEY) - the source warns never to commit this .env file to version control. For Claude Desktop over stdio, the server is registered in claude_desktop_config.json running the built dist/index.js with node, passing HC3 credentials through the env block.
Who it's for
Smart-home enthusiasts running a Fibaro HC3 hub who want to control rooms, devices, and scenes conversationally through Claude, and are comfortable relying on an unofficial, community-maintained integration rather than a vendor-supported one.
Source README
MCP Server for Fibaro HC3
A Model Context Protocol (MCP) server that provides seamless integration between LLM applications (like Claude Desktop) and Fibaro Home Center 3 smart home systems.
⚠️ Disclaimer
This is a community-developed solution.
This project is not affiliated with, endorsed by, or sponsored by Fibaro or Fibar Group S.A.
"Fibaro" and all related names and trademarks are the property of their respective owners.
This software is provided as-is, without any warranties or guarantees.
Use at your own risk. The author takes no responsibility for any damage or issues caused by using this code.
🏠 What is this?
This MCP server enables AI assistants to directly control your Fibaro HC3 smart home devices and automation scenes. You can ask natural language questions like:
- "Turn on all lights in the living room"
- "Toggle main kitchen lamp"
- "Execute my goodnight scene"
- "Set bedroom lamp to 10%"
✨ Features
🛠️ Tools (Actions)
Room Management
list_rooms- Get all rooms in your HC3 systemget_room- Get detailed information about a specific room
Device Control
list_devices- List devices with optional filteringget_device- Get comprehensive device detailscall_device_action- Execute any device action (turnOn, turnOff, toggle, setValue, etc.)
Scene Management
list_scenes- Get all scenes in your HC3 systemget_scene- Get detailed information about a specific sceneexecute_scene- Execute a scene (async or sync)kill_scene- Stop a running scene
System Tools
test_connection- Test connectivity to your HC3 system
🚀 Quick Start
1. Installation
# Install dependencies
npm install
# Build the TypeScript code
npm run build
2. Configuration
Create a .env file in the project root:
# Required
HC3_HOST=192.168.1.100 # Your HC3 IP address
HC3_USERNAME=admin # Your HC3 username
HC3_PASSWORD=your_password # Your HC3 password
# Optional
HC3_PORT=80 # HC3 port (default: 80)
SERVER_TIMEOUT=10000 # Request timeout in ms (default: 10000)
LOG_LEVEL=info # Logging level (default: info)
# MCP Transport Configuration
MCP_TRANSPORT_TYPE=stdio # Transport type: 'stdio' or 'http' (default: stdio)
MCP_HTTP_HOST=localhost # HTTP server host (default: localhost)
MCP_HTTP_PORT=3000 # HTTP server port (default: 3000)
MCP_HTTP_API_KEY=your-api-key-here # API key for HTTP authentication (used only for 'http' transport type)
⚠️ Important: Never commit your .env file to version control!
3. Running
npm start
4. Integration with MCP Clients
Claude Desktop (STDIO Transport)
Add this to your Claude Desktop MCP configuration file:
On macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"mcp-server-hc3": {
"command": "node",
"args": ["/path/to/your/mcp-server-hc3/dist/index.js"],
"env": {
"HC3_HOST": "192.168.1.100",
"HC3_USERNAME": "admin",
"HC3_PASSWORD": "your_password",
"HC3_PORT": "80",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
HTTP-based MCP Clients
For clients that support HTTP transport, configure the server with HTTP transport:
# Configure in .env file:
MCP_TRANSPORT_TYPE=http
MCP_HTTP_HOST=localhost
MCP_HTTP_PORT=3000
MCP_HTTP_API_KEY=your-api-key-here
# Start server
npm start
The server will be available at:
- Endpoint:
http://localhost:3000/mcp - Methods:
POST /mcp- Client-to-server requestsGET /mcp- Server-to-client notifications (SSE)DELETE /mcp- Session termination
🔐 Authentication: When using HTTP transport, it's highly recommended to include the x-api-key header in your requests. The value should match the MCP_HTTP_API_KEY from your configuration.
🐳 Docker Deployment
For easy deployment and containerized environments, you can run the MCP server using Docker.
Quick Start with Docker
Environment File Setup
Example .env configuration for Docker:
# MCP Server Configuration
MCP_TRANSPORT_TYPE=http
MCP_HTTP_HOST=0.0.0.0
MCP_HTTP_PORT=3000
MCP_HTTP_API_KEY=your-api-key-here
# Fibaro HC3 Configuration (Required)
HC3_HOST=192.168.1.100
HC3_USERNAME=admin
HC3_PASSWORD=your_secure_password
HC3_PORT=80
# Server Configuration
SERVER_TIMEOUT=10000
LOG_LEVEL=info
Build and Run with Docker Compose
# Build and start the container
docker-compose up -d
Integration with MCP Clients (Docker)
Claude Desktop with Docker
Configure Claude Desktop to connect to the Docker container:
{
"mcpServers": {
"mcp-server-hc3": {
"command": "curl",
"args": ["-X", "POST", "-H", "Content-Type: application/json", "-H", "x-api-key: your-api-key-here", "http://localhost:3000/mcp"]
}
}
}
🔐 Authentication: Include the x-api-key header with the value matching your MCP_HTTP_API_KEY configuration for secure access.
Custom MCP Client Integration
Connect to the Docker container via HTTP:
- Endpoint:
http://localhost:3000/mcp - Transport: HTTP-based MCP protocol
- Headers:
Content-Type: application/jsonx-api-key: your-api-key-here(highly recommended, should matchMCP_HTTP_API_KEY)
🛠️ Development
Environment Variables
Fibaro HC3 Configuration
| Variable | Required | Default | Description |
|---|---|---|---|
HC3_HOST |
✅ | - | HC3 IP address or hostname |
HC3_USERNAME |
✅ | - | HC3 username |
HC3_PASSWORD |
✅ | - | HC3 password |
HC3_PORT |
❌ | 80 |
HC3 HTTP port |
MCP Transport Configuration
| Variable | Required | Default | Description |
|---|---|---|---|
MCP_TRANSPORT_TYPE |
❌ | stdio |
Transport type: 'stdio' or 'http' |
MCP_HTTP_HOST |
❌ | localhost |
HTTP server bind address |
MCP_HTTP_PORT |
❌ | 3000 |
HTTP server port |
MCP_HTTP_API_KEY |
❌ | - | API key for HTTP authentication |
Available Scripts
npm run build # Build TypeScript code
npm run watch # Build and watch for changes
npm start # Start the server
npm run dev # Development mode with MCP Inspector
MCP Inspector
The npm run dev command includes the MCP Inspector for development and debugging. This provides an interactive web interface at http://localhost:6274/ to test MCP tools.
Project Structure
src/
├── index.ts # Main entry point
├── config/
│ └── index.ts # Configuration management
├── mcp/
│ ├── server.ts # MCP server setup and transport
│ ├── http.ts # HTTP transport implementation
│ └── types.ts # MCP transport types
├── fibaro/
│ ├── client.ts # Fibaro HC3 API client
│ ├── room.api.ts # Room API implementation
│ ├── device.api.ts # Device API implementation
│ ├── scene.api.ts # Scene API implementation
│ └── types.ts # Fibaro API types
└── tools/
├── index.ts # Main tools setup
├── common.ts # Shared utilities
├── room.tools.ts # Room management tools
├── device.tools.ts # Device control tools
├── scene.tools.ts # Scene management tools
└── system.tools.ts # System tools
🏗️ API Reference
Fibaro HC3 REST API
This server implements the official Fibaro HC3 REST API:
- Rooms API:
/api/rooms - Devices API:
/api/devices - Scenes API:
/api/scenes
📝 License
MIT - see LICENSE file for details.
Ready to make your smart home smarter with AI! 🎉
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.