关于 Last.fm
Last.fm 是用于访问 Last.fm API 数据的 MCP 服务,面向音乐听众及 AI 客户端。默认提供稳定的只读接口,并可选择启用写入和身份验证工具。
主要功能
- 01艺人、专辑和曲目信息
- 02排行榜、标签与搜索
- 03用户资料和收听记录
- 04可选的标签写入与 scrobbling
- 05stdio 和 Streamable HTTP 传输
适用场景
- 01查询艺人的相似艺人和热门曲目
- 02查看用户最近播放和喜爱的曲目
- 03搜索排行榜和音乐标签
- 04通过写入工具启用 scrobbling
MCP 相关
它将支持的 Last.fm API 方法作为可发现工具提供给 MCP 客户端,支持 stdio 和 Streamable HTTP。修改数据和身份验证工具默认关闭。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e LASTFM_API_KEY -e LASTFM_API_SECRET -e LASTFM_ENABLE_WRITES ghcr.io/ndyakov/lastfm-mcp:0.2.0LASTFM_API_KEY密钥Last.fm API key (https://www.last.fm/api/account/create)LASTFM_API_SECRET密钥Last.fm API secret; only needed for authenticated/write methodsLASTFM_ENABLE_WRITESSet to 1 to enable scrobbling/write tools本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/ndyakov/lastfm-mcp:0.2.0stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
lastfm-mcp
基于 go-lastfm/v2 和 官方 Go MCP SDK 构建的 Last.fm API MCP 服务。
它通过以下传输方式,将 Last.fm 支持的全部接口公开为可发现的 MCP 工具:
- stdio,供本地桌面客户端和命令行客户端使用;
- Streamable HTTP,供本地服务和远程部署使用。
默认启用只读工具。写入、身份验证辅助功能以及不受支持的旧版方法需要显式选择启用。
状态
此项目已准备好首次导入代码库。模块路径为 github.com/ndyakov/lastfm-mcp;如果代码库将使用不同的所有者或名称,请在首次发布前修改此路径。
要求
- Go 1.25 或更高版本
- Last.fm API 帐户
LASTFM_API_KEY- 仅在启用写入工具时需要
LASTFM_API_SECRET和LASTFM_SESSION_KEY
使用 stdio 运行
export LASTFM_API_KEY="your-api-key"
go run ./cmd/lastfm-mcp
MCP 客户端配置示例:
{
"mcpServers": {
"lastfm": {
"command": "/absolute/path/to/lastfm-mcp",
"env": {
"LASTFM_API_KEY": "your-api-key"
}
}
}
}
切勿将凭据放入将提交到代码库的配置文件中。
使用 Streamable HTTP 运行
export LASTFM_API_KEY="your-api-key"
export LASTFM_MCP_TRANSPORT="http"
export LASTFM_MCP_HTTP_ADDR="127.0.0.1:8080"
go run ./cmd/lastfm-mcp
MCP 端点为 http://127.0.0.1:8080/mcp;健康检查使用 GET /healthz。
除非设置了 LASTFM_MCP_HTTP_TOKEN,否则不允许绑定到非回环地址。客户端随后需发送:
Authorization: Bearer <token>
服务器会在 MCP 端点上应用 Go 的跨源保护,并设置保守的 HTTP 超时。请在可信的反向代理中配置 TLS 和生产环境的身份感知身份验证。
配置
| 环境变量 | 默认值 | 用途 |
|---|---|---|
LASTFM_API_KEY | 必填 | Last.fm API 密钥 |
LASTFM_API_SECRET | 空 | 签名/身份验证方法所需 |
LASTFM_SESSION_KEY | 空 | 写入工具所需 |
LASTFM_USER_AGENT | lastfm-mcp/<version> | 发往 Last.fm 的用户代理 |
LASTFM_REQUEST_TIMEOUT | 30s | Last.fm 请求超时时间 |
LASTFM_MCP_TRANSPORT | stdio | stdio 或 http |
LASTFM_MCP_HTTP_ADDR | 127.0.0.1:8080 | HTTP 监听地址 |
LASTFM_MCP_HTTP_PATH | /mcp | Streamable HTTP 端点 |
LASTFM_MCP_HTTP_TOKEN | 空 | HTTP Bearer 令牌;绑定到非回环地址时必填 |
LASTFM_ENABLE_WRITES | false | 注册会修改数据的工具 |
LASTFM_ENABLE_AUTH_TOOLS | false | 注册凭据/会话工具 |
LASTFM_ENABLE_EXPERIMENTAL | false | 注册 Last.fm 公共索引中未列出的旧版方法 |
传输方式、地址、路径和功能开关也可通过等效的命令行标志设置。运行 lastfm-mcp -h 查看详情。
工具覆盖范围
默认情况下,服务器会注册 go-lastfm/v2 支持的所有稳定只读端点:
- 专辑:信息、用户标签、热门标签、搜索;
- 艺人:纠正、信息、相似艺人、用户标签、热门专辑/曲目/标签、搜索;
- 榜单:热门艺人、曲目、标签;
- 地理:热门艺人和曲目;
- 音乐库:艺人;
- 标签:信息、相似标签、热门专辑/艺人/曲目/标签、每周榜单范围;
- 曲目:纠正、信息、相似曲目、用户标签、热门标签、搜索;
- 用户:个人资料、好友、喜爱和最近播放的曲目、个人标签、热门专辑/艺人/曲目/标签、每周榜单和范围。
LASTFM_ENABLE_WRITES=true 会添加专辑/艺人/曲目标签、喜爱/取消喜爱、正在播放和记录播放工具。这些工具需要 API 密钥和会话密钥。
LASTFM_ENABLE_AUTH_TOOLS=true 会添加浏览器令牌、授权 URL、会话交换和移动会话工具。这些工具可能会向 MCP 客户端和模型公开会话凭据;除非确有需要,否则请保持禁用。建议在 MCP 会话之外完成身份验证,并在进程启动时提供 LASTFM_SESSION_KEY。
LASTFM_ENABLE_EXPERIMENTAL=true 会添加旧版标签搜索、城市区域、邻近用户、艺人/曲目热门粉丝以及口味对比工具。Last.fm 可能会在不另行通知的情况下更改或禁用这些功能。
Docker
docker build -t lastfm-mcp .
docker run --rm -p 127.0.0.1:8080:8080 \
-e LASTFM_API_KEY \
-e LASTFM_MCP_TRANSPORT=http \
-e LASTFM_MCP_HTTP_ADDR=0.0.0.0:8080 \
-e LASTFM_MCP_HTTP_TOKEN \
lastfm-mcp
docker compose up --build 使用相同的 HTTP 配置,并从环境中读取值。
开发
go mod tidy
go test -race ./...
go vet ./...
在 go-lastfm/v2 发布之前,请使用一个临时 Go 工作区,其中包含此仓库和相邻的 go-lastfm 检出目录。请勿提交本地 replace 指令。
请参阅 CONTRIBUTING.md、SECURITY.md 和 ROADMAP.md。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。