mcpField
L
Last.fm

Last.fm

本地服务
github.com/ndyakov游戏娱乐03 周前更新

关于 Last.fm

Last.fm 是用于访问 Last.fm API 数据的 MCP 服务,面向音乐听众及 AI 客户端。默认提供稳定的只读接口,并可选择启用写入和身份验证工具。

主要功能

  1. 01艺人、专辑和曲目信息
  2. 02排行榜、标签与搜索
  3. 03用户资料和收听记录
  4. 04可选的标签写入与 scrobbling
  5. 05stdio 和 Streamable HTTP 传输

适用场景

  1. 01查询艺人的相似艺人和热门曲目
  2. 02查看用户最近播放和喜爱的曲目
  3. 03搜索排行榜和音乐标签
  4. 04通过写入工具启用 scrobbling

MCP 相关

它将支持的 Last.fm API 方法作为可发现工具提供给 MCP 客户端,支持 stdio 和 Streamable HTTP。修改数据和身份验证工具默认关闭。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ndyakov-lastfm": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"LASTFM_API_KEY",
"-e",
"LASTFM_API_SECRET",
"-e",
"LASTFM_ENABLE_WRITES",
"ghcr.io/ndyakov/lastfm-mcp:0.2.0"
],
"env": {
"LASTFM_API_KEY": "<LASTFM_API_KEY>",
"LASTFM_API_SECRET": "<LASTFM_API_SECRET>",
"LASTFM_ENABLE_WRITES": "<LASTFM_ENABLE_WRITES>"
}
}
}
}
启动命令docker run -i --rm -e LASTFM_API_KEY -e LASTFM_API_SECRET -e LASTFM_ENABLE_WRITES ghcr.io/ndyakov/lastfm-mcp:0.2.0
需要配置的环境变量
LASTFM_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 methods
LASTFM_ENABLE_WRITESSet to 1 to enable scrobbling/write tools

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/ndyakov/lastfm-mcp:0.2.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

lastfm-mcp — Last.fm MCP 服务

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_AGENTlastfm-mcp/<version>发往 Last.fm 的用户代理
LASTFM_REQUEST_TIMEOUT30sLast.fm 请求超时时间
LASTFM_MCP_TRANSPORTstdiostdio 或 http
LASTFM_MCP_HTTP_ADDR127.0.0.1:8080HTTP 监听地址
LASTFM_MCP_HTTP_PATH/mcpStreamable HTTP 端点
LASTFM_MCP_HTTP_TOKEN空HTTP Bearer 令牌;绑定到非回环地址时必填
LASTFM_ENABLE_WRITESfalse注册会修改数据的工具
LASTFM_ENABLE_AUTH_TOOLSfalse注册凭据/会话工具
LASTFM_ENABLE_EXPERIMENTALfalse注册 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。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。