Skip to main content
Glama

get_track_lyrics

Retrieve plain text lyrics for any Spotify track to display in applications, analyze for research, or create lyric-based features.

Instructions

Retrieve plain text lyrics for any Spotify track in a clean, readable format.

🎯 USE CASES: • Analyze song lyrics for music analysis, research, or content creation • Display lyrics in music applications for reading along • Create lyric-based search and discovery features • Develop music education tools with lyric analysis • Build lyrics display features for music players

📝 WHAT IT RETURNS: • Structured response with success status and error handling • Complete track information (name, artist, album, duration) • Plain text lyrics in clean, readable format • Instrumental track detection for non-vocal content • Fallback message when lyrics are unavailable

🔍 EXAMPLES: • "Show me the lyrics for 'Bohemian Rhapsody' by Queen" • "Get the lyrics for this track" • "What are the lyrics to track ID: 4uLU6hMCjMI75M1A2tKUQC?" • "Display the song lyrics for analysis"

🎵 RESPONSE FORMAT: • Success response includes track metadata and lyrics string • Plain text lyrics with line breaks for easy reading • Error responses provide helpful fallback information • Instrumental flag indicates tracks without vocals • Clean format perfect for display and analysis

💡 LYRIC FEATURES: • Clean plain text format without timestamps • Easy to read and analyze lyrics content • Error handling for unavailable or missing lyrics • UTF-8 support for international character sets • Perfect for lyrics display and text analysis

⚠️ REQUIREMENTS: • Valid Spotify access token • Track must exist and be available in user's market • Uses external lyrics service for comprehensive coverage • Returns clean plain text lyrics only

🔍 EXAMPLE RESPONSE FORMAT:

{ "success": true, "track": { "name": "Bohemian Rhapsody", "artist": "Queen", "album": "A Night at the Opera", "duration": 354 }, "lyrics": "Verse 1: Is this the real life? Is this just fantasy? Caught in a landslide, No escape from reality.

Chorus: Mama, just killed a man Put a gun against his head Pulled my trigger, now he's dead

Verse 2: Too late, my time has come Sends shivers down my spine Body's aching all the time", "instrumental": false }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tokenYesSpotify access token for authentication
trackIdYesSpotify track ID or URI

Implementation Reference

  • The handler function that implements the core logic of the 'get_track_lyrics' tool. It retrieves track information using SpotifyService, fetches lyrics from lrclib.net API, and returns formatted lyrics or error response.
    handler: async (args: any, spotifyService: SpotifyService) => { const { token, trackId } = args; try { const track = await spotifyService.getTrack(token, trackId); const response = await fetch( `https://lrclib.net/api/get?artist_name=${encodeURIComponent( track.artists[0].name )}&track_name=${encodeURIComponent(track.name)}` ); if (!response.ok) { return { success: false, message: "Lyrics not found for this track", track: { name: track.name, artist: track.artists[0].name, album: track.album?.name, }, }; } const data = await response.json(); return { success: true, track: { name: data.trackName || track.name, artist: data.artistName || track.artists[0].name, album: data.albumName || track.album?.name, duration: data.duration || Math.floor(track.duration_ms / 1000), }, lyrics: data.plainLyrics || "Lyrics not available for this track", instrumental: data.instrumental || false, }; } catch (error) { return { success: false, message: "Error fetching lyrics", error: error instanceof Error ? error.message : "Unknown error", }; } },
  • Input schema definition for the 'get_track_lyrics' tool, validating token and trackId parameters using Zod.
    schema: createSchema({ token: commonSchemas.token(), trackId: commonSchemas.spotifyId("track"), }),
  • Registration of all tools including trackTools (which contains 'get_track_lyrics') into the central allTools registry used by the MCP server.
    export const allTools: ToolsRegistry = { ...albumTools, ...artistTools, ...trackTools, ...playlistTools, ...playbackTools, ...userTools, ...searchTools, };
  • The 'get_track_lyrics' tool is registered as a property in the trackTools export object.
    get_track_lyrics: {
  • SpotifyService.getTrack helper method called by the tool handler to fetch track metadata before retrieving lyrics.
    async getTrack(token: string, trackId: string): Promise<SpotifyTrack> { const id = this.extractId(trackId); return await this.makeRequest<SpotifyTrack>(`tracks/${id}`, token); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/latiftplgu/Spotify-OAuth-MCP-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server