Music MCP Server
by olivelb
README.md
# šµ Music MCP Server
A **Model Context Protocol (MCP) Server** for music library management and Chromecast playbook control, optimized for LM Studio integration.
## ⨠Key Features
- **šÆ 21 Music Tools** - Complete control over music playback and library
- **š” Chromecast Integration** - Native Google Cast queue support
- **ā” Ultra-Fast Responses** - No timeout issues with LM Studio (~20ms)
- **š Persistent Operation** - Background server survives disconnections
- **š Large Library Support** - Tested with 13,294+ tracks
## š Quick Start
### 1. Installation
```bash
git clone <repository>
cd music-mcp-server
npm install
```
### 2. Configure LM Studio
Add to your LM Studio MCP configuration:
```json
{
"mcpServers": {
"music": {
"command": "C:\\Program Files\\nodejs\\node.exe",
"args": ["lm-studio.js"],
"cwd": "D:/mcp-server/music-mcp-server",
"env": {
"NODE_ENV": "production",
"LOG_LEVEL": "error"
},
"timeout": 30000
}
}
}
```
### 3. Start Using
1. **Start server**: `start_music_server()`
2. **Find devices**: `list_chromecasts()`
3. **Search music**: `search_music({"query": "artist name"})`
4. **Play tracks**: `play_multiple_tracks({"tracks": [1,2,3], "device_name": "device"})`
## š Alternative: NPM Scripts
You can also run the interface using npm scripts:
```bash
# Start LM Studio interface
npm run lm-studio
# Start persistent server
npm run server
# Start server in background
npm run server:background
# Development mode
npm run dev
```
## š ļø Available Tools
### Server Management (3)
- `start_music_server` - Start background server
- `stop_music_server` - Stop background server
- `server_status` - Check server health
### Chromecast Control (3)
- `list_chromecasts` - Discover devices
- `connect_chromecast` - Connect to device
- `get_chromecast_status` - Get connection status
### Music Library (2)
- `search_music` - Search tracks (supports fuzzy, exact matching)
- `get_library_stats` - Library statistics
### Playback (6)
- `play_track` - Play single track
- `play_multiple_tracks` - Play queue with native Cast support
- `pause_playback` / `resume_playbook` / `stop_playbook` - Playbook control
- `get_playlist_status` - Current playbook info
### Navigation (4)
- `skip_to_next` / `skip_to_previous` - Skip tracks
- `skip_to_track` - Jump to specific track number
- `seek_to_position` - Seek within track
### Queue & Volume (3)
- `manage_queue` - Add/remove/shuffle/repeat queue
- `set_volume` - Volume control (0.0-1.0)
- `manage_playlist` - Create/manage playlists
## š Project Structure
```
music-mcp-server/
āāā lm-studio.js # Main LM Studio interface (renamed)
āāā persistent-music-server.js # Background music server
āāā lm_studio_config_node.json # LM Studio configuration
āāā src/ # Core application code
ā āāā controllers/ # Music & Chromecast controllers
ā āāā services/ # Database & Chromecast services
ā āāā utils/ # Utilities & validation
āāā data/ # Database & state files
āāā docs/ # API documentation
āāā scripts/ # Utility scripts
```
## š§ Architecture
### Two-Component Design
1. **lm-studio.js** - Ultra-fast MCP interface for LM Studio (renamed for simplicity)
2. **persistent-music-server.js** - Background server for music operations
### Why This Works
- **No Timeouts**: Protocol methods respond instantly
- **Persistent State**: Music server runs independently
- **Automatic Management**: Server starts/stops as needed
- **Error Recovery**: Robust error handling and reconnection
## šµ Supported Audio Formats
- MP3, FLAC, WAV, AAC, M4A, OGG, WMA
- Full ID3 metadata support
- Automatic content-type detection
## š Performance
- **Library Size**: 13,294+ tracks tested
- **Response Time**: ~20ms for protocol methods
- **Memory Usage**: Optimized for large libraries
- **Network**: Efficient Chromecast streaming
## š Troubleshooting
### Common Issues
1. **Tools not loading**: Restart LM Studio after config changes
2. **Server not starting**: Check port 8765 availability
3. **Chromecast not found**: Ensure devices on same network
4. **Playback stops**: Check Chromecast connection stability
### Logs
- Server logs: `data/music-server.log`
- Check server status: `server_status()` tool
## š License
MIT License - See LICENSE file for details
---
**Ready for production use with LM Studio!** šµ