Control Chromecast / Google Home / Nest speakers from Claude (or any MCP client) via the Model Context Protocol. Cross-platform — runs on macOS, Windows, and Linux.
Say things like:
- "Play Ilaiyaraaja on the Family Room speaker"
- "Pause the music"
- "Set volume to 50% on the kitchen display"
- "What's playing right now?"
One line per OS. Downloads a prebuilt binary, ensures
yt-dlpis present, creates the config file, and registers the MCP server with Claude Desktop. No Go toolchain required.
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/WeCodeBase/smart-speaker-mcp/main/install.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/WeCodeBase/smart-speaker-mcp/main/install.ps1 | iexAfter install, restart Claude Desktop, then ask Claude: "Discover my speakers."
The server hosts a small web UI on http://localhost:8765 that lets you play music, control volume, and re-scan for devices from any browser on the same Wi-Fi (laptop or phone). It's running whenever the MCP server is running.
To override the port set SMART_SPEAKER_WEB_PORT in .env. If 8765 is taken, the server falls back to a random port and prints the chosen URL to stderr — visible in Claude Desktop's MCP server log.
| Tool | What it does |
|---|---|
discover_devices |
Scan Wi-Fi for Chromecast / Google Home / Nest devices |
play |
Play a song, artist, or direct URL on a speaker |
pause / resume / stop |
Playback controls |
set_volume |
Set volume 0–100 |
get_status |
Current playback state |
list_local_music |
List audio files in your music folder |
get_config / set_config |
View / update runtime configuration |
All playback tools accept device_name as an optional argument and fall back to default_device from your config when omitted.
Located at ~/.config/smart-speaker-mcp/.env on macOS/Linux, or %APPDATA%\smart-speaker-mcp\.env on Windows.
# Default speaker (exact name shown by discover_devices)
SMART_SPEAKER_DEFAULT_DEVICE=Family Room speaker
# Audio source priority: local | youtube | url
SMART_SPEAKER_SOURCE=local
# Path to your local music folder (.mp3 / .flac / .m4a / .wav)
SMART_SPEAKER_MUSIC_DIR=~/Music
# Path to yt-dlp binary (auto-detected if blank)
SMART_SPEAKER_YTDLP_PATH=
# Port for the embedded web UI (default 8765)
SMART_SPEAKER_WEB_PORT=8765Edit this file and restart Claude Desktop to apply, or use the set_config tool to update values without editing the file.
| OS | Binary | .env config |
Claude Desktop config |
|---|---|---|---|
| macOS | ~/.local/bin/smart-speaker-mcp (or project dir if built locally) |
~/.config/smart-speaker-mcp/.env |
~/Library/Application Support/Claude/claude_desktop_config.json |
| Linux | ~/.local/bin/smart-speaker-mcp |
~/.config/smart-speaker-mcp/.env |
~/.config/Claude/claude_desktop_config.json |
| Windows | %LOCALAPPDATA%\Programs\smart-speaker-mcp\smart-speaker-mcp.exe |
%APPDATA%\smart-speaker-mcp\.env |
%APPDATA%\Claude\claude_desktop_config.json |
| OS | What you'll see | What to click |
|---|---|---|
| macOS | "smart-speaker-mcp cannot be opened — unidentified developer" | System Settings → Privacy & Security → "Open Anyway". Or run xattr -d com.apple.quarantine ~/.local/bin/smart-speaker-mcp once. |
| Windows | SmartScreen: "Windows protected your PC" | "More info" → "Run anyway" |
| Windows | Defender Firewall prompt (local file server binds to LAN) | "Allow access" on Private networks |
| Linux | None typically | — |
These prompts appear because the binary isn't code-signed. Code-signing certificates cost $99–$400/yr and will be added if/when the project warrants it.
You only need this if you're modifying the code. Otherwise the installer above is faster.
Prerequisites: Go 1.21+, yt-dlp, Claude Desktop.
git clone https://github.com/WeCodeBase/smart-speaker-mcp.git
cd smart-speaker-mcp| Platform | Command | What it does |
|---|---|---|
| macOS | bash setup.command |
Builds, creates .env, registers with Claude Desktop |
| Linux | bash setup.sh |
Same — Debian/Ubuntu tuned, falls back to dnf/pacman/pip |
| Windows (PowerShell) | .\setup.ps1 |
Same — uses winget for yt-dlp |
| Windows (cmd.exe) | setup.bat |
Thin wrapper around setup.ps1 |
| Platform | Build only | Build + restart Claude |
|---|---|---|
| macOS / Linux | go build . or make build |
make rebuild |
| Windows (PowerShell) | go build . |
go build . ; Stop-Process -Name Claude -Force ; Start-Process Claude |
| Windows (Git Bash / WSL) | make build |
make rebuild |
| VS Code (any platform) | — | Ctrl+Shift+P → Run Task → 🔄 Rebuild + Restart Claude |
make rebuild auto-detects your OS and uses the right "restart Claude" command for it.
make build-all # darwin-arm64, darwin-amd64, windows-amd64, linux-amd64, linux-arm64Tagged releases are built and published automatically by .github/workflows/release.yml.
make tag VERSION=v4.0.0The Action cross-compiles for all five OS/arch targets and attaches the binaries plus SHA256SUMS.txt to the GitHub Release.
Claude Desktop ──stdio (MCP)──▶ smart-speaker-mcp (Go binary, single static executable)
├── go-chromecast ──▶ Chromecast / Google Home control over LAN
├── HTTP server ──▶ Streams local files to Chromecast over Wi-Fi
├── HTTP server ──▶ Web UI for browser/phone control
└── yt-dlp ──▶ YouTube audio stream URLs
Local audio files are served over a lightweight embedded HTTP server so Chromecast (a network device) can fetch them directly from your computer over Wi-Fi.
Earlier versions tried. Amazon retired the Pre-built Routines API on 2026-05-13 and stopped accepting new AVS product registrations before that, so the original direct-control approach can no longer work for any new account. The remaining third-party paths (Voice Monkey, cookie-based reverse engineering of the Alexa app) all add either external service dependencies or brittle scrapers that break when Amazon updates their auth flow. We removed Alexa entirely in v4.0.0 to keep the project clean. If you need Echo control, Voice Monkey is the cleanest standalone option today — and may return as an optional plugin to this project in a future version. See CHANGELOG.md for full background.
MIT — Copyright (c) 2026 Sundara Senthil. See LICENSE.