AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Lastfm Mcp

mcp-rianvdm-lastfm-mcp · by rianvdm

An MCP server that provides seamless access to a user's Last.fm listening data and music information via AI assistants like Claude.

No reviews yet
0 installs
39 views
0.0% view→install

Install

$ agentstack add mcp-rianvdm-lastfm-mcp

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-rianvdm-lastfm-mcp)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Lastfm Mcp? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Last.fm MCP Server

A Model Context Protocol (MCP) server for Last.fm. Gives AI assistants access to your listening history, music discovery, and detailed track/artist/album information.

Runs on Cloudflare Workers with OAuth 2.0 authentication. Public tools (track info, artist info, similar artists) work without signing in -- connect your Last.fm account to access personal listening data.

Quick start

Claude.ai / Claude Desktop

  1. Open Settings -> Connectors -> Add Custom Connector
  2. Enter https://lastfm-mcp.com/mcp
  3. Sign in to Last.fm when prompted

Claude Code

claude mcp add --transport http lastfm "https://lastfm-mcp.com/mcp"

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "lastfm": {
      "serverUrl": "https://lastfm-mcp.com/mcp"
    }
  }
}

Other MCP clients

For clients that don't support remote servers directly (Continue.dev, Zed, etc.), use mcp-remote:

{
  "mcpServers": {
    "lastfm": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://lastfm-mcp.com/mcp"]
    }
  }
}

MCP Inspector

npx @modelcontextprotocol/inspector https://lastfm-mcp.com/mcp

Authentication

The server uses OAuth 2.0. When you connect from a supported client, your browser opens to Last.fm to authorize access. Tokens persist across sessions.

Public tools work without signing in. You only need to connect your account for personal listening data.

Available tools

Public tools

| Tool | Description | | ---- | ----------- | | get_track_info | Detailed information about a track | | get_artist_info | Artist information and bio | | get_album_info | Album details and track listing | | get_artist_top_tracks | An artist's globally most-played tracks | | get_artist_top_albums | An artist's globally most-played albums | | get_similar_artists | Artists similar to a given artist | | get_similar_tracks | Tracks similar to a given track | | ping | Test connectivity | | server_info | Server status and capabilities | | lastfm_auth_status | Check authentication status |

Personal tools (requires sign-in)

| Tool | Description | | ---- | ----------- | | get_recent_tracks | Recent listening history (paginated) | | get_top_artists | Top artists by time period | | get_top_albums | Top albums by time period | | get_top_tracks | Top tracks by time period | | get_loved_tracks | Loved/favorited tracks | | get_user_info | Last.fm profile information | | get_listening_stats | Listening statistics | | get_music_recommendations | Personalized recommendations |

Temporal queries (requires sign-in)

| Tool | Description | | ---- | ----------- | | get_weekly_chart_list | Available historical time periods | | get_weekly_artist_chart | Artist charts for a specific time period | | get_weekly_track_chart | Track charts for a specific time period |

Good for questions like "when did I start listening to Led Zeppelin?" or "what was I into last March?"

Resources

The server exposes MCP resource URIs:

lastfm://user/{username}/recent          # Recent tracks
lastfm://user/{username}/top-artists     # Top artists
lastfm://user/{username}/top-albums      # Top albums
lastfm://user/{username}/loved           # Loved tracks
lastfm://user/{username}/profile         # User profile
lastfm://track/{artist}/{track}          # Track info
lastfm://artist/{artist}                 # Artist info
lastfm://album/{artist}/{album}          # Album info
lastfm://artist/{artist}/similar         # Similar artists
lastfm://track/{artist}/{track}/similar  # Similar tracks

Prompts

| Prompt | Description | Arguments | | ------ | ----------- | --------- | | listening_insights | Analyze listening habits and patterns | username, period? | | music_discovery | Discover music based on listening history | username, genre? | | track_analysis | Detailed analysis of a track | artist, track | | album_analysis | Detailed analysis of an album | artist, album | | artist_analysis | Detailed analysis of an artist | artist | | listening_habits | Summarize listening habits | username, timeframe? |

Development

Prerequisites

Local setup

git clone https://github.com/rianvdm/lastfm-mcp.git
cd lastfm-mcp
npm install

Create .dev.vars:

LASTFM_API_KEY=your_api_key
LASTFM_SHARED_SECRET=your_shared_secret
JWT_SECRET=your_jwt_secret
npm run dev

Test with the inspector:

npx @modelcontextprotocol/inspector http://localhost:8787/mcp

Deployment

Set production secrets:

echo "your_api_key" | wrangler secret put LASTFM_API_KEY --env production
echo "your_shared_secret" | wrangler secret put LASTFM_SHARED_SECRET --env production
echo "your_jwt_secret" | wrangler secret put JWT_SECRET --env production

Deploy:

npm run deploy:prod

Testing

npm test
npm run typecheck
npm run lint

Architecture

  • Runtime: Cloudflare Workers
  • Protocol: MCP (streamable HTTP)
  • Auth: OAuth 2.0 (RFC 9728)
  • Storage: Cloudflare KV for sessions, tokens, and caching
  • API: Last.fm Web API v2.0

Endpoints

| Endpoint | Purpose | | -------- | ------- | | /mcp | MCP JSON-RPC endpoint | | /authorize | OAuth 2.0 authorization | | /.well-known/oauth-authorization-server | OAuth server metadata | | /.well-known/oauth-protected-resource | OAuth resource metadata |

Contributing

  1. Fork the repo
  2. Create a feature branch
  3. Commit your changes
  4. Open a pull request

License

MIT

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.