mcpField
M
mcp-lyricscom

mcp-lyricscom

本地服务
github.com游戏娱乐0今天更新

关于 mcp-lyricscom

mcp-lyricscom 将 lyrics.com 歌词目录接入聊天客户端,可按歌词片段或歌名、歌手搜索歌曲,并分段读取歌词。无需 API 密钥或账户。

主要功能

  1. 01按歌词文字搜索歌曲
  2. 02按歌名和歌手搜索
  3. 03分段读取完整歌词
  4. 04定位歌词中指定词语

适用场景

  1. 01凭记得的歌词片段寻找歌曲
  2. 02按歌名和歌手查找歌词
  3. 03逐段阅读较长歌词
  4. 04确认某个词出现在歌词哪一行

MCP 相关

作为 MCP 服务,它向客户端提供歌词搜索、歌曲搜索和歌词读取工具。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
npmmcp-lyricscom2.1.0
mcpbmcp-lyricscom-2.1.0.mcpb2.1.0

工具

3

收录的工具列表 · 更新于 今天

参数类型必填说明
pageinteger否lyrics.com 上的结果页。每页最多包含 24 条原始结果。
limitinteger否此页最多返回的歌曲数。
querystring是要在歌词中查找的单词或简短短语,例如 'autrefois'。
verifyenum否如何确认查询词确实出现在歌词中。'snippet' 检查 lyrics.com 已返回的摘录,不产生额外开销。'full' 获取最多 5 个歌曲页面并检查完整歌词;此操作较慢,且可能触发速率限制。'none' 禁用筛选。snippet | full | none
include_excerptboolean否在每条结果中包含匹配的歌词行摘录。

详细介绍

mcp-lyricscom

npm CI license MCP Registry Glama M8ven LobeHub Install in Cursor Install in VS Code

lyrics.com 是一个大型的公开歌词目录。 它按照歌曲标题、艺人、所属专辑和年份收录歌曲,并保存歌词原文。它的搜索功能也能在歌词原文中查找。

此服务可将聊天客户端连接到该目录。你可以根据记得的一句歌词搜索歌曲, 也可以按标题和艺人搜索,并分段阅读某首歌曲的歌词,同时在文本中定位 你要查找的歌词。无需 API 密钥或账户。

Version française


安装

一键安装

Install in Cursor Install in VS Code

Claude Code

claude mcp add lyricscom -- npx -y mcp-lyricscom

Claude Desktop、Cursor 和任何使用标准配置格式的客户端

{
  "mcpServers": {
    "lyricscom": {
      "command": "npx",
      "args": ["-y", "mcp-lyricscom"]
    }
  }
}

需要 Node 24 或更高版本,无需设置环境变量。

使用 Docker
{
  "mcpServers": {
    "lyricscom": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-lyricscom:2.0.1"]
    }
  }
}

-i 会保持 stdin 开启,协议通过 stdin 传输;不使用 -t,因为 TTY 会重写数据流。容器只需能通过 HTTPS 访问 www.lyrics.com,除此之外无需任何配置:不需要卷、端口或凭据。

打包安装,无需 npm

从最新版本 下载 mcp-lyricscom-2.0.1.mcpb 并打开。支持 MCP bundles 的客户端会自动安装,无需 npm,也无需编辑配置文件。此 bundle 包含其依赖项,因此安装时不会下载任何内容。

你可以这样提问

  • “哪首歌里有‘I've got a hand for you’这句歌词?”
  • “帮我找 Glen Campbell 演唱的 Wichita Lineman 的歌词。”
  • “给我读一下这段歌词的后半部分。”
  • “这首歌的哪个地方出现了 ‘lineman’ 这个词?”
  • “这首歌收录在哪些专辑中?”

常规流程是先搜索,再阅读:搜索结果中的一行会包含一个 id,而 get_lyrics 使用这个 id。

工具

工具功能说明
search_lyrics根据歌词中的一句歌词查找歌曲。
search_songs按标题查找歌曲,并可按艺人缩小范围。
get_lyrics一次读取一首歌曲的一部分歌词。
search_lyrics

根据歌词中的内容查找歌曲。该网站的排序比较宽松,因此在返回结果前会验证匹配项。

参数类型必填功能说明
querystring,1 到 120 个字符是要查找的歌词句子或片段。
limitinteger,1 到 50,默认值为 10否返回的行数。
pageinteger,1 到 20,默认值为 1否返回哪一页结果。
verifysnippet、full 或 none,默认值为 snippet否如何确认歌词中确实包含所查内容。
include_excerptboolean,默认值为 true否在每条结果中附带匹配的歌词。

verify 决定如何评估一条结果。snippet 会检查网站已返回的摘录,不会产生额外开销。full 会获取最多五个歌曲页面并检查完整歌词,这种方式较慢,也可能导致触发速率限制。none 则直接返回网站排序后的结果,不进行检查。

返回内容: 每行都包含 id,可供 get_lyrics 使用;title;artist;album 和 year,如果目录中未注明,则为 null;source_url;以及匹配的歌词 excerpt。raw_result_count 表示网站返回的结果数,filtered_out 表示检查后移除的结果数,两者可以反映排序有多宽松。可通过 has_more 和 next_page 继续获取结果。

search_songs

按标题查找歌曲,并可按艺人缩小范围。

参数类型必填功能说明
titlestring,1 到 120 个字符是歌曲标题或标题片段。
artiststring,最多 120 个字符否仅保留标注为该艺人的歌曲。
limitinteger,1 到 50,默认值为 10否返回的行数。
pageinteger,1 到 20,默认值为 1否返回哪一页结果。
matchloose 或 strict,默认值为 loose否艺人名称需要匹配得多严格。

返回内容: 返回 search_lyrics 所提供的结果行,其中 artist_filter 会复述请求的筛选条件,filtered_out 则统计因艺人限制而移除的结果数。strict 仅保留名称与输入完全一致的艺人;loose 则接受写法不同的名称。

get_lyrics

读取一首歌曲的歌词。较长的歌词会分段提供。

参数类型必填作用
id字符串二选一搜索结果行中包含的歌曲 ID。
urllyrics.com URL二选一歌曲页面的地址。
max_chars整数,200 到 20000,默认值为 6000否此次调用要提供的文本字符数。
offset整数,0 或更大,默认值为 0否恢复读取时使用的字符偏移量。
highlight字符串,最多 120 个字符否要在文本中查找的词语。

返回内容:status,读取状态;如果网站上的页面没有歌词,则为 ok 或 no_lyrics;title、artist 和 source_url;以及歌词片段本身 lyrics。 读取情况由 total_chars、returned_chars、offset、next_offset 和 truncated 描述;将 next_offset 传回即可继续读取,其中 null 表示已到末尾。line_count 统计片段中的行数;highlight 会针对每个词语 返回其是否 found,以及所在的 line_number;如果未找到,则为 null。

配置

所有变量均为可选项。请在客户端配置的 env 块中设置。

变量默认值作用
LYRICSCOM_USER_AGENT项目标识向网站标识你的应用,并提供可联系到相关人员的地址。
LYRICSCOM_MIN_INTERVAL_MS1100两次请求之间的间隔,范围为 500 到 60000。
LYRICSCOM_TIMEOUT_MS15000单次请求的时限,范围为 1000 到 120000。
LYRICSCOM_MAX_RETRIES3临时故障后的重试次数,范围为 0 到 10。
LYRICSCOM_CACHE_TTL_MS900000答案在内存中的保留时长,范围为 0 到 86400000。
LYRICSCOM_CACHE_MAX_ENTRIES200同时保存在内存中的答案数量,范围为 0 到 10000。
LYRICSCOM_LOG_LEVELerror日志级别,可选 silent、error、info 或 debug;日志写入 stderr。

超出范围的值将回退为默认值,原因会写入 stderr。

关于 User-Agent。 此服务会标识项目并链接到其代码仓库,网站会显示这些信息。 网站确实会直接拒绝某些通用工具 Agent:普通的 curl 会收到 403。 blocked_user_agent 错误表示身份标识被拒绝,你可以通过 LYRICSCOM_USER_AGENT 设置自选标识。如何填写由你决定,并由你自行负责。

错误

每次失败都会附带以下错误代码之一、一条消息,以及在有帮助时说明下一步操作的提示。

代码发生了什么如何处理
not_found网站已响应,但没有这首歌。使用 search_songs 检查 ID。
invalid_input请求发出前,参数就被拒绝了。阅读消息,其中会指出具体参数。
throttled网站要求此客户端减慢请求速度。等待一会儿,然后使用相同参数再次调用。这首歌仍然存在。
blocked_user_agent网站拒绝了此客户端发送的身份标识。设置 LYRICSCOM_USER_AGENT。
parse_failure页面已加载,但预期内容不存在。在问题跟踪器中报告。
network_error请求未能完成。稍后重试。
timeout请求超时。增大 LYRICSCOM_TIMEOUT_MS,或请求较小的 max_chars。

throttled 和 blocked_user_agent 是此服务表示拒绝提供服务的两种错误代码;调用方读取多个来源时,会将它们统一归为其所称的速率限制。

作为库使用

读取网站的这一层单独发布,包含自己的请求间隔控制、缓存和错误处理,并且不附带任何协议。

import { LyricsComClient } from "mcp-lyricscom/client";

const client = new LyricsComClient();
const { data, cached } = await client.getSong({ id: "1234567" });
console.log(data.title, data.artist, cached);

search 和 getSong 都会返回 { data, cached },并抛出携带上述错误代码之一的错误。这里同样会确保两次请求之间至少间隔规定的时间。

请求间隔与署名

请求会逐个发送,且间隔至少一秒;无论服务如何配置,两次请求之间都会至少间隔半秒。verify: "full" 搜索最多会获取五个歌曲页面,这是此服务中开销最大的操作。

每个结果都包含艺人、标题和歌曲页面地址。歌曲歌词由其作者和出版商创作。本项目不主张拥有这些歌词的任何权利,不附带歌词数据库,也不会将任何内容写入磁盘。

此 MCP 服务是一个非官方项目,与 lyrics.com 没有任何关联。

隐私

此服务不会收集任何关于你的信息,也不会向其作者发送任何内容。它在你的机器上运行,只会连接 www.lyrics.com,运行期间将结果保存在内存中,不会将任何内容写入磁盘。 PRIVACY.md 说明了请求会携带哪些信息,以及哪些设置会影响这些信息。

开发

npm install
npm run build:fixtures
npm test
npm run check

测试使用生成的样例文件运行,不会发出网络请求。实时测试套件 npm run test:live 会针对每个路由发送一个请求,并每晚直接对网站运行测试。

贡献

Bug、问题和想法请提交到 问题跟踪器。欢迎提交拉取请求;先创建问题有助于商定变更方案。请参阅 CONTRIBUTING.md。

许可证

MIT,详见 LICENSE。歌词归其作者和出版商所有。


mcp-lyricscom(法语)

English version

lyrics.com 是一个大型的公开歌词目录。它会按歌曲标题、艺人、发行专辑和年份对歌曲进行分类,并收录歌词原文。它支持在歌词内容中搜索。

此服务将对话客户端连接到该目录。你可以根据记得的歌词搜索歌曲,按标题和艺人搜索,也可以分段阅读歌曲歌词,并在文本中定位搜索词。无需 API 密钥,也无需账号。

安装

一键安装

Install in Cursor Install in VS Code

Claude Code

claude mcp add lyricscom -- npx -y mcp-lyricscom

Claude Desktop、Cursor,以及所有采用标准配置格式的客户端

{
  "mcpServers": {
    "lyricscom": {
      "command": "npx",
      "args": ["-y", "mcp-lyricscom"]
    }
  }
}

需要 Node 24 或更高版本,无需设置环境变量。

使用 Docker
{
  "mcpServers": {
    "lyricscom": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-lyricscom:2.0.1"]
    }
  }
}

-i 会让标准输入保持打开,这是协议通信通道;省略 -t 是因为 TTY 会改写数据流。容器只需能通过 HTTPS 访问 www.lyrics.com,不需要其他配置:无需卷、无需端口、无需凭据。

Bundle,无需 npm

从最新发布版本下载 mcp-lyricscom-2.0.1.mcpb 并打开。支持 MCP bundle 的客户端会自动安装,无需 npm,也无需修改配置文件。bundle 包含所需依赖,因此安装时不会下载任何内容。

可以提出哪些请求

  • “哪首歌里有‘I’ve got a hand for you’这句歌词?”
  • “帮我找一下 Glen Campbell 演唱的 Wichita Lineman 的歌词。”
  • “读一下这段歌词的后半部分。”
  • “这首歌里‘lineman’一词出现在哪里?”
  • “这首歌收录在哪些专辑中?”

通常的流程是先搜索再阅读:某一行会提供一个 id,然后 get_lyrics 会使用这个标识符。

工具

工具功能
search_lyrics根据歌词中的某一句查找歌曲。
search_songs按标题查找歌曲,并可按艺人缩小范围。
get_lyrics分段读取歌曲歌词。
search_lyrics

根据歌词中的词句查找歌曲。该网站的排序较宽泛,因此会在返回结果前验证匹配项。

参数类型必填作用
query字符串,1 至 120 个字符是要搜索的歌词句子或其中一部分。
limit整数,1 至 50,默认值为 10否返回的行数。
page整数,1 至 20,默认值为 1否返回第几页。
verifysnippet、full 或 none,默认值为 snippet否如何确认歌词中包含这些词句。
include_excerpt布尔值,默认值为 true否在每一行中附上匹配的歌词句子。

verify 决定一行结果是否有效。snippet 会验证网站已返回的摘录,不会产生额外开销。full 最多获取五页歌曲并验证完整歌词;此方式较慢,也可能触发限流。none 则直接返回网站排序后的结果,不进行验证。

**返回:**包含 id 的行,可供 get_lyrics 使用;以及 title、artist、album 和 year(目录未提供信息时为 null)、source_url 和匹配的歌词句子 excerpt。raw_result_count 表示网站返回的行数,filtered_out 表示验证时移除的行数;两者结合可反映排序结果的宽泛程度。可通过 has_more 和 next_page 继续获取结果。

search_songs

按标题查找歌曲,并可按艺术家缩小范围。

参数类型必填作用
title字符串,1 至 120 个字符是歌曲标题或其中一部分。
artist字符串,最多 120 个字符否仅保留该艺术家的歌曲。
limit整数,1 至 50,默认值为 10否返回的行数。
page整数,1 至 20,默认值为 1否返回第几页。
matchloose 或 strict,默认值为 loose否艺术家匹配的严格程度。

**返回:**与 search_lyrics 返回的行相同,另含 artist_filter(回显请求的筛选条件)和 filtered_out(因艺术家筛选而移除的行数)。strict 仅保留名称与输入完全匹配的艺术家;loose 则接受名称写法不同的艺术家。

get_lyrics

读取歌曲歌词。较长的歌词会分段提供。

参数类型必填作用
id字符串二选一歌词行所带的标识符。
urllyrics.com 地址二选一歌曲页面的地址。
max_chars整数,200 到 20000,默认值为 6000否本次调用提供的文本字符数。
offset整数,0 或更大,默认值为 0否继续读取的字符位置。
highlight字符串,最多 120 个字符否要在文本中查找的词语。

返回内容: status,取值为 ok 或 no_lyrics,后者表示网站上有该页面但没有歌词;title、artist 和 source_url;以及 lyrics,即当前返回的片段。读取信息由 total_chars、returned_chars、offset、next_offset 和 truncated 描述:提供 next_offset 即可继续读取,null 表示已到末尾。line_count 统计当前片段的行数;highlight 会针对每个词说明是否 found,以及对应的 line_number;未找到时为 null。

配置

所有变量均为可选项。可在客户端配置的 env 块中设置。

变量默认值作用
LYRICSCOM_USER_AGENT项目标识向网站标识您的应用,并提供可联系人员的地址。
LYRICSCOM_MIN_INTERVAL_MS1100两次请求之间的间隔,范围为 500 到 60000。
LYRICSCOM_TIMEOUT_MS15000请求超时时间,范围为 1000 到 120000。
LYRICSCOM_MAX_RETRIES3临时失败后的重试次数,范围为 0 到 10。
LYRICSCOM_CACHE_TTL_MS900000响应在内存中的保留时长,范围为 0 到 86400000。
LYRICSCOM_CACHE_MAX_ENTRIES200同时保留在内存中的响应数量,范围为 0 到 10000。
LYRICSCOM_LOG_LEVELerrorsilent、error、info 或 debug,日志写入错误输出。

超出范围的值会回退为默认值,并将原因写入错误输出。

关于 User-Agent。 此服务会标识项目并指向其代码库,网站允许此类请求。但网站会拒绝某些通用工具的 User-Agent:直接使用 curl 会收到 403 错误。blocked_user_agent 错误表示发送的标识遭到拒绝;您可以通过 LYRICSCOM_USER_AGENT 设置自选标识。对此处填写的内容,您需自行决定并承担相应责任。

错误

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

代码发生了什么该怎么做
not_found网站已响应,但没有这首歌。使用 search_songs 检查标识符。
invalid_input参数在发出任何请求前就被拒绝了。阅读消息,其中会指出相关参数。
throttled网站要求此客户端放慢速度。等一会儿,然后使用相同参数重试。这首歌仍然存在。
blocked_user_agent网站拒绝了此客户端发送的身份信息。设置 LYRICSCOM_USER_AGENT。
parse_failure页面已加载,但缺少预期内容。在问题跟踪页报告此问题。
network_error请求未能完成。稍后重试。
timeout请求超时。增大 LYRICSCOM_TIMEOUT_MS,或请求较小的 max_chars。

throttled 和 blocked_user_agent 是此服务用来表示拒绝提供服务的两个名称;读取多个来源的调用方会将它们归为其所称的速率限制。

作为库使用

读取网站的这一层单独发布,包含自身的速率控制、缓存和错误处理,不绑定任何协议。

import { LyricsComClient } from "mcp-lyricscom/client";

const client = new LyricsComClient();
const { data, cached } = await client.getSong({ id: "1234567" });
console.log(data.title, data.artist, cached);

search 和 getSong 均会返回 { data, cached },并抛出带有上述代码之一的错误。两次请求之间的最小间隔在这里同样适用。

速率控制与署名

请求会逐个发出,且间隔至少一秒;无论如何配置,最小间隔都为半秒。使用 verify: "full" 的搜索最多会查询五个歌曲页面,这是此服务执行的成本最高的操作。

每个结果都包含艺术家、标题和歌曲页面地址。歌词属于其作者和出版商。本项目不主张拥有歌词的任何权利,不收录任何歌词数据库,也不会向磁盘写入任何内容。

此 MCP 是一个非官方项目,与 lyrics.com 无关联。

隐私

此服务不会收集您的任何信息,也不会向其作者发送任何信息。它在您的计算机上运行,只会连接 www.lyrics.com,运行期间将响应保存在内存中,并且不会向磁盘写入任何内容。PRIVACY.md 说明了请求会携带哪些信息,以及哪些设置会改变这一点。

开发

npm install
npm run build:fixtures
npm test
npm run check

测试使用生成的 fixtures 运行,不会发出任何请求。实时测试套件 npm run test:live 会为每个路由发出一个请求,并且每晚直接针对网站运行。

贡献

问题、疑问和想法都可以在问题跟踪页提出。欢迎提交修改建议;先创建工单有助于就修改形式达成一致。请参阅 CONTRIBUTING.md。

许可证

MIT,详见 LICENSE。歌词属于其作者和出版商。

评论

支持 Markdown

第一次接触 MCP?

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

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