About Tidal MCP
Tidal MCP is an MCP server published by keenanbb in the Other category.
The repository has 5 stars and 2 forks, with the last commit 10 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/keenanbb/tidal-mcpThis 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.
Ask AI
Ask AI about Tidal MCP
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 2 days ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- !License declaredNo license file. Legally you have no right to use it in a product.
- !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
1 check has not been run yet.
README
TIDAL MCP Server
A traditional MCP (Model Context Protocol) server for TIDAL music streaming service. Clean API wrapper following official MCP best practices - thin wrappers around tidalapi methods with no custom business logic.
Features
27 Tools
| Category | Tool | Description |
|---|---|---|
| Auth | login |
OAuth browser authentication |
| Search | search_tracks |
Find tracks by name/artist |
search_albums |
Find albums | |
search_artists |
Find artists | |
search_playlists |
Find public playlists | |
| Favorites | get_favorite_tracks |
Get liked tracks |
get_favorite_albums |
Get saved albums | |
get_favorite_artists |
Get followed artists | |
add_track_to_favorites |
Like a track | |
remove_track_from_favorites |
Unlike a track | |
remove_album_from_favorites |
Remove saved album | |
| Playlists | get_user_playlists |
List your playlists |
get_playlist_tracks |
Get tracks from playlist | |
create_playlist |
Create new playlist | |
add_tracks_to_playlist |
Add tracks to playlist | |
remove_tracks_from_playlist |
Remove tracks from playlist | |
update_playlist |
Update name/description | |
delete_playlist |
Delete a playlist | |
| Albums | get_album_tracks |
Get all album tracks |
get_album |
Get album details | |
get_similar_albums |
Find similar albums | |
| Artists | get_artist |
Get artist details with bio |
get_artist_albums |
Get artist discography | |
get_artist_top_tracks |
Get popular tracks | |
get_similar_artists |
Find similar artists | |
| Recommendations | get_track_radio |
Similar tracks to seed |
get_artist_radio |
Tracks based on artist style |
Installation
Requirements
- Python 3.10+
- uv (recommended) or pip
Setup
# Clone and enter directory
cd tidal-mcp
# Install with uv
uv sync
# Or with pip
pip install -e .
Usage
With Claude Desktop
Add to your Claude Desktop config:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"tidal": {
"command": "/path/to/uv",
"args": [
"--directory", "/path/to/tidal-mcp",
"run", "tidal-mcp"
]
}
}
}
Note: Use full path to
uv(find withwhich uv)
With MCP Inspector
npx @modelcontextprotocol/inspector uv run tidal-mcp
Direct Usage
uv run tidal-mcp
Authentication
python authenticate.py
Example Workflows
Create a Playlist from Search Results
login- Authenticate with TIDALsearch_tracks("Radiohead Creep")- Find trackscreate_playlist("My Playlist", "A collection of favorites")- Create playlistadd_tracks_to_playlist(playlist_id, [track_ids...])- Add tracks
Browse and Add Album to Playlist
search_albums("OK Computer")- Find albumget_album_tracks(album_id)- Get all tracksadd_tracks_to_playlist(playlist_id, [all_track_ids...])- Add to playlist
Manage Existing Playlist
get_user_playlists()- List your playlistsget_playlist_tracks(playlist_id)- View tracksremove_tracks_from_playlist(playlist_id, track_ids=[...])- Remove tracksupdate_playlist(playlist_id, name="New Name")- Rename
Development
Project Structure
tidal-mcp/
├── pyproject.toml # Project configuration
├── README.md # This file
├── CLAUDE.md # AI development guidance
└── src/
└── tidal_mcp/
├── __init__.py # Package init
├── models.py # Pydantic response models
└── server.py # MCP server with 27 tools
Dependencies
fastmcp>=2.12.0- MCP protocol frameworktidalapi>=0.8.6- TIDAL API client (v0.8.6+ required for working OAuth)anyio>=4.0.0- Async utilities
Testing
# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run tidal-mcp
# Quick protocol test
echo '{"jsonrpc": "2.0", "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0.0"}}, "id": 1}' | uv run tidal-mcp
Troubleshooting
Authentication Fails
- Ensure tidalapi >= 0.8.6 (older versions have invalid OAuth credentials)
- Delete
.tidal-sessions/and re-authenticate
Search Returns No Results
- Simplify query (single artist or song name)
- Check spelling
Port Conflicts (Inspector)
pkill -f "inspector|tidal-mcp"
Future Roadmap
The server currently has 27 tools covering core TIDAL functionality. Potential future additions:
- Remote Server: HTTP/SSE transport for Claude.ai and mobile apps (see
docs/REMOTE-DEPLOYMENT.md) - Advanced Search: ISRC/UPC lookup for precise track/album identification
- Playback: Queue management and now-playing info (requires TIDAL Connect)
- Social: Following users, collaborative playlists
License
MIT
Credits
README fetched from the repository 2 days ago. The original is authoritative.