SuperAPI AI 工具集

mcp-lrclib

mcp-lrclib 是一个连接 LRCLIB 歌词数据库的 MCP 服务器,让聊天客户端能够搜索歌曲并读取歌词。LRCLIB 是一个免费开放的歌词数据库,无需 API 密钥或账户即可使用,收录了纯文本歌词和带时间戳的 LRC 同步歌词两种形式。该服务器允许用户按标题、艺术家或专辑搜索曲目,读取纯文本歌词,读取带时间戳的同步歌词行,以及在读取前检查某个版本的元数据信息。它不需要 API 密钥和账户,支持通过 Claude Desktop、Cursor 等标准配置格式的客户端一键安装,也提供无需 npm 的 MCP 捆绑包安装方式。该服务器仅从 lrclib.net 读取数据,不收集用户信息,不写入磁盘,是一个非官方项目,与 LRCLIB 无关联。

访问官网

工具介绍

用途

mcp-lrclib 是一个连接 LRCLIB 歌词数据库的 MCP(模型上下文协议)服务器,用于让聊天客户端搜索歌曲并读取歌词。LRCLIB 是一个免费开放的歌词数据库,由使用者共同构建,无需密钥或账户即可使用。该数据库收录两种形式的歌词:纯文本歌词,以及每一行都带有演唱时间点的 LRC 格式歌词,后者适用于卡拉 OK 显示或歌词面板跟随。曲目按其标题、艺术家、专辑和时长归档,因此同一首歌的不同发行版本会并列存放。

主要能力

该服务器提供以下能力:

  • 按标题、艺术家或专辑搜索曲目,支持自由文本搜索或按字段搜索。
  • 读取一首歌的纯文本歌词。
  • 读取带时间戳的同步歌词行。
  • 在读取歌词前检查某个发行版本的元数据。

需要注意的是,LRCLIB 按元数据归档曲目,因此搜索通过标题、艺术家或专辑来定位歌曲,而歌曲内部记住的某个词无法通过搜索找到。

工具说明

search_tracks:查找元数据匹配的曲目,支持一次自由文本搜索或按字段搜索。同一首歌的多个发行版本会并列返回,可通过专辑和时长区分。输入参数为 query 或三个字段之一。返回内容包含:id(供 get_lyrics 和 get_track 使用)、track_name、artist_name、album_name、duration_seconds(用于区分同一首歌的不同发行版本)、instrumental、has_plain_lyrics 和 has_synced_lyrics(可在请求同步歌词前检查是否存在)、source_url,以及 result_count 和 total_available(应用 limit 之前 LRCLIB 提供的曲目数)。如果曲目归档时缺少专辑或时长,对应字段为 null。搜索结果行不包含歌词内容,需通过 get_lyrics 读取。

get_lyrics:读取一个曲目的歌词,可以是纯文本,也可以是带每行演唱时间点的 LRC 行。长歌词会分片返回,在行边界处截断。返回内容包含:status(ok、instrumental 表示无歌词可唱、no_lyrics 表示归档时无歌词)、track(含 id、标题、艺术家、专辑、时长和 source_url)、plain_lyrics、synced_lyrics(原始 LRC 文本)和 synced_lines({ time_seconds, text } 列表),当分片截断时会有 synced_lines_truncated。读取状态由 paginated_form、total_chars、returned_chars、offset、next_offset 和 truncated 描述:将 next_offset 传回以继续读取,为 null 表示已到末尾。attribution 是展示歌词时应引用的行。status 为 instrumental 即为完整答案。

get_track:根据 id 读取一个曲目的元数据,不读取歌词。用于在请求歌词前确认某个发行版本,或解析之前对话中传来的 id。返回内容包含:track(含搜索行携带的各字段),以及 duration_formatted(m:ss 格式,归档时无时长则为 null)。has_plain_lyrics 和 has_synced_lyrics 说明 get_lyrics 可提供哪些形式。

使用方式

一键安装

支持 Claude Desktop、Cursor 以及任何使用标准配置格式的客户端。需要 Node 24 或更高版本,无需设置任何环境变量。

配置说明:-i 保持标准输入打开(协议传输通道),不设置 -t,因为 TTY 会重写流。容器需要到 lrclib.net 的出站 HTTPS 访问,不需要其他内容:无需卷、端口或凭据。

捆绑包安装(无需 npm)

从最新发布版本下载 mcp-lrclib-2.0.1.mcpb 并打开。支持 MCP 捆绑包的客户端会自动安装,无需 npm,也无需编辑配置文件。捆绑包自带依赖,安装时不会下载任何内容。

可以提出的请求示例

  • “Find me the lyrics of Le Sud by Nino Ferrer.”
  • “Give me the timed lyrics of Bohemian Rhapsody so I can follow along.”
  • “Which version of Hallelujah is on LRCLIB, and how long is each one?”
  • “Read me the second half of those lyrics.”
  • “Does track 3396226 have synced lyrics?”

常规路径是从搜索到读取:search_tracks 给出一个 id,get_lyrics 使用该 id。

配置

每个变量都是可选的,在客户端配置的 env 块中设置。值超出范围会回退到默认值,原因会写到 stderr。

适用场景

适用于需要在聊天客户端或 MCP 兼容客户端中搜索歌曲、读取纯文本或同步歌词的场景,例如跟随卡拉 OK 显示、查看歌词、确认某个发行版本的信息等。

限制

  • 搜索仅通过标题、艺术家或专辑等元数据进行,无法通过歌词内容中的词进行搜索。
  • 需要 Node 24 或更高版本。
  • 容器需要到 lrclib.net 的出站 HTTPS 访问。
  • 该项目为非官方项目,与 LRCLIB 无关联。
  • 歌词属于其作者和出版商,项目不主张任何权利,不附带歌词数据库,不写入磁盘,也不向 LRCLIB 回传内容。

错误处理

每个失败都携带六种代码之一、一条消息,以及在有帮助时给出下一步操作的提示。

作为库使用

读取 LRCLIB 的层可单独发布,带有其节奏控制、缓存和错误处理,不附带协议。search、get 和 getById 分别返回 { data, cached },并抛出携带六种代码之一的错误。两次请求之间的最小间隔同样适用于此。

节奏与署名

请求逐个发出,之间有最小间隔,无论服务器如何配置该下限都保持不变。User-Agent 始终以项目标识和一个可联系到人的地址结尾。LRCLIB 是免费服务,公开发布其 API 供机器读取,该服务器按需逐次调用读取,以响应你的请求。

每个结果都携带艺术家、标题及其 LRCLIB 页面地址,get_lyrics 携带 attribution,将这三者写成一行。

隐私

该服务器不收集关于你的任何信息,也不向其作者发送任何内容。它运行在你的机器上,仅联系 lrclib.net,运行时将答案保存在内存中,不写入磁盘。PRIVACY.md 说明了请求携带的内容以及哪些设置会改变这些。

测试

测试针对生成的固定数据运行,不发起网络请求。实时测试套件 npm run test:live 对每条路由发起一次请求,每晚针对服务本身运行。

许可证

MIT,参见 LICENSE。歌词属于其作者和出版商,数据库属于 LRCLIB 及其贡献者。