shd-music

shd-music

Enables searching and ripping high-quality audio from Deezer using an ARL cookie, with automatic decryption, tagging, and local library publication.

Category
Visit Server

README

rip mcp server

A Model Context Protocol server (JSON-RPC over stdio, built for Bun) that rips high-quality audio from Deezer using an ARL cookie and publishes the finished files into the local music library that backs, mainly for navidrome, but with a few tweaks you can use this anywhere to rip music automatically.

Recommended to use this with Poke

Use lucida to rip from soundcloud, rest you can rip using deezer as it has most if not all of the released music.

Because the server runs on the same host as the music site, "upload" is just a local move/copy into the library directory no SSH/SFTP/S3 required.

Tools

Tool Arguments Description
search_music query: string, limit?: number Search the Deezer catalogue. Returns tracks + URLs.
rip_track track_url: string, upload?: boolean Download → Blowfish-decrypt → tag a track. With upload (default true) it publishes into the library.
upload_file local_path: string Publish an existing local file into the library.

How it works

  1. Search / metadata use Deezer's public REST API (no auth).
  2. rip_track authenticates the ARL against the private gw-light gateway, requests a stream token, and asks media.deezer.com for an encrypted CDN URL (FLAC with automatic fallback to MP3 320/128).
  3. The encrypted payload is decrypted with the BF_CBC_STRIPE scheme every third 2048-byte block is Blowfish-CBC encrypted. We decrypt natively via Bun's node:crypto bf-cbc cipher (src/mcp/deezer/crypto.ts).
  4. Tags + cover art are embedded best-effort with ffmpeg (preferred) or metaflac. If neither binary is installed the file is still produced, just untagged.
  5. The result is moved/copied to MUSIC_LIBRARY_DIR as Album Artist/Album/NN - Title.flac.

The download backend is pluggable (src/mcp/backends): deezer (native, default) or lucida for a self-hosted lucida-flow instance.

Configuration

All via environment variables (see .env.example):

Var Default Notes
MUSIC_BACKEND deezer deezer or lucida
DEEZER_ARL Required for the deezer backend
MUSIC_QUALITY FLAC FLAC | MP3_320 | MP3_128
MUSIC_LIBRARY_DIR ./library Publish destination
DOWNLOAD_DIR OS temp dir Working dir for decrypt/tag
UPLOAD_MODE move move or copy
EMBED_TAGS true Toggle ffmpeg/metaflac tagging
LUCIDA_API_URL / LUCIDA_API_KEY Only for the lucida backend
MCP_LOG_LEVEL info stderr verbosity

Running

bun run mcp        # production
bun run mcp:dev    # watch mode

Register it with an MCP client:

{
  "mcpServers": {
    "rip-music": {
      "command": "bun",
      "args": ["run", "src/mcp/index.ts"],
      "cwd": "/path/to/where/you/cloned"
    }
  }
}

The server logs to stderr; stdout is reserved for the JSON-RPC protocol. For tagging + embedded artwork, install ffmpeg (recommended) or flac (metaflac) on the host.

Note

Use this only with your own Deezer account/ARL and for content you're entitled to download. The ARL is a credential — keep it in .env (git-ignored), never commit it.

Preview/Demo

https://github.com/user-attachments/assets/df363e87-2d62-4d06-ac3b-353ceccd2e6a

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured