lastfm-mcp
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.
README
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
- Open Settings -> Connectors -> Add Custom Connector
- Enter
https://lastfm-mcp.com/mcp - 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
- Node.js 18+
- Cloudflare Workers account
- Last.fm API key (create one here)
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
- Fork the repo
- Create a feature branch
- Commit your changes
- Open a pull request
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。