Skip to main content
Glama
elcachorrohumano

Last.fm MCP Server

README.md
# Last.fm MCP Server

A Model Context Protocol (MCP) server that provides access to Last.fm music data and discovery capabilities.

## Available Tools

### Artist Tools
- `search_artists` - Search for artists by name
- `get_artist_info` - Get detailed artist information and biography
- `get_artist_top_albums` - Get an artist's most popular albums
- `get_artist_top_tracks` - Get an artist's most popular tracks

### Album Tools
- `search_albums` - Search for albums by name
- `get_album_info` - Get detailed album information and tracklist
- `get_album_top_tags` - Get tags associated with an album

### Track Tools
- `search_tracks` - Search for tracks by name
- `get_track_info` - Get detailed track information
- `get_similar_tracks` - Find tracks similar to a given track
- `get_track_top_tags` - Get tags associated with a track

### User Tools
- `get_user_info` - Get user profile information
- `get_user_recent_tracks` - Get a user's recently played tracks
- `get_user_top_artists` - Get a user's most played artists
- `get_user_top_albums` - Get a user's most played albums
- `get_user_top_tracks` - Get a user's most played tracks
- `get_user_loved_tracks` - Get tracks a user has marked as loved

### Chart Tools
- `get_top_artists` - Get global top artists
- `get_top_tracks` - Get global top tracks
- `get_top_tags` - Get popular music tags

### Tag Tools
- `get_tag_info` - Get information about a music tag
- `get_tag_top_artists` - Get top artists for a tag
- `get_tag_top_albums` - Get top albums for a tag
- `get_tag_top_tracks` - Get top tracks for a tag
- `get_tag_weekly_charts` - Get weekly chart data for a tag

### Write Operations (Authentication Required)
- `scrobble_track` - Scrobble a track to user's profile
- `love_track` - Mark a track as loved
- `unlove_track` - Remove love from a track
- `update_now_playing` - Update what's currently playing
- `add_track_tags` - Add tags to a track
- `remove_track_tag` - Remove a tag from a track

### Authentication Tools
- `get_auth_token` - Get authentication token for user login
- `get_auth_session` - Convert token to session for API access

## Setup

### Prerequisites
1. Get Last.fm API credentials at [Last.fm API](https://www.last.fm/api/account/create)
2. Copy `.env.example` to `.env` and add your credentials:
   ```env
   LASTFM_API_KEY=your_actual_api_key_here
   LASTFM_SHARED_SECRET=your_actual_shared_secret_here
   ```

### VS Code/Cursor Setup

#### Option 1: Docker (Recommended)
First build the image:
```bash
docker build -t lastfm-mcp .
```

Then add to your VS Code/Cursor MCP configuration:
```json
{
  "mcpServers": {
    "lastfm-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--env-file",
        "/path/to/your/.env",
        "lastfm-mcp"
      ]
    }
  }
}
```

**Important**: Replace `/path/to/your/.env` with the actual path to your `.env` file.

#### Option 2: UV
Add to your VS Code/Cursor MCP configuration:

```json
{
  "mcpServers": {
    "lastfm-mcp": {
      "command": "/path/to/uv",
      "args": [
        "--directory",
        "/path/to/your/project",
        "run",
        "--env-file",
        ".env",
        "mcp_server.py"
      ]
    }
  }
}
```

**Important**: 
- Replace `/path/to/uv` with the actual path to your UV installation. Run `which uv` in your terminal to find the path (e.g., `/usr/local/bin/uv`, `/home/user/.local/bin/uv`, or just `uv` if it's in your PATH)
- Replace `/path/to/your/project` with the actual absolute path to your project directory

TDQS

B3.4/5.0

Scored across 34 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific resources (e.g., get_artist_info vs. get_album_info), but some overlap exists in 'top' retrieval tools (e.g., get_top_artists vs. get_tag_top_artists) which could cause minor confusion. Descriptions help clarify the scope, but the high number of similar-sounding tools increases cognitive load.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case (e.g., get_artist_info, search_tracks, love_track). The naming is predictable and readable, making it easy to understand each tool's function at a glance.

Tool Count2/5

With 34 tools, this server feels overloaded for a music scrobbling and discovery service. While Last.fm has a broad API, many tools are variations of the same pattern (e.g., get_X_top_Y for different X and Y), creating redundancy that could overwhelm agents and increase selection errors.

Completeness5/5

The tool set comprehensively covers the Last.fm domain, including user actions (scrobble, love, tag), information retrieval (artist, album, track, tag, user), search, and charts. There are no obvious gaps; all major API endpoints appear to be represented with full lifecycle coverage.

Maintenance

ActivityInactive
ResponsivenessNo issues