lastfm-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LASTFM_API_KEY | Yes | Last.fm API key. Required. Create an API account at https://www.last.fm/api/account/create. | |
| LASTFM_USERNAME | No | Last.fm username. Optional, used as the default for user tools. | |
| LASTFM_API_SECRET | No | Last.fm API secret. Only needed for write operations (scrobbling, loving, tagging). |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_result_pageA | Read more of a result that was too large to return in one piece. Any tool whose answer is too large returns its first page with a
Args:
result_id: From the |
| start_authenticationA | Begin the Last.fm desktop auth flow. Returns a token and the URL to open in a browser. Approve the request there, then call finish_authentication with the same token. Only needed for writes: scrobbling, loving and tagging. |
| finish_authenticationA | Exchange an approved token for a stored session key. Args: token: The token returned by start_authentication, after approving it in the browser. |
| get_authentication_statusA | Report whether a write-capable session is stored, and for which user. |
| clear_authenticationA | Forget the stored session key, disabling writes until re-authenticated. |
| get_albumA | Get album metadata: tracklist, listeners, playcount, tags, wiki. Args: artist: Artist name. Required unless mbid is given. album: Album name. Required unless mbid is given. mbid: MusicBrainz id for the album, used instead of the names. username: Include this user's playcount for the album. autocorrect: Let Last.fm fix a misspelled artist name. lang: ISO 639 alpha-2 language for the wiki text. |
| get_album_tagsA | Get the tags one user applied to an album. Args: artist: Artist name. Required unless mbid is given. album: Album name. Required unless mbid is given. mbid: MusicBrainz id for the album. user: Whose tags to read. Defaults to the authenticated account. autocorrect: Let Last.fm fix a misspelled artist name. |
| get_album_top_tagsB | Get the tags the whole community applied to an album, by popularity. Args: artist: Artist name. Required unless mbid is given. album: Album name. Required unless mbid is given. mbid: MusicBrainz id for the album. autocorrect: Let Last.fm fix a misspelled artist name. |
| search_albumsA | Search albums by name, best match first. Args: album: The album name to search for. limit: Results per page (default 30, maximum 1000). page: Which page of results to fetch. |
| add_album_tagsB | Apply your own tags to an album. Needs authentication. Args: artist: Artist name. album: Album name. tags: Up to 10 tags, comma separated. |
| remove_album_tagA | Remove one of your tags from an album. Needs authentication. Args: artist: Artist name. album: Album name. tag: The single tag to remove. |
| get_artistA | Get artist metadata: listeners, playcount, similar artists, bio. Args: artist: Artist name. Required unless mbid is given. mbid: MusicBrainz id for the artist. username: Include this user's playcount for the artist. autocorrect: Let Last.fm fix a misspelled artist name. lang: ISO 639 alpha-2 language for the biography text. |
| get_artist_correctionA | Get Last.fm's canonical spelling for a misspelled artist name. Args: artist: The name as written, possibly misspelled. |
| get_similar_artistsA | Get artists similar to this one, most similar first. Args: artist: Artist name. Required unless mbid is given. mbid: MusicBrainz id for the artist. limit: How many similar artists to return. autocorrect: Let Last.fm fix a misspelled artist name. |
| get_artist_tagsA | Get the tags one user applied to an artist. Args: artist: Artist name. Required unless mbid is given. mbid: MusicBrainz id for the artist. user: Whose tags to read. Defaults to the authenticated account. autocorrect: Let Last.fm fix a misspelled artist name. |
| get_artist_top_albumsA | Get an artist's most played albums. Args: artist: Artist name. Required unless mbid is given. mbid: MusicBrainz id for the artist. limit: Results per page. page: Which page of results to fetch. autocorrect: Let Last.fm fix a misspelled artist name. |
| get_artist_top_tagsA | Get the tags the community applied to an artist, by popularity. Args: artist: Artist name. Required unless mbid is given. mbid: MusicBrainz id for the artist. autocorrect: Let Last.fm fix a misspelled artist name. |
| get_artist_top_tracksA | Get an artist's most played tracks. Args: artist: Artist name. Required unless mbid is given. mbid: MusicBrainz id for the artist. limit: Results per page. page: Which page of results to fetch. autocorrect: Let Last.fm fix a misspelled artist name. |
| search_artistsA | Search artists by name, best match first. Args: artist: The artist name to search for. limit: Results per page (default 30, maximum 1000). page: Which page of results to fetch. |
| add_artist_tagsA | Apply your own tags to an artist. Needs authentication. Args: artist: Artist name. tags: Up to 10 tags, comma separated. |
| remove_artist_tagA | Remove one of your tags from an artist. Needs authentication. Args: artist: Artist name. tag: The single tag to remove. |
| get_trackA | Get track metadata: duration, listeners, playcount, album, tags, wiki. Args: artist: Artist name. Required unless mbid is given. track: Track name. Required unless mbid is given. mbid: MusicBrainz id for the track. username: Include this user's playcount and loved status. autocorrect: Let Last.fm fix a misspelled artist or track name. |
| get_track_correctionA | Get Last.fm's canonical spelling for a misspelled artist and track. Args: artist: The artist name as written. track: The track name as written. |
| get_similar_tracksA | Get tracks similar to this one, most similar first. Args: artist: Artist name. Required unless mbid is given. track: Track name. Required unless mbid is given. mbid: MusicBrainz id for the track. limit: How many similar tracks to return. autocorrect: Let Last.fm fix a misspelled artist or track name. |
| get_track_tagsA | Get the tags one user applied to a track. Args: artist: Artist name. Required unless mbid is given. track: Track name. Required unless mbid is given. mbid: MusicBrainz id for the track. user: Whose tags to read. Defaults to the authenticated account. autocorrect: Let Last.fm fix a misspelled artist or track name. |
| get_track_top_tagsA | Get the tags the community applied to a track, by popularity. Args: artist: Artist name. Required unless mbid is given. track: Track name. Required unless mbid is given. mbid: MusicBrainz id for the track. autocorrect: Let Last.fm fix a misspelled artist or track name. |
| search_tracksB | Search tracks by name, best match first. Args: track: The track name to search for. artist: Narrow the search to one artist. limit: Results per page (default 30, maximum 1000). page: Which page of results to fetch. |
| love_trackA | Mark a track as loved. Needs authentication. Args: artist: Artist name. track: Track name. |
| unlove_trackA | Remove a track from your loved tracks. Needs authentication. Args: artist: Artist name. track: Track name. |
| add_track_tagsA | Apply your own tags to a track. Needs authentication. Args: artist: Artist name. track: Track name. tags: Up to 10 tags, comma separated. |
| remove_track_tagA | Remove one of your tags from a track. Needs authentication. Args: artist: Artist name. track: Track name. tag: The single tag to remove. |
| scrobble_tracksA | Scrobble one or more plays. Needs authentication. Args: tracks: Up to 50 plays. Each needs artist and track; timestamp (Unix seconds the play started) defaults to now, and album, albumArtist, mbid, duration and trackNumber are optional. Scrobble only what was really played: Last.fm rejects timestamps far in the future, and a play should be at least half the track or four minutes long. |
| update_now_playingA | Set what is playing right now. Needs authentication. This does not scrobble; it only updates the "now playing" line on your profile, which Last.fm clears on its own shortly after. Args: artist: Artist name. track: Track name. album: Album name. album_artist: Album artist, when it differs from the track artist. duration: Track length in seconds. track_number: Position of the track on the album. mbid: MusicBrainz id for the track. |
| get_user_infoA | Get a user's profile: playcount, registration date, country, subscriber. Args: user: Whose profile to read. Defaults to the authenticated account. |
| get_user_recent_tracksA | Get a user's listening history, most recent first. This is the tool for "what have I been listening to". A currently playing track appears first with a nowplaying flag and no play date. Args: user: Whose history to read. Defaults to the authenticated account. limit: Results per page (maximum 200). page: Which page of results to fetch. from_timestamp: Only plays at or after this Unix timestamp. to_timestamp: Only plays at or before this Unix timestamp. extended: Also return artist images and whether you loved each track. |
| get_user_loved_tracksA | Get the tracks a user has loved, most recent first. Args: user: Whose loved tracks to read. Defaults to the authenticated account. limit: Results per page. page: Which page of results to fetch. |
| get_user_friendsA | Get a user's friends. Args: user: Whose friends to read. Defaults to the authenticated account. limit: Results per page. page: Which page of results to fetch. recenttracks: Also include each friend's latest scrobble. |
| get_user_top_artistsA | Get a user's most played artists over a period. Args: user: Whose chart to read. Defaults to the authenticated account. period: One of overall, 7day, 1month, 3month, 6month, 12month. limit: Results per page. page: Which page of results to fetch. |
| get_user_top_albumsA | Get a user's most played albums over a period. Args: user: Whose chart to read. Defaults to the authenticated account. period: One of overall, 7day, 1month, 3month, 6month, 12month. limit: Results per page. page: Which page of results to fetch. |
| get_user_top_tracksB | Get a user's most played tracks over a period. Args: user: Whose chart to read. Defaults to the authenticated account. period: One of overall, 7day, 1month, 3month, 6month, 12month. limit: Results per page. page: Which page of results to fetch. |
| get_user_top_tagsA | Get the tags a user uses most. Args: user: Whose tags to read. Defaults to the authenticated account. limit: How many tags to return. |
| get_user_personal_tagsA | Get everything a user tagged with one tag. Args: tag: The tag to look up. tagging_type: What was tagged -- artist, album or track. user: Whose tags to read. Defaults to the authenticated account. limit: Results per page. page: Which page of results to fetch. |
| get_user_weekly_chart_listA | Get the week ranges a user has weekly charts for. Each entry is a from/to Unix timestamp pair to pass to the weekly chart tools. Args: user: Whose chart list to read. Defaults to the authenticated account. |
| get_user_weekly_artist_chartA | Get a user's artist chart for one week. Args: user: Whose chart to read. Defaults to the authenticated account. from_timestamp: Week start, from get_user_weekly_chart_list. Defaults to the most recent week. to_timestamp: Week end, from get_user_weekly_chart_list. |
| get_user_weekly_album_chartA | Get a user's album chart for one week. Args: user: Whose chart to read. Defaults to the authenticated account. from_timestamp: Week start, from get_user_weekly_chart_list. Defaults to the most recent week. to_timestamp: Week end, from get_user_weekly_chart_list. |
| get_user_weekly_track_chartA | Get a user's track chart for one week. Args: user: Whose chart to read. Defaults to the authenticated account. from_timestamp: Week start, from get_user_weekly_chart_list. Defaults to the most recent week. to_timestamp: Week end, from get_user_weekly_chart_list. |
| get_library_artistsA | Get every artist in a user's library, with playcounts. Args: user: Whose library to read. Defaults to the authenticated account. limit: Results per page. page: Which page of results to fetch. |
| get_chart_top_artistsA | Get the most popular artists on Last.fm right now. Args: limit: Results per page. page: Which page of results to fetch. |
| get_chart_top_tracksA | Get the most popular tracks on Last.fm right now. Args: limit: Results per page. page: Which page of results to fetch. |
| get_chart_top_tagsA | Get the most popular tags on Last.fm right now. Args: limit: Results per page. page: Which page of results to fetch. |
| get_geo_top_artistsA | Get the most popular artists in one country. Args: country: Country name in ISO 3166-1 form, such as Finland. limit: Results per page. page: Which page of results to fetch. |
| get_geo_top_tracksA | Get the most popular tracks in one country. Args: country: Country name in ISO 3166-1 form, such as Finland. location: Narrow to a city within that country. limit: Results per page. page: Which page of results to fetch. |
| get_tag_infoA | Get a tag's description, total uses and reach. Args: tag: The tag name. lang: ISO 639 alpha-2 language for the description. |
| get_similar_tagsA | Get tags similar to this one. Args: tag: The tag name. |
| get_tag_top_artistsA | Get the artists most associated with a tag. Args: tag: The tag name. limit: Results per page. page: Which page of results to fetch. |
| get_tag_top_albumsA | Get the albums most associated with a tag. Args: tag: The tag name. limit: Results per page. page: Which page of results to fetch. |
| get_tag_top_tracksA | Get the tracks most associated with a tag. Args: tag: The tag name. limit: Results per page. page: Which page of results to fetch. |
| get_top_tagsA | Get the tags used most across all of Last.fm. |
| get_tag_weekly_chart_listB | Get the week ranges a tag has weekly charts for. Args: tag: The tag name. |
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 59 tools
The vast majority of tools target a clearly distinct entity+action (get_artist, get_similar_tracks, scrobble_tracks, love_track). A few pairs are subtly distinguishable only by a naming suffix convention: get_album_tags (one user's tags) vs get_album_top_tags (community tags), and get_top_tags vs get_chart_top_tags, which read as very similar. The consistent X_tags/X_top_tags scheme mostly saves these from confusion.
Names follow a predictable snake_case verb_noun pattern (get_*, search_*, add_*_tags, remove_*_tag, get_user_*, get_tag_*), which makes the surface scannable. Minor deviations exist, e.g. love_track/unlove_track and start_authentication/finish_authentication, and get_result_page breaks the domain prefix pattern.
59 tools is very heavy and sits at the extreme end; while each maps to a real Last.fm API endpoint, the count imposes a large selection burden on an agent. Many near-mirror families (four get_user_*_top, three get_user_weekly_*_chart, three get_tag_top_*, four get_*_tags) inflate the surface beyond what most tasks need.
Coverage is broad and faithful: artists, albums, tracks, tags, users, geo charts, auth lifecycle, scrobbling, loved tracks, weekly charts, corrections, and a paging helper. Minor gaps remain, such as no library-track or library-album listings to complement get_library_artists, and tag weekly charts provide only the range list without the actual chart data.