关于 mcp-bideetmusique
mcp-bideetmusique 让 MCP 客户端探索 Bide & Musique 的法国冷门歌曲目录。它一次按一个字段搜索,并可读取唱片详情、艺人唱片目录、随机条目和近期新增内容。
主要功能
- 01按演唱者、标题、作者、歌词、厂牌或年份搜索
- 02读取唱片详情和现有歌词
- 03查看艺人资料及其唱片目录
- 04随机抽取歌曲
- 05列出近期编目的歌曲
适用场景
- 01按演唱者或标题查找歌曲
- 02查询歌曲的作者、厂牌和年份
- 03浏览某位艺人的目录
- 04探索随机歌曲或近期新增唱片
MCP 相关
向 MCP 客户端提供搜索、唱片和艺人查询、随机抽取及近期歌曲列表工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
5收录的工具列表 · 更新于 今天
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | integer | 否 | 要读取的结果页码。响应会注明网站返回的页码。 |
| limit | integer | 否 | 从该页返回的歌曲数上限。 |
| query | string | 是 | 要搜索的法语内容,例如 'Pierre Bachelet' 或 'vacances'。 |
| search_type | enum | 是 | 要搜索的轴:'performer' 表示唱片署名的艺人,'title' 表示歌曲名称,'writer' 表示作词或作曲者,'lyrics' 表示歌曲演唱的歌词,'label' 表示发行唱片的厂牌,'year' 表示唱片印制的年份。'year' 轴仅接受一个四位数年份,不接受其他内容:网站会忽略该轴上的其他词语,而不会据此筛选。performer | title | writer | lyrics | label | year |
详细介绍
mcp-bideetmusique
Bide & Musique 是一家法国网络电台,也是它播放的唱片收藏。这个收藏由运营电台的志愿者协会手工编目,主题是被遗忘的歌曲:失败之作、新奇唱片、电视主题曲,以及无人再版的单曲。唱片页面包含表演者、词曲作者、年份、唱片公司及其目录编号、封套、时长、电台自己的排行榜名次,以及听众转录的歌词。
此服务将聊天客户端连接到这个收藏。你可以一次按一个维度搜索,例如表演者、标题、作者、歌词、唱片公司或年份;查看一张唱片的完整信息;查看网站收录的艺人资料及其唱片目录;随机抽取一张唱片;还可以查看刚刚编目的内容。无需 API 密钥或账户。
安装
一键安装
Claude Code
claude mcp add bideetmusique -- npx -y mcp-bideetmusique
Claude Desktop、Cursor 以及任何使用标准配置格式的客户端
{
"mcpServers": {
"bideetmusique": {
"command": "npx",
"args": ["-y", "mcp-bideetmusique"]
}
}
}
需要 Node 24 或更高版本,无需设置环境变量。
使用 Docker
{
"mcpServers": {
"bideetmusique": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-bideetmusique:2.0.1"]
}
}
}
-i 会保持 stdin 打开,协议通过它传输;省略 -t,因为 TTY 会改写数据流。容器只需能够通过 HTTPS 向外连接到 www.bide-et-musique.com,除此之外不需要任何东西:无需卷、端口或凭据。
使用 Bundle,无需 npm
从最新发布版本下载
mcp-bideetmusique-2.0.1.mcpb 并打开。支持 MCP bundles 的客户端会自行安装,无需 npm,也无需编辑配置文件。Bundle 包含其依赖项,因此安装时不会下载任何内容。
可以询问的内容
- « Bide & Musique 中有哪些 Jacques Dutronc 的作品? »
- "哪些歌曲的歌词中提到了潜艇?"
- "读一下那张唱片的信息:唱片公司、年份、创作者。"
- "从收藏中随机播放一首给我听。"
- "最近编目了哪些内容?"
通常的流程是先搜索,再查看唱片:每一行都包含一个 song_id,然后由
get_song 读取该唱片。
工具
| 工具 | 功能 |
|---|---|
search_songs | 沿一个维度搜索收藏内容。 |
get_song | 完整读取一条记录,包括歌词。 |
get_artist | 读取一位艺术家及收藏中该艺术家的唱片。 |
get_random_song | 随机抽取一条记录。 |
list_new_songs | 读取收藏中刚刚编目的内容。 |
search_songs
沿一个指定的维度搜索:每个维度回答的问题都不同,在一个维度上得到的答案并不能说明其他维度的情况。某个名字作为表演者搜索不到,也可能是歌曲标题。
| 参数 | 类型 | 必填 | 功能 |
|---|---|---|---|
query | 字符串,最多 200 个字符 | 是 | 在该维度上要查找的内容。 |
search_type | performer、title、writer、lyrics、label 或 year | 是 | 搜索所使用的维度。 |
page | 整数,1 到 200,默认值为 1 | 否 | 要读取的结果页。 |
limit | 整数,1 到 50,默认值为 20 | 否 | 返回的结果行数。 |
search_type | 查找内容 |
|---|---|
performer | 唱片上署名的艺术家 |
title | 歌曲名称 |
writer | 歌曲的创作者或作曲者 |
lyrics | 歌曲演唱的歌词 |
label | 唱片发行的唱片公司 |
year | 唱片上标注的年份 |
year 维度只接受一个四位数年份,不接受其他内容:输入其他词语时,网站会直接丢弃,而不是据此筛选。多个关键词会以 AND 方式组合,并且每个关键词都在词语内部匹配,因此每增加一个词,搜索范围就会缩小;无论网站自身的表单如何处理,引号中的短语都不会返回任何结果。
**返回内容:**包含 song_id 的结果行,可供 get_song 使用;以及 title、url 和 artist。total_matches 是网站显示的匹配总数,统计所有页面上的匹配歌曲,因此可能多于单页的结果行数。page_served 是网站实际返回的页面:如果请求的页码超过最后一页,网站会返回最后一页而不报错,因此应读取该值,而不要假定返回的是所请求的页码。网站没有显示 page_count 和 has_more_pages 时,它们的值为 null。
get_song
完整读取一条记录。
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
song_id | string,最多 20 个字符 | 是 | 搜索结果行中包含的 ID。 |
include_lyrics | boolean,默认值为 true | 否 | 页面上有转录歌词时,返回这些歌词。 |
返回内容: title、artist、credited_performer、year、writers、
duration(包含记录上原样印出的文本及其 precision)、
labels(每个厂牌对应一个条目)、catalogue_reference、presentation、
sleeve_credits、image_url、作为 ISO 日期的 added_on、电台的排行榜名次、
favourites 和 comments。标题、艺人和时长始终会给出;其他信息在某些记录中缺失时会返回
null,而不会猜测;页面未显示计数器时,其值为未知,而不是零。lyrics.available 表示页面是否提供转录歌词,lyrics.text 则包含歌词内容以及记录歌词的
transcriber。
get_artist
读取馆藏中有关一位艺人的信息及其记录。
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
artist_id | string,最多 20 个字符 | 是 | 记录中包含的艺人 ID。 |
limit | integer,1 到 200,默认值为 100 | 否 | 返回该艺人的记录数。 |
返回内容: name、aliases、surname、first_name、nationality、
birth_date、presentation、see_also、links 和 photo_url;页面未注明的内容会是
null 或空值。discography 包含该艺人的记录,每条记录都带有可用于 get_song 的
song_id、title、url、year 以及电台播放该记录的次数。discography_count 统计返回的记录数,
songs_on_page 则统计页面上有多少条记录,因此可以看出唱片目录是否被截断。
get_random_song
从网站提供的 ID 范围内,随机抽取一条无人选择过的记录。适用于浏览馆藏,而非查询特定歌曲。
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
include_lyrics | boolean,默认值为 true | 否 | 页面上有转录歌词时,返回这些歌词。 |
返回内容: get_song 返回的记录。
list_new_songs
读取馆藏最近编目的内容。
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
limit | integer,1 到 50,默认值为 20 | 否 | 返回的行数。 |
返回内容: 各行包含 song_id、从信息流发布的行中读取的 title、artist_name、
listed_as、url 和 published_at。entries_in_feed 是信息流中的条目数量,这是一个固定值,
并不代表馆藏中的记录数量。
配置
所有变量均为可选项。在客户端配置的 env 块中设置。
| 变量 | 默认值 | 作用 |
|---|---|---|
BIDE_USER_AGENT | 项目标识 | 向网站标识你的应用,并提供可联系到相关人员的地址。 |
BIDE_MIN_INTERVAL_MS | 3000 | 两次请求之间的间隔,范围为 2000 到 60000。 |
BIDE_TIMEOUT_MS | 20000 | 单次请求的截止时间,范围为 1000 到 120000。 |
BIDE_MAX_RETRIES | 3 | 暂时性故障后的重试次数,范围为 0 到 10。 |
BIDE_CACHE_TTL_MS | 900000 | 页面在内存中的保留时间,范围为 0 到 86400000。 |
BIDE_CACHE_MAX_ENTRIES | 200 | 内存中同时保留的页面数,范围为 0 到 10000。 |
BIDE_LOG_LEVEL | error | silent、error、info 或 debug,写入 stderr。 |
超出范围的值会回退到默认值,原因会写入 stderr。
错误
每种故障都会携带 6 种代码之一、错误消息,以及在有帮助时指出下一步操作的提示。
| 代码 | 发生了什么 | 应对方法 |
|---|---|---|
not_found | 网站已响应,但没有此记录。 | 使用 search_songs 检查 ID。 |
invalid_input | 请求发出前,参数已被拒绝。 | 阅读错误消息,其中会指出相关参数。 |
rate_limited | 网站要求此客户端降低请求频率。 | 等待提示中所述的秒数,然后使用相同参数再次调用。记录仍然存在。 |
parse_failure | 页面已加载,但未找到预期内容。 | 在问题跟踪器中报告。 |
network_error | 请求未能完成。 | 稍后重试。 |
timeout | 请求超出截止时间。 | 增大 BIDE_TIMEOUT_MS,或减少请求的行数。 |
作为库使用
读取网站的层独立发布,包含自身的请求节流、缓存和错误处理,且不绑定任何协议。
import { BideEtMusiqueClient } from "mcp-bideetmusique/client";
const client = new BideEtMusiqueClient();
const { data, cached } = await client.getSong("1234");
console.log(data.title, data.labels, cached);
search、getSong、getArtist 和 getNewSongs 均返回 { data, cached },并会抛出携带 6 种代码之一的错误。这里同样会确保两次请求之间至少间隔 2 秒。
请求频率与署名
请求会逐个发送,间隔至少三秒;无论如何配置服务,间隔下限均为两秒。Bide & Musique 由一个志愿者协会自筹经费运营,这种请求频率是对其收藏的应有尊重。User-Agent 始终以项目标识和可联系到真人的地址结尾。
每条结果都附有记录页面的地址。目录由该协会和参与建设的听众共同维护,转录内容也不例外。
此 MCP 服务是一个非官方项目,与 Bide & Musique 没有任何关联。
隐私
此服务不会收集你的任何信息,也不会向作者发送任何内容。它在你的机器上运行,只连接 www.bide-et-musique.com,不会连接其他任何地方;运行期间,回答仅保存在内存中,不会写入磁盘。
PRIVACY.md 说明了请求包含哪些内容,以及哪些设置会改变这些内容。
开发
npm install
npm run build:fixtures
npm test
npm run check
测试使用生成的固件运行,不会发起网络请求。实时测试套件 npm run test:live 会为每条路由发送一个请求,并且每晚针对网站本身运行。
贡献
Bug、问题和想法请提交到问题跟踪器。欢迎提交拉取请求;先创建问题有助于就更改方案达成共识。请参阅 CONTRIBUTING.md。
许可证
MIT,详见 LICENSE。目录归 Bide & Musique 以及参与建设的听众所有。
mcp-bideetmusique(法语)
Bide & Musique 是一家法国网络电台及其播放的唱片收藏,由运营它的志愿者协会手工编目。它的主题是被遗忘的歌曲:冷门歌曲、奇趣唱片、电视主题曲,以及从未再版的 45 转唱片。唱片页面会列出演唱者、词曲作者、年份、厂牌及其目录编号、封面、时长、电台排行榜排名,以及听众转录的歌词。
此服务将对话客户端连接到这个收藏。你可以按单一条件搜索,例如演唱者、标题、作者、歌词、厂牌或年份;查看完整唱片条目;查看网站上有关某位艺人的内容及其唱片目录;随机抽取一张唱片;以及查看最近编目的内容。无需 API 密钥,也无需账户。
安装
一键安装
Claude Code
claude mcp add bideetmusique -- npx -y mcp-bideetmusique
Claude Desktop、Cursor,以及所有采用标准配置格式的客户端
{
"mcpServers": {
"bideetmusique": {
"command": "npx",
"args": ["-y", "mcp-bideetmusique"]
}
}
}
需要 Node 24 或更高版本,无需设置任何环境变量。
使用 Docker
{
"mcpServers": {
"bideetmusique": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-bideetmusique:2.0.1"]
}
}
}
-i 会保持标准输入处于打开状态,它是协议的通信通道;省略 -t 是因为 TTY 会重写数据流。容器需要能够通过 HTTPS 访问 www.bide-et-musique.com,除此之外不需要任何东西:无需卷、无需端口,也无需凭据。
打包,无需 npm
下载
最新版本中的 mcp-bideetmusique-2.0.1.mcpb
并打开它。支持 MCP bundle 的客户端会自行安装,无需 npm,也无需修改配置文件。bundle 包含其依赖项,因此安装时不会下载任何内容。
可以询问什么
- “Bide & Musique 收录了哪些 Jacques Dutronc 的作品?”
- “哪些歌曲的歌词提到了潜水艇?”
- “给我读一下这张唱片的信息:厂牌、年份、创作者。”
- “从收藏中随便选一首给我听。”
- “最近编目了什么?”
通常的流程是从搜索到查看唱片信息:搜索结果中的一行带有
song_id,然后用 get_song 读取。
工具
| 工具 | 功能 |
|---|---|
search_songs | 根据一个搜索维度查找收藏内容。 |
get_song | 读取完整的唱片信息,包括歌词。 |
get_artist | 读取艺人信息及收藏中收录的其唱片。 |
get_random_song | 随机选取一张尚未有人选过的唱片。 |
list_new_songs | 读取收藏中最近编目的内容。 |
search_songs
按一个搜索维度查找,并且必须指定该维度:每个维度回答的问题都不同,在一个维度上找到的内容并不能说明其他维度的情况。作为表演者未能找到结果的名称,也完全可能是歌曲标题。
| 参数 | 类型 | 必填 | 功能 |
|---|---|---|---|
query | 字符串,最多 200 个字符 | 是 | 要在该维度上查找的内容。 |
search_type | performer、title、writer、lyrics、label 或 year | 是 | 搜索维度。 |
page | 整数,1 到 200,默认值为 1 | 否 | 要返回的结果页。 |
limit | 整数,1 到 50,默认值为 20 | 否 | 返回的结果行数。 |
search_type | 查找内容 |
|---|---|
performer | 唱片标注的艺人 |
title | 歌曲名称 |
writer | 歌曲的词曲作者 |
lyrics | 歌曲中演唱的歌词 |
label | 发行歌曲的厂牌 |
year | 唱片上印制的年份 |
year 维度只接受四位数年份,不接受其他内容:网站会忽略其他词语,而不会据此筛选。多个关键词按“与”组合,并且每个关键词都会在词语内部进行匹配,因此每增加一个词,搜索范围都会缩小;无论网站表单提供什么选项,带引号的短语都不会返回结果。
返回内容: 带有 song_id 的结果行,可交由 get_song 使用;title;url;以及 artist。total_matches 是网站显示的总数,统计所有页面上匹配的歌曲,因此可能多于单页的结果行数。page_served 是网站实际返回的页面,因为对于超出末页的页码,网站会返回末页而不报错:请读取此值,而不要假定返回的是请求的页码。如果网站没有显示 page_count 和 has_more_pages,这两个字段的值会是 null。
get_song
读取完整的唱片条目。
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
song_id | 字符串,最多 20 个字符 | 是 | 条目上的标识符。 |
include_lyrics | 布尔值,默认 true | 否 | 页面上有转录歌词时,是否一并返回。 |
返回内容: title、artist、credited_performer、year、writers、
duration(包含条目上原样印出的文本及其 precision)、labels(每个唱片公司对应一项)、catalogue_reference、presentation、
sleeve_credits、image_url、ISO 日期格式的 added_on、电台排行榜名次、
favourites 和 comments。标题、艺人和时长始终有值;其他信息在部分条目中缺失时会返回
null,而不是猜测。页面未显示的计数视为未知,而不是 null。lyrics.available 表示页面是否有转录歌词,
lyrics.text 包含歌词以及记录歌词的 transcriber。
get_artist
读取收藏中关于某位艺人的信息,以及收藏中该艺人的唱片。
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
artist_id | 字符串,最多 20 个字符 | 是 | 艺人条目上的标识符。 |
limit | 整数,1 到 200,默认 100 | 否 | 返回该艺人的唱片数量。 |
返回内容: name、aliases、surname、first_name、nationality、
birth_date、presentation、see_also、links 和 photo_url;页面未提供信息时,对应值为 null
或空。discography 包含该艺人的唱片,每条唱片均含有可用于调用 get_song 的 song_id、title、url、year 和电台播放次数。
discography_count 统计返回的唱片数量,songs_on_page 统计页面上的唱片数量,因此可以看出唱片目录是否被截断。
get_random_song
从网站提供的标识符中随机抽取一张唱片,无人选择。没有指定具体歌曲时,可用它浏览收藏。
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
include_lyrics | 布尔值,默认 true | 否 | 页面上有转录歌词时,是否一并返回。 |
返回内容: get_song 返回的唱片条目。
list_new_songs
读取收藏最近编目的内容。
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
limit | 整数,1 到 50,默认 20 | 否 | 返回的条目数。 |
返回内容: 多条记录,包含 song_id、从信息流发布的条目上读取的 title、artist_name、listed_as、url 和 published_at。entries_in_feed 是信息流中的条目数,这是一个固定值,与收藏中的唱片数量无关。
配置
每个变量都是可选的。请将它们放在客户端配置的 env 块中。
| 变量 | 默认值 | 作用 |
|---|---|---|
BIDE_USER_AGENT | 项目身份标识 | 向网站标识您的应用,并提供可联系到负责人的地址。 |
BIDE_MIN_INTERVAL_MS | 3000 | 两次请求之间的间隔,范围为 2000 到 60000。 |
BIDE_TIMEOUT_MS | 20000 | 请求超时时间,范围为 1000 到 120000。 |
BIDE_MAX_RETRIES | 3 | 临时失败后的重试次数,范围为 0 到 10。 |
BIDE_CACHE_TTL_MS | 900000 | 页面在内存中的保留时长,范围为 0 到 86400000。 |
BIDE_CACHE_MAX_ENTRIES | 200 | 同时保留在内存中的页面数量,范围为 0 到 10000。 |
BIDE_LOG_LEVEL | error | silent、error、info 或 debug,日志写入错误输出流。 |
超出范围的值会回退为默认值,原因会写入错误输出流。
错误
每次失败都会带有以下六种代码之一和一条消息,并在有帮助时提供下一步操作建议。
| 代码 | 发生了什么 | 怎么做 |
|---|---|---|
not_found | 网站已响应,但没有这条记录。 | 使用 search_songs 检查标识符。 |
invalid_input | 请求发出前,参数已被拒绝。 | 阅读消息,其中会指出相应参数。 |
rate_limited | 网站要求此客户端降低请求频率。 | 等待所示秒数,然后使用相同参数重新调用。记录仍然存在。 |
parse_failure | 页面已加载,但缺少预期内容。 | 在问题跟踪页报告此问题。 |
network_error | 请求未能完成。 | 稍后重试。 |
timeout | 请求超时。 | 增大 BIDE_TIMEOUT_MS,或请求更少的行。 |
作为库使用
读取网站的这一层单独发布,包含请求频率控制、缓存和错误处理,不绑定任何协议。
import { BideEtMusiqueClient } from "mcp-bideetmusique/client";
const client = new BideEtMusiqueClient();
const { data, cached } = await client.getSong("1234");
console.log(data.title, data.labels, cached);
search、getSong、getArtist 和 getNewSongs 各自返回
{ data, cached },并会抛出带有六种代码之一的错误。这里同样保证两次请求之间至少间隔两秒。
请求频率与署名
请求会逐个发出,彼此至少间隔三秒;无论如何配置,两次请求之间的间隔都不会少于两秒。Bide & Musique 由一个志愿者协会自筹资源运营,这样的请求频率是对该收藏的应有尊重。User-Agent 始终以项目身份标识和可联系到负责人的地址结尾。
每条结果都附有记录页面的地址。该目录由协会和参与构建它的听众创作,包括其中的转录内容。
此 MCP 是一个非官方项目,与 Bide & Musique 没有关联。
隐私
此服务不会收集您的任何信息,也不会向其作者发送任何信息。它在您的机器上运行,只连接 www.bide-et-musique.com,在运行期间将响应保存在内存中,不会向磁盘写入任何内容。PRIVACY.md 说明了请求会携带哪些信息,以及哪些设置会改变这一点。
开发
npm install
npm run build:fixtures
npm test
npm run check
测试使用生成的 fixtures 运行,不会发出任何请求。
实时测试套件 npm run test:live 会为每个路由发出一个请求,并且每晚都会针对网站本身运行。
贡献
问题、疑问和想法都可以提交到问题跟踪。欢迎提交修改建议;先创建工单有助于就修改方案达成一致。请参阅 CONTRIBUTING.md。
许可证
MIT,详见 LICENSE。目录归 Bide & Musique 以及创建它的听众所有。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。