Smart Home Skills
Control your physical environment directly from CLI-JAW. Smart Home skills bridge the gap between your AI assistant and IoT devices, letting you manage Philips Hue lighting and Spotify playback with natural language commands.
Overview
CLI-JAW ships with two smart home skills that connect to popular device ecosystems via their respective APIs. Both skills are implemented as MCP (Model Context Protocol) servers and are loaded on demand when the agent detects a relevant request.
| Skill | Target | Protocol | Auth | Description |
|---|---|---|---|---|
openhue | Philips Hue Bridge | Hue API v2 (REST) | Bridge API key | Control lights, rooms, scenes, and schedules on your Hue network |
spotify-player | Spotify | Spotify Web API | OAuth 2.0 PKCE | Play, pause, skip, search, queue, and manage Spotify playback |
openhue — Philips Hue Control
The openhue skill communicates with a Philips Hue Bridge on your local network. It exposes MCP tools for controlling individual lights, rooms, zones, and scenes.
Capabilities
| Tool | Description | Example |
|---|---|---|
get_lights | List all lights and their current state | Retrieve brightness, color, on/off status |
set_light | Control a single light | Turn on, set brightness, change color |
get_rooms | List rooms defined on the bridge | Living Room, Bedroom, Office |
set_room | Control all lights in a room | Turn off entire room, dim to 30% |
get_scenes | List available Hue scenes | Energize, Relax, Concentrate |
set_scene | Activate a predefined scene | Apply "Relax" scene to living room |
Configuration
Add the openhue MCP server to your CLI-JAW settings. The bridge IP and API key are required.
{
"mcpServers": {
"openhue": {
"command": "npx",
"args": ["-y", "@openhue/mcp-server"],
"env": {
"OPENHUE_BRIDGE_IP": "192.168.1.100",
"OPENHUE_API_KEY": "your-hue-api-key"
}
}
}
}
To obtain your Hue API key, press the physical link button on your Hue Bridge and then run:
curl -X POST http://192.168.1.100/api \
-d '{"devicetype":"cli-jaw#instance"}'
Natural Language Examples
"거실 불 켜줘"— Turn on the living room lights"방 불 다 꺼줘"— Turn off all bedroom lights"불 밝기 50%로 해줘"— Set brightness to 50%"불 따뜻한 색으로 바꿔줘"— Change lights to warm white"집중 모드로 불 바꿔줘"— Activate the Concentrate scene"릴렉스 씬 틀어줘"— Activate the Relax scene
"Turn on the office lights""Dim the living room to 30%""Set all lights to warm white""Activate the Relax scene in the bedroom""Turn off all the lights"
How It Works
When you say something like "불 켜줘", CLI-JAW routes the request through its skill matching system:
- The agent recognizes the intent as a smart home command
- The
openhueMCP server is loaded (if not already running) - The agent calls the appropriate tool (e.g.,
set_roomwithon: true) - The Hue Bridge executes the command and returns the updated state
- The agent confirms the action in natural language
spotify-player — Spotify Control
The spotify-player skill connects to the Spotify Web API, giving CLI-JAW full control over music playback. It supports searching tracks, managing queues, controlling playback, and browsing playlists.
Capabilities
| Tool | Description | Example |
|---|---|---|
play | Start or resume playback | Play a track, album, or playlist |
pause | Pause current playback | Pause music |
next | Skip to the next track | Skip current song |
previous | Go back to the previous track | Replay last song |
search | Search tracks, albums, artists | Find "Bohemian Rhapsody" |
queue | Add a track to the playback queue | Queue a song for next |
get_playback | Get current playback state | What is currently playing |
set_volume | Adjust playback volume | Set volume to 60% |
get_playlists | List user playlists | Browse saved playlists |
set_shuffle | Toggle shuffle mode | Enable or disable shuffle |
set_repeat | Set repeat mode | Repeat track, context, or off |
Configuration
Add the spotify-player MCP server with your Spotify OAuth credentials.
{
"mcpServers": {
"spotify-player": {
"command": "npx",
"args": ["-y", "spotify-player-mcp"],
"env": {
"SPOTIFY_CLIENT_ID": "your-client-id",
"SPOTIFY_CLIENT_SECRET": "your-client-secret",
"SPOTIFY_REDIRECT_URI": "http://localhost:8888/callback"
}
}
}
}
OAuth Setup
- Go to the Spotify Developer Dashboard
- Create a new app with redirect URI
http://localhost:8888/callback - Copy the Client ID and Client Secret into your config
- On first use, CLI-JAW will open a browser window for Spotify authorization
- After approval, the refresh token is cached locally for subsequent sessions
Natural Language Examples
"음악 틀어줘"— Resume playback"재즈 음악 틀어줘"— Search and play jazz music"다음 곡으로 넘겨줘"— Skip to the next track"볼륨 좀 줄여줘"— Lower the volume"지금 뭐 듣고 있어?"— Show current playback info"이 노래 반복 재생해줘"— Repeat the current track"셔플 켜줘"— Enable shuffle mode"BTS 노래 틀어줘"— Search and play BTS
"Play some lo-fi beats""What song is playing right now?""Skip this track""Add Blinding Lights to the queue""Set volume to 40%""Show my playlists"
Combined Workflows
Smart home skills become powerful when combined with each other or with other CLI-JAW capabilities. Because the agent understands context, you can issue compound commands naturally.
"영화 볼 준비 해줘"— Dim lights to 20%, activate Relax scene, pause Spotify"작업 모드로 바꿔줘"— Set lights to Concentrate scene, play lo-fi playlist at low volume"잘 준비 해줘"— Turn off all lights, stop music"Set up movie night"— Combines lighting and audio adjustments
# Example: the agent interprets "영화 볼 준비 해줘" as:
1. openhue → set_room(room="Living Room", brightness=20)
2. openhue → set_scene(scene="Relax", room="Living Room")
3. spotify-player → pause()
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| Hue Bridge not found | Wrong IP or bridge offline | Verify OPENHUE_BRIDGE_IP and ensure the bridge is on the same network |
| API key rejected | Key expired or never created | Press the bridge link button and regenerate the key |
| Spotify auth fails | Invalid credentials or redirect URI mismatch | Check Client ID/Secret and ensure redirect URI matches exactly |
| No active device | Spotify has no active playback device | Open Spotify on a device first, then retry the command |
| MCP server won't start | npx not found or network issue | Ensure Node.js is installed and npx is in your PATH |
| Lights respond slowly | Network latency to bridge | Use a wired connection for the Hue Bridge if possible |
Environment Variables Reference
| Variable | Skill | Required | Description |
|---|---|---|---|
OPENHUE_BRIDGE_IP | openhue | Yes | Local IP address of your Philips Hue Bridge |
OPENHUE_API_KEY | openhue | Yes | API key generated via the bridge link button |
SPOTIFY_CLIENT_ID | spotify-player | Yes | OAuth Client ID from Spotify Developer Dashboard |
SPOTIFY_CLIENT_SECRET | spotify-player | Yes | OAuth Client Secret from Spotify Developer Dashboard |
SPOTIFY_REDIRECT_URI | spotify-player | Yes | OAuth redirect URI (must match dashboard config) |