Bridging Loxone home automation with the Model Context Protocol ecosystem through high-performance Rust implementation
A Model Context Protocol (MCP) server that enables programmatic control of Loxone home automation systems. This implementation provides comprehensive device control through 17 specialized tools and 25+ resources, supporting both stdio (for Claude Desktop) and HTTP transports.
git clone https://github.com/avrabe/mcp-loxone
cd mcp-loxone
cargo build --release
# Store credentials manually cargo run --bin loxone-mcp-auth store \ --name "Office" \ --host 192.168.1.100 \ --username admin \ --password secure123 ```
# Test connections cargo run --bin loxone-mcp-auth test ```
Basic Setup:
bash
cargo run --bin loxone-mcp-setup
Environment variables:
bash
export LOXONE_HOST="http://192.168.1.100"
export LOXONE_USER="your-username"
export LOXONE_PASS="your-password"
Production with Infisical (optional):
bash
export INFISICAL_PROJECT_ID="your-project-id"
export INFISICAL_CLIENT_ID="your-client-id"
export INFISICAL_CLIENT_SECRET="your-client-secret"
export INFISICAL_ENVIRONMENT="production"
If you're currently using environment variables, see the Credential Migration Guide for step-by-step instructions to migrate to the new Credential ID system.
{
"mcpServers": {
"loxone": {
"command": "/path/to/loxone-mcp-server",
"args": ["stdio", "--credential-id", "abc123def-456-789"]
}
}
}
{
"mcpServers": {
"loxone": {
"command": "/path/to/loxone-mcp-server",
"args": ["stdio"],
"env": {
"LOXONE_HOST": "192.168.1.100",
"LOXONE_USER": "admin",
"LOXONE_PASS": "password"
}
}
}
}
cargo run --bin loxone-mcp-server http --port 3001 --credential-id abc123def-456-789
cargo run --bin loxone-mcp-server http --port 3001
# Test with credential ID
cargo run --bin loxone-mcp-auth test <credential-id>
# Or list available credentials
cargo run --bin loxone-mcp-auth list
The server implements 17 tools for actions and 25+ resources for data access:
control_device, control_multiple_devicescontrol_lights_unified, control_all_lights, control_room_lights control_rolladen_unified, control_all_rolladen, control_room_rolladen, discover_rolladen_capabilitiesset_room_temperature, set_room_modecontrol_audio_zone, set_audio_volumearm_alarm, disarm_alarmcreate_workflow, execute_workflow_demoloxone://rooms, loxone://rooms/{room}/devices, loxone://rooms/{room}/overviewloxone://devices/all, loxone://devices/category/{category}, loxone://devices/type/{type}loxone://system/status, loxone://system/capabilities, loxone://system/categoriesloxone://sensors/door-window, loxone://sensors/temperature, loxone://sensors/motionloxone://audio/zones, loxone://audio/sourcesFull tool documentation → | Resource documentation →
The server uses an async Rust architecture with:
# Development build with debug symbols
cargo build
# Run tests
cargo test
# Format and lint
cargo fmt && cargo clippy
src/
├── server/ # MCP protocol implementation
├── tools/ # Tool implementations
├── client/ # Loxone client
├── security/ # Auth and validation
└── main.rs # Entry point
Contributions are welcome! Please see contributing.md for guidelines.
Licensed under either of:
at your option.
Built on the PulseEngine MCP framework. Special thanks to the Loxone community for protocol documentation.
$ claude mcp add mcp-loxone \
-- python -m otcore.mcp_server <graph>