A Model Context Protocol (MCP) server for controlling Bose SoundTouch devices via the SoundTouch WebServices API.
- Power Control: Turn SoundTouch devices on/off
- Volume Control: Adjust volume up and down
- Preset Management: List all configured presets and play them by name or number
- Bluetooth Pairing: Enter Bluetooth pairing mode
- .NET 8.0 SDK
- One or more Bose SoundTouch devices on your network
- Static IP addresses configured for your SoundTouch devices (recommended)
Edit appsettings.json to configure your SoundTouch devices:
{
"SoundTouch": {
"Devices": [
{
"Name": "Living Room Speaker",
"IpAddress": "192.168.1.131"
},
{
"Name": "Bedroom Soundbar",
"IpAddress": "192.168.1.130"
}
]
}
}-
Clone this repository:
git clone <repository-url> cd SoundTouchMCP
-
Configure your devices in
appsettings.json:cp appsettings.example.json appsettings.json # Edit appsettings.json with your device information -
Build the project:
dotnet build
-
Run the server:
dotnet run
Add this to your Claude Desktop configuration file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"soundtouch": {
"command": "dotnet",
"args": ["run", "--project", "path/to/SoundTouchMCP"],
"env": {}
}
}
}Or use the published executable:
{
"mcpServers": {
"soundtouch": {
"command": "path/to/SoundTouchMCP.exe",
"args": [],
"env": {}
}
}
}To create a standalone executable:
dotnet publish -c Release -r win-x64 --self-containedFor other platforms:
- macOS:
-r osx-x64 - Linux:
-r linux-x64
Turn a device on or off.
Parameters:
deviceName(string): Name of the device as configured in appsettings.jsonpowerOn(boolean): true to turn on, false to turn off (standby)
Increase the volume of a device.
Parameters:
deviceName(string): Name of the device
Decrease the volume of a device.
Parameters:
deviceName(string): Name of the device
Set the volume to a specific level.
Parameters:
deviceName(string): Name of the devicelevel(number): Volume level (0-100)
List all configured presets for a device.
Parameters:
deviceName(string): Name of the device
Play a preset by name or number.
Parameters:
deviceName(string): Name of the devicepresetIdentifier(string): Preset name or number (1-6)
Enter Bluetooth pairing mode.
Parameters:
deviceName(string): Name of the device
This server uses the SoundTouch WebServices API.
MIT License
Contributions are welcome! Please feel free to submit a Pull Request.