About tunecatalog
tunecatalog is an MCP server for agents that search and browse an AI music catalog. It provides read-only tools for track details, trends, artists, and streaming links.
Key features
- 01Natural-language track search
- 02Mood and genre filters
- 03Track details and streaming URLs
- 04Trending track listings
- 05Artist profiles and discographies
Use cases
- 01Find music matching a described mood
- 02Retrieve a track’s streaming link and details
- 03Explore trending tracks or artists
MCP support
Exposes five read-only catalog tools to MCP clients: search_music, get_track, get_trending, browse_artists, and get_artist. Requests require a STARSINGER_API_KEY.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
5Saved tool list · updated 1w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| mood | enum | No | Filter by mood: purple (chill), red (energetic), blue (emotional), gold (uplifting), green (nature), pink (romantic), dark (intense), rainbow (eclectic)purple | red | blue | gold | green | pink | dark | rainbow |
| limit | number | No | Results to return (default 10, max 50) |
| query | string | Yes | Natural language search — "upbeat jazz piano", "sad violin ballad" |
Details
From the project READMEtunecatalog
Browse an AI music catalog without leaving your agent. tunecatalog searches tracks by natural-language description, mood, or genre, pulls full track details with streaming links, surfaces what is trending, and lets you wander the artist roster and read a full artist profile with its discography.
Labelled subset — 5 of 9 tools. This rebuild builds only the five read-only catalog tools documented below. Four documented upstream tools are omitted:
make_song,song_status,my_songs, andwallet.make_songspends a purchased song credit and, with none left, hands back a checkout link and price — a payment funnel — and the four also lack published argument schemas beyond prose, so they are left out and named here rather than silently dropped.
The five tools:
search_music— search the catalog by a natural-language query such as "upbeat jazz piano" or "sad violin ballad", optionally filtered by mood (purplechill,redenergetic,blueemotional,golduplifting,greennature,pinkromantic,darkintense,rainboweclectic) and capped withlimit(default 10, max 50).get_track— full details and a streaming URL for one track, by the track ID a search returned.get_trending— the currently popular tracks, optionally capped withlimit.browse_artists— the catalog's artists, optionally filtered by genre (for example "jazz", "classical", or "pop") and capped withlimit.get_artist— an artist's full profile and discography, by artist ID or by handle (for example "miles_rivers"). Both arguments are optional; no at-least-one rule is invented locally.
A successful call returns the upstream JSON body verbatim: track responses carry title, artist, genre, mood, play count, likes, lyrics, cover art, and a streaming URL in the upstream's own shape.
Configuration
STARSINGER_API_KEY— required. Sent asAuthorization: Bearer <key>. If it is unset, every tool fails withSTARSINGER_API_KEY is not setand no request is made (the server still starts and lists tools).STARSINGER_API_URL— optional. Defaults tohttps://mcp-api.starsinger.ai.
Upstream failures surface as starsinger error: HTTP <status> for a non-2xx reply, or starsinger unreachable
when the request itself fails.
Wire paths are documented reconstructions. The upstream README pins the API host and the Bearer auth but not the REST paths, so the paths below are reconstructions and are labelled as such:
GET /search,GET /tracks/<trackId>,GET /trending,GET /artists, andGET /artists/<artistId or handle>. The tool schemas themselves are pinned by the README's parameter tables.
CLI
Each tool is a subcommand taking one JSON argument string:
export STARSINGER_API_KEY="<your key>"
npx @reneturcios/tunecatalog search_music '{"query":"upbeat jazz piano","mood":"gold","limit":5}'
npx @reneturcios/tunecatalog get_track '{"trackId":"<track id>"}'
npx @reneturcios/tunecatalog get_trending '{"limit":10}'
npx @reneturcios/tunecatalog browse_artists '{"genre":"jazz"}'
npx @reneturcios/tunecatalog get_artist '{"handle":"miles_rivers"}'
npx @reneturcios/tunecatalog --version
Output is the tool's result text. Exit codes: 0 on
success, 1 on a runtime error (including a validation or
upstream failure), 2 on a usage error.
MCP server
npx -y @reneturcios/tunecatalog mcp
MCP client config:
{
"mcpServers": {
"tunecatalog": {
"command": "npx",
"args": ["-y", "@reneturcios/tunecatalog", "mcp"],
"env": {
"STARSINGER_API_KEY": "<your key>"
}
}
}
}
Docker
docker run -i -e STARSINGER_API_KEY="<your key>" ghcr.io/cloudcorprecords/tunecatalog
docker run --rm -e STARSINGER_API_KEY="<your key>" ghcr.io/cloudcorprecords/tunecatalog get_trending '{"limit":5}'
Development
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (fake fetch only, no network)
npm run dev # run the CLI from source
License
MIT — Copyright (c) 2026 Rene Turcios
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.