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