by coding-sailor
Provides a Model Context Protocol server that enables AI assistants to control Fibaro HC3 smart‑home devices, scenes, and rooms through a set of predefined tools.
Enables AI assistants (e.g., Claude Desktop) to interact directly with a Fibaro Home Center 3 system, allowing natural‑language commands to list, query and control rooms, devices, and scenes.
npm install and build the TypeScript code using npm run build (or run it directly via npx)..env file with your Fibaro credentials and optional transport settings (STDIO or HTTP).npm start. For development, npm run dev launches the MCP Inspector at http://localhost:6274/.dist/index.js. For HTTP, send POST requests to http://<host>:<port>/mcp with the x‑api‑key header if configured.list_rooms, get_room.list_devices, get_device, call_device_action (turnOn, turnOff, toggle, setValue, …).list_scenes, get_scene, execute_scene, kill_scene.test_connection to verify HC3 connectivity.Q: Do I need a Fibaro HC3 account to run this server?
A: Yes. You must supply a valid HC3_HOST, HC3_USERNAME and HC3_PASSWORD.
Q: Can I run the server behind a reverse proxy?
A: When using HTTP transport, bind MCP_HTTP_HOST to 0.0.0.0 and expose the port through your proxy.
Q: Is the server secure?
A: The HTTP transport supports an x‑api‑key header. Keep your .env file out of version control and use TLS termination at the proxy if needed.
Q: How do I add custom tools?
A: Extend the tools/ directory and register the new tool in src/tools/index.ts; then rebuild the project.
Q: What Node.js version is required? A: The project targets Node 14+ (LTS).
A Model Context Protocol (MCP) server that provides seamless integration between LLM applications (like Claude Desktop) and Fibaro Home Center 3 smart home systems.
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.
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:
list_rooms - Get all rooms in your HC3 systemget_room - Get detailed information about a specific roomlist_devices - List devices with optional filteringget_device - Get comprehensive device detailscall_device_action - Execute any device action (turnOn, turnOff, toggle, setValue, etc.)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 scenetest_connection - Test connectivity to your HC3 system# Install dependencies
npm install
# Build the TypeScript code
npm run build
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!
npm start
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"
}
}
}
}
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:
http://localhost:3000/mcpPOST /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.
For easy deployment and containerized environments, you can run the MCP server using Docker.
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 start the container
docker-compose up -d
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.
Connect to the Docker container via HTTP:
http://localhost:3000/mcpContent-Type: application/jsonx-api-key: your-api-key-here (highly recommended, should match MCP_HTTP_API_KEY)| 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 |
| 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 |
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
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.
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
This server implements the official Fibaro HC3 REST API:
/api/rooms/api/devices/api/scenesMIT - see LICENSE file for details.
Ready to make your smart home smarter with AI! 🎉
Please log in to share your review and rating for this MCP.
{
"mcpServers": {
"mcp-server-hc3": {
"command": "npx",
"args": [
"-y",
"mcp-server-hc3"
],
"env": {
"HC3_HOST": "<YOUR_HC3_IP_OR_HOST>",
"HC3_USERNAME": "<YOUR_USERNAME>",
"HC3_PASSWORD": "<YOUR_PASSWORD>",
"HC3_PORT": "80",
"SERVER_TIMEOUT": "10000",
"LOG_LEVEL": "info",
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_HTTP_HOST": "localhost",
"MCP_HTTP_PORT": "3000",
"MCP_HTTP_API_KEY": "<YOUR_API_KEY>"
}
}
}
}claude mcp add mcp-server-hc3 npx -y mcp-server-hc3Explore related MCPs that share similar capabilities and solve comparable challenges
by activepieces
A self‑hosted, open‑source platform that provides a no‑code builder for creating, versioning, and running AI‑driven automation workflows. Pieces are TypeScript‑based plugins that become MCP servers, allowing direct consumption by large language models.
by Skyvern-AI
Automates browser‑based workflows by leveraging large language models and computer‑vision techniques, turning natural‑language prompts into fully functional web interactions without writing custom scripts.
by ahujasid
Enables Claude AI to control Blender for prompt‑assisted 3D modeling, scene creation, and manipulation via a socket‑based Model Context Protocol server.
by PipedreamHQ
Connect APIs quickly with a free, hosted integration platform that enables event‑driven automations across 1,000+ services and supports custom code in Node.js, Python, Go, or Bash.
by elie222
Organizes email inbox, drafts replies in the user's tone, tracks follow‑ups, and provides analytics to achieve inbox zero quickly.
by grab
Enables Cursor AI to read and programmatically modify Figma designs through a Model Context Protocol integration.
by CursorTouch
Enables AI agents to control the Windows operating system, performing file navigation, application launching, UI interaction, QA testing, and other automation tasks through a lightweight server.
by ahujasid
Enables Claude AI to control Ableton Live in real time, allowing AI‑driven creation, editing, and playback of tracks, clips, instruments, and effects through a socket‑based server.
by leonardsellem
Provides tools and resources to enable AI assistants to manage and execute n8n workflows via natural language commands.