mcp-lrclib
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LRCLIB_LOG_LEVEL | No | silent, error, info or debug. Logs go to stderr. | error |
| LRCLIB_TIMEOUT_MS | No | Per-request timeout. | 15000 |
| LRCLIB_USER_AGENT | No | User-Agent sent to LRCLIB. Please keep that shape if you override it. | mcp-lrclib v<version> (<repo url>) |
| LRCLIB_MAX_RETRIES | No | Retries on rate limiting and transient errors. | 3 |
| LRCLIB_CACHE_TTL_MS | No | In-memory cache lifetime (15 minutes). | 900000 |
| LRCLIB_MIN_INTERVAL_MS | No | Minimum gap between requests. Values below 200 ms are ignored. | 500 |
| LRCLIB_CACHE_MAX_ENTRIES | No | In-memory cache size. | 200 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_tracksA | Search LRCLIB for tracks by title, artist or album, and get the id needed to fetch lyrics with get_lyrics. Give either 'query' as free text, or 'track_name' and 'artist_name' separately for a narrower search. Results carry metadata only: title, artist, album, duration, and whether plain and time-synced lyrics exist. Use 'duration_seconds' and 'album_name' in the results to tell releases and re-recordings of the same song apart, and 'has_synced_lyrics' to know whether karaoke-style timed lyrics are available before fetching them. LRCLIB indexes tracks by their metadata, so it cannot search for a word appearing inside the lyrics. |
| get_lyricsA | Fetch the lyrics of one track from LRCLIB, given the id returned by search_tracks, or an exact artist and title. Set 'format' to "synced" for karaoke-style lyrics with a timestamp on every line, "plain" for the text alone, or "both". Check 'has_synced_lyrics' in the search results first: not every track has timed lyrics. Lyrics can be long, so the text is truncated by default: check 'truncated' and call again with 'offset' set to 'next_offset' to continue reading. Instrumental tracks come back with status "instrumental" and no text, which is a valid answer, so do not retry them. Always cite 'attribution' when showing lyrics to a user. |
| get_trackA | Look up one LRCLIB track by its id and return its metadata without the lyrics: title, artist, album, duration, and whether plain and time-synced lyrics exist. Use this to confirm you have the right release or version before calling get_lyrics, or to check whether timed lyrics exist for a track id you already hold. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 3 tools
The three tools have distinct primary purposes: search for tracks, fetch lyrics, and look up metadata by id. There is some overlap because search_tracks and get_track both return metadata, and get_lyrics may also include track metadata, but the descriptions clearly distinguish multi-result search from single-track lookup and lyric retrieval.
All tool names follow a consistent snake_case verb_noun pattern: search_tracks, get_lyrics, get_track. The convention is predictable and readable throughout.
Three tools are well-scoped for a lyrics lookup server: search, metadata confirmation, and lyric retrieval. Each tool earns its place, and there are no redundant or filler tools.
The surface covers the core read-only workflow: find a track, confirm its metadata, and fetch lyrics with pagination and format options. Minor gaps exist, such as no explicit album or artist browse operation, but these can be worked around through search.