1. Conduid
  2. Blockchain
  3. SoundTouchMCP
MCP server · Blockchain

SoundTouchMCP

A Model Context Protocol (MCP) server for controlling obsolete Bose SoundTouch devices (SoundTouch 20, Wave SoundTouch), including device discovery via Zeroconf and subnet scan, through the SoundTouch WebServices API.

34Low

Scored 6 months ago · breakdown

About SoundTouchMCP

SoundTouchMCP is an MCP server in the Blockchain category: a Model Context Protocol (MCP) server for controlling obsolete Bose SoundTouch devices (SoundTouch 20, Wave SoundTouch), including device discovery via Zeroconf and subnet scan, through the SoundTouch WebServices API.

Install

From source
git clone https://github.com/sasky80/SoundTouchMCP

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (11)

DiscoverDevicesDiscover devices via Zeroconf and update the store

Parameters not published.

DiscoverDevicesOnSubnetDiscover devices by scanning a subnet on port 8090

Parameters not published.

EnterBluetoothPairingEnter Bluetooth pairing mode

Parameters not published.

GetDeviceInfoGet device type, ID, and IP

Parameters not published.

ListDevicesList all configured devices

Parameters not published.

ListPresetsList all presets (1–6) for a device

Parameters not published.

PlayPresetPlay a preset by name or number

Parameters not published.

PowerControlTurn a device on or off

Parameters not published.

SetVolumeSet volume to a specific level (0–100)

Parameters not published.

VolumeDownDecrease volume by one step

Parameters not published.

VolumeUpIncrease volume by one step

Parameters not published.

Ask AI

✦

Ask AI about SoundTouchMCP

Powered by Claude · Grounded in docs

I know everything about SoundTouchMCP. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.

5 checks have not been run yet.

README

SoundTouch MCP Server

An MCP server for controlling Bose SoundTouch speakers via the SoundTouch WebServices API.

Features

  • Power on / off (standby)
  • Volume up, down, and set to a specific level
  • List and play presets by name or number
  • Bluetooth pairing mode
  • Device info and listing
  • Network discovery — Zeroconf (_soundtouch._tcp.local.) and subnet scan

Prerequisites

  • .NET 8.0 SDK
  • One or more Bose SoundTouch devices on your network

Quick Start

git clone <repository-url>
cd SoundTouchMCP
cp appsettings.example.json appsettings.json
dotnet run

Devices are discovered automatically at runtime — use the DiscoverDevices or DiscoverDevicesOnSubnet tool from your MCP client.

Configuration

appsettings.json

Controls logging and discovery tuning. Copy appsettings.example.json to get started:

{
  "SoundTouch": {
    "Discovery": {
      "ProbeTimeoutMs": 3000,
      "Zeroconf": {
        "ScanTimeMs": 5000,
        "SocketRetries": 4,
        "SocketRetryDelayMs": 1000,
        "DiscoveryPasses": 2,
        "PassDelayMs": 700
      }
    }
  }
}
Setting Purpose
Discovery:ProbeTimeoutMs HTTP probe timeout for Zeroconf and subnet discovery
Discovery:Zeroconf:* Tune Zeroconf resilience on unstable networks

Device store

Devices are persisted separately from appsettings.json:

OS Path
macOS ~/Library/Application Support/SoundTouchMCP/devices.json
Windows %APPDATA%/SoundTouchMCP/devices.json
Linux $XDG_CONFIG_HOME/SoundTouchMCP/devices.json

Override with the SOUNDTOUCH_DEVICES_PATH environment variable.

If the store doesn't exist yet, it bootstraps from SoundTouch:Devices in appsettings.json (one-time).

Config file resolution

The server finds appsettings.json using the first match:

  1. --config /path/to/appsettings.json (CLI argument)
  2. SOUNDTOUCH_APPSETTINGS_PATH environment variable
  3. SOUNDTOUCH_CONFIG_DIR environment variable → <dir>/appsettings.json
  4. Next to the server executable
  5. Server content root (fallback)

MCP Client Setup

VS Code (GitHub Copilot)

Add to .vscode/mcp.json:

{
  "servers": {
    "soundtouch": {
      "command": "/absolute/path/to/SoundTouchMCP/publish/SoundTouchMCP",
      "args": [],
      "env": {
        "SOUNDTOUCH_CONFIG_DIR": "/absolute/path/to/your/config/folder"
      }
    }
  }
}

Or run via dotnet directly:

{
  "servers": {
    "soundtouch": {
      "command": "dotnet",
      "args": ["run", "--project", "/absolute/path/to/SoundTouchMCP/SoundTouchMCP.csproj"],
      "env": {
        "SOUNDTOUCH_CONFIG_DIR": "/absolute/path/to/your/config/folder"
      }
    }
  }
}

Then: Command Palette → MCP: List Servers → start soundtouch.

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "soundtouch": {
      "command": "dotnet",
      "args": ["run", "--project", "/path/to/SoundTouchMCP"],
      "env": {}
    }
  }
}

Publishing

# macOS (Apple Silicon)
dotnet publish ./SoundTouchMCP.csproj -c Release -r osx-arm64 --self-contained false -o ./publish

# Windows (x64)
dotnet publish ./SoundTouchMCP.csproj -c Release -r win-x64 --self-contained false -o ./publish-win

Other runtimes: osx-x64, linux-x64.

MCP Tools

Tool Description Key Parameters
DiscoverDevices Discover devices via Zeroconf and update the store removeNotFound, forceRefresh
DiscoverDevicesOnSubnet Discover devices by scanning a subnet on port 8090 subnet (CIDR, e.g. 192.168.1.0/24; auto-detected if omitted), removeNotFound, forceRefresh
PowerControl Turn a device on or off deviceName, powerOn
VolumeUp Increase volume by one step deviceName
VolumeDown Decrease volume by one step deviceName
SetVolume Set volume to a specific level (0–100) deviceName, level
ListPresets List all presets (1–6) for a device deviceName
PlayPreset Play a preset by name or number deviceName, presetIdentifier
EnterBluetoothPairing Enter Bluetooth pairing mode deviceName
GetDeviceInfo Get device type, ID, and IP deviceName
ListDevices List all configured devices —

Tip: Use DiscoverDevices(forceRefresh: true) to fully reconcile the store with currently reachable devices (removes stale entries).

Subnet scan safety: prefix length must be between /16 and /30.

License

MIT

Contributing

Contributions welcome — feel free to open a Pull Request.

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About SoundTouchMCP

How do I install SoundTouchMCP?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is SoundTouchMCP safe to use with an AI agent?

Its trust score is 34 out of 100 (low). It passes 1 of the 1 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is SoundTouchMCP still maintained?

Conduid hasn't recorded a commit date for this repository yet. Check the repository directly for recent activity.