Skip to main content
Glama

mcp-bideetmusique

一个为 Bide & Musique 设计的 MCP 服务器,该网站是一家在线电台,拥有手工构建的、被名声遗忘的法国歌曲目录。无需 API 密钥,无需账户,只读访问。

该藏品自 2000 年起由运营该电台的志愿者协会编目:年份、厂牌、目录编号、词曲作者,涵盖数万张其他数据库无法以这种方式描述的唱片。

功能

五个工具。

search_songs 一次只沿一个维度进行搜索。该维度必须被指定,因为每个维度都提出不同的问题,一个维度上的答案无法说明其他维度的情况。

search_type

查找内容

performer

唱片上署名的艺术家

title

歌曲名称

writer

词曲作者

lyrics

歌曲中演唱的歌词

label

发行该唱片的厂牌

year

唱片上印制的年份

get_song 将搜索返回的 ID 解析为唱片本身的信息:年份、词曲作者、时长、厂牌及其目录编号、封套、藏品编目日期、电台自有排行榜,以及将其收藏为喜爱的人数。如果唱片页面带有歌词转录,则会返回歌词本身及录入者信息;当问题仅关于唱片时,include_lyrics 会排除歌词。

get_artist 读取艺术家页面:其身份、曾使用的其他艺名,以及藏品中收录的其作品。

get_random_song 返回一张无人选择的唱片。该网站未提供随机唱片的访问路径,因此抽取过程在其提供的 ID 范围内进行,从第一个到其新条目信息流中命名的最新一个,若抽取的 ID 在藏品中不存在,则重新抽取。

list_new_songs 读取藏品最新编目的内容。其背后的信息流包含固定数量的条目,且不提供第二页,因此其计数是查看最新唱片的窗口,而非藏品的总数。

Related MCP server: mcp-gouv-fr

不会声称的内容

每个答案的构建方式都让调用者能够了解网站实际返回的信息:

  • 失败绝不会返回空结果。 有六种错误代码,网站拒绝的搜索并不等同于藏品中没有任何内容。

  • 计数是网站自身的计数,统计所有页面中匹配的歌曲,因此通常超过单页的行数。网站未打印的计数为 null,绝不会是 0。

  • 返回的页面是实际读取的,而非假设的。 请求超出最后一页的页面会返回最后一页,不报错,并且答案会说明这一点。

  • 匹配发生在单词内部。 搜索 Bino 会返回 Bambino 的唱片,并且答案会说明没有行包含该查询词。

  • 多个关键词以 AND 逻辑组合,因此每增加一个词都会缩小搜索范围。带引号的短语不会返回任何结果,无论网站自身的表单如何。

  • 行按网站自身的顺序排列,先按表演者,再按标题,从不按匹配度排序,截断时会说明。

安装

npm install -g mcp-bideetmusique

然后将其注册到您的 MCP 客户端:

{
  "mcpServers": {
    "bideetmusique": {
      "command": "mcp-bideetmusique"
    }
  }
}

配置

每个变量都是可选的。

变量

默认值

功能

BIDE_USER_AGENT

项目自身的名称

您的应用程序名称。项目标识会附加在其后,以便流量可追溯。

BIDE_MIN_INTERVAL_MS

3000

请求之间的最小间隔。低于 2000 的值会被拒绝。

BIDE_TIMEOUT_MS

20000

每次请求的超时时间。

BIDE_MAX_RETRIES

3

临时故障时的重试次数。

BIDE_CACHE_TTL_MS

900000

内存缓存的生命周期。不会写入磁盘。

BIDE_CACHE_MAX_ENTRIES

200

缓存大小。

BIDE_LOG_LEVEL

error

silent、error、info 或 debug,输出到 stderr。

此服务器对网站的尊重

Bide & Musique 由志愿者协会运营,使用单台服务器,免费提供服务。请求逐一发出,间隔三秒,此下限无法通过配置降低。User-Agent 始终包含项目信息及可联系到的地址。服务器只读取,从不写入。

许可证

代码采用 MIT 许可证。藏品内容归 Bide & Musique 所有:在展示结果时,请注明网站来源并链接到唱片页面。


mcp-bideetmusique (法语版)

一个为 Bide & Musique 设计的 MCP 服务器,该网站是一家网络电台,拥有手工构建的、被荣耀遗忘的法国歌曲目录。无需 API 密钥,无需账户,只读访问。

该藏品自 2000 年起由运营该电台的志愿者协会编目:年份、厂牌、目录编号、词曲作者,涵盖数万张其他数据库无法以这种方式描述的唱片。

功能

五个工具。

search_songs 一次只沿一个维度进行搜索。该维度必须被指定,因为每个维度都提出不同的问题,一个维度上的答案无法说明其他维度的情况。

search_type

查找内容

performer

唱片上署名的表演者

title

曲目名称

writer

词曲作者

lyrics

其中演唱的歌词

label

发行该唱片的厂牌

year

唱片上印制的年份

get_song 将搜索返回的 ID 解析为唱片本身的信息:年份、词曲作者、时长、厂牌及其目录编号、封套、藏品编目日期、电台自有排行榜,以及将其收藏为喜爱的人数。如果唱片页面带有歌词转录,则会返回歌词本身及录入者信息;当问题仅关于唱片时,include_lyrics 会排除歌词。

get_artist 读取艺术家页面:其身份、曾使用的其他艺名,以及藏品中收录的其作品。

get_random_song 返回一张无人选择的唱片。该网站未提供随机唱片的访问路径,因此抽取过程在其提供的 ID 范围内进行,从第一个到其新条目信息流中命名的最新一个,若抽取的 ID 在藏品中不存在,则重新抽取。

list_new_songs 读取藏品最新编目的内容。其背后的信息流包含固定数量的条目,且不提供第二页,因此其计数是查看最新唱片的窗口,而非藏品的总数。

不会声称的内容

每个答案的构建方式都让调用者能够了解网站实际返回的信息:

  • 失败绝不会返回空结果。 有六种错误代码,网站拒绝的搜索并不等同于藏品中没有任何内容。

  • 计数是网站自身的计数,统计所有页面中匹配的歌曲,因此通常超过单页的行数。网站未打印的计数为 null,绝不会是 0。

  • 返回的页面是实际读取的,而非假设的。 请求超出最后一页的页面会返回最后一页,不报错,并且答案会说明这一点。

  • 匹配发生在单词内部。 搜索 Bino 会返回 Bambino 的唱片,并且答案会说明没有行包含该查询词。

  • 多个关键词以 AND 逻辑组合,因此每增加一个词都会缩小搜索范围。带引号的短语不会返回任何结果,无论网站自身的表单如何。

  • 行按网站自身的顺序排列,先按表演者,再按标题,从不按匹配度排序,截断时会说明。

此服务器对网站的尊重

Bide & Musique 由志愿者协会运营,使用单台服务器,免费提供服务。请求逐一发出,间隔三秒,此下限无法通过配置降低。User-Agent 始终包含项目信息及可联系到的地址。服务器只读取,从不写入。

许可证

代码采用 MIT 许可证。藏品内容归 Bide & Musique 所有:在展示结果时,请注明网站来源并链接到唱片页面。

Available Tools

5 tools
get_artistRead an artist's pageA
Read-onlyIdempotent

Read an artist's page on Bide & Musique: the names they recorded under, what the catalogue notes about them, and every song of theirs the collection holds, each with its year. Takes the 'artist_id' that search_songs, get_song and get_random_song return. An artist page is a way into a discography rather than a biography: half of them state nothing beyond the name, and the median artist has one record here. Fields the page does not state come back null or empty, which is the ordinary state of this catalogue rather than a failed read. The date of birth comes back exactly as written, since the catalogue states a full date, a bare year, or a date with a death beside it. Nationality is free text for the same reason. Rows come in the site's order, by year of release, never by importance. When you show an artist to a user, credit Bide & Musique and link the page.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum songs of the discography to return.
artist_idYesThe artist id returned by search_songs, get_song or get_random_song, digits only, for example '290'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
nameYes
linksYesAddresses off the site, with the label the page gave them.
notesYes
sourceYes
aliasesYesOther names this artist recorded under, as the page stacks them.
surnameYes
see_alsoYes
artist_idYes
photo_urlYes
birth_dateYesExactly as published, which may be a day, a bare year, a month and a year, or a date with a death beside it. Nothing here is parsed into a date.
first_nameYes
discographyYes
nationalityYesAs the catalogue writes it, in its own words: 'suisse', 'franco-espagnole'.
presentationYes
songs_on_pageYesSongs the page held, before 'limit'.
discography_countYesSongs returned, after 'limit'.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral detail beyond the annotations: it explains null/empty fields as normal, the exact formatting of date of birth and nationality, the ordering of rows by year, and the requirement to credit Bide & Musique. This fully discloses the tool's behavior and aligns with the readOnlyHint and idempotentHint annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than minimal but every sentence contributes meaningful information: purpose, input source, null behavior, date format, ordering, and citation. It is front-loaded with the purpose and weaves in necessary context without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description does not need to enumerate return fields. It covers all critical behavioral aspects—null handling, field formats, ordering, and attribution—making it complete for the tool's complexity. The explanation of the sparse catalogue helps the agent interpret results appropriately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters have descriptions. The description adds value by explaining that artist_id is the identifier returned by other search tools, which is not in the schema. However, it does not clarify the limit parameter's behavior relative to the 'every song' claim, so it doesn't fully resolve potential ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads an artist's page and enumerates its contents (names recorded under, catalogue notes, and songs with years). It distinguishes itself from siblings like search_songs and get_song by targeting the artist resource specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent that artist_id comes from search_songs, get_song, and get_random_song, providing the necessary context for when to use this tool. It also sets expectations about the sparse nature of artist pages, but does not explicitly state when not to use it or name alternatives for similar queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_random_songRead a record drawn at randomA
Read-only

Read one record drawn at random from the Bide & Musique collection: same answer as get_song, on a record nobody chose. Use it to browse the collection. For a question about a particular song, use get_song. The draw runs over the ids the site serves, from the first to the newest one its feed of new entries names, and an id the collection does not serve is drawn again. Records whose page carries a transcription come back with the words themselves, as published. When you show a record to a user, credit Bide & Musique and link the page.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_lyricsNoWhether to return the transcription the drawn record's page carries. Browsing chains many calls, and a record with one runs to a few thousand characters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
yearYes
notesYes
titleYes
top50Yes
artistYes
labelsYesOne entry per label, two when a record was co-released.
lyricsYes
sourceYes
song_idYes
writersYesWriters and composers as credited, one entry each, empty when the record credits none. A few records name the part someone took, and the entry then reads as the site prints it, for example 'Paroles : Jean-Pierre Lang'.
added_onYesThe day the collection catalogued it, as an ISO date.
commentsYes
durationYes
see_alsoYesOther artists the record links to.
image_urlYes
favouritesYesHow many people keep it as a favourite. Null when the page prints no counter.
presentationYesWhat the catalogue wrote about the record.
thumbnail_urlYes
sleeve_creditsYesWho is credited for the sleeve, when anyone is.
credited_performerYesA performer the sleeve credits apart from the artist page, when the record names one.
catalogue_referenceYesThe reference printed on the record. A reference of four digits is not a year.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and destructiveHint=false, and the description adds valuable behavior: the draw covers served ids, invalid ids are redrawn, and results include transcriptions if present. It also adds attribution requirements for showing to users, which is beyond the annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient, front-loading the core purpose, then usage, then behavior, and ends with attribution. Every sentence adds value; the only slight inefficiency is the last sentence about crediting, which could be shorter, but it's necessary context. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one param, read-only, no output schema needed as it's described as same as get_song), and the description covers purpose, usage, behavior, parameter purpose, and attribution. Complete for its complexity. The output schema likely mirrors get_song, so no need to detail returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the single parameter with full description, so the bar for added value is modest. The description adds why the parameter exists (to avoid heavy calls in browsing chains) and what it controls (whether to include transcription), though it doesn't add syntax details. Given full schema coverage, a 4 is justified for the contextual usage guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads a random record from the Bide & Musique collection, same answer as get_song. It distinguishes itself from siblings by explicitly contrasting with get_song for particular song queries, and from search_songs and list_new_songs by its random selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use: to browse the collection, and when not to: for a question about a particular song, use get_song. This direct alternative guidance is among the best evidence for this dimension.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_songRead a song's recordA
Read-onlyIdempotent

Read one song's record on Bide & Musique: the year, the writers and composers, the duration, the label and its catalogue reference, the sleeve, when the collection catalogued it, how it ranked in the station's own chart, and how many people kept it as a favourite. Takes the 'song_id' that search_songs returns. Three things are always there: the title, the artist and the duration. Everything else is absent on some records, and comes back null or empty rather than guessed; a counter the record does not print is unknown, not zero. Records whose page carries a transcription come back with the words themselves, as published, along with who typed them. A record whose page carries none says so. When you show a record to a user, credit Bide & Musique and link the page.

ParametersJSON Schema
NameRequiredDescriptionDefault
song_idYesThe song id returned by search_songs, digits only, for example '1734'.
include_lyricsNoWhether to return the transcription the page carries. A record whose page has one runs to a few thousand characters, so ask for false when the question is about the record: the year, the label or the writers. 'lyrics.available' still says whether the page has one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
yearYes
notesYes
titleYes
top50Yes
artistYes
labelsYesOne entry per label, two when a record was co-released.
lyricsYes
sourceYes
song_idYes
writersYesWriters and composers as credited, one entry each, empty when the record credits none. A few records name the part someone took, and the entry then reads as the site prints it, for example 'Paroles : Jean-Pierre Lang'.
added_onYesThe day the collection catalogued it, as an ISO date.
commentsYes
durationYes
see_alsoYesOther artists the record links to.
image_urlYes
favouritesYesHow many people keep it as a favourite. Null when the page prints no counter.
presentationYesWhat the catalogue wrote about the record.
thumbnail_urlYes
sleeve_creditsYesWho is credited for the sleeve, when anyone is.
credited_performerYesA performer the sleeve credits apart from the artist page, when the record names one.
catalogue_referenceYesThe reference printed on the record. A reference of four digits is not a year.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, openWorldHint), the description reveals key behaviors: missing fields return null or empty rather than guessed, a counter not printed is unknown (not zero), lyrics inclusion can be controlled via a parameter, and the credit requirement. No contradictions with annotations—all align. This is exemplary transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear front-loaded purpose, followed by parameter guidance, behavioral details, and a final usage note. It contains several sentences, but each adds value—no redundancy. It could be slightly tightened (e.g., the credit sentence is somewhat tangential), but overall it efficiently conveys necessary information for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple fields, null handling, lyrics behavior) and the presence of an output schema for return structure, the description covers all essential aspects: input source, parameter behavior, data completeness semantics, lyrics control, and attribution requirements. Nothing important is missing, making it fully complete for an AI agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds significant value beyond the schema: it explains the source of song_id (from search_songs), the rationale for setting include_lyrics false (to avoid large transcripts when metadata is needed), and mentions an output field ('lyrics.available') that informs decision-making. This goes well beyond the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool reads one song's record and lists specific fields (year, writers, composers, duration, etc.), with a clear verb ('Read') and resource ('song's record'). It distinguishes from siblings by specifying it takes a 'song_id' from search_songs, implying a targeted lookup. A definitive 5 for clarity and specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance on when to use the tool (to read a specific song's record) and offers parameter-level advice (set include_lyrics to false when the question is about metadata like year or label). It connects to search_songs as the source of the song_id. However, it does not explicitly contrast with siblings like get_random_song or list_new_songs, which would earn a 5. A strong 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_new_songsRead what was just cataloguedA
Read-onlyIdempotent

Read the records Bide & Musique has just catalogued. The collection is built by hand and grows a few records at a time, so this answers what has been added lately rather than what the station is playing. The feed carries a fixed number of entries and offers no second page, so the count is what it holds and says nothing about how many records the collection has. Entries come in the order the feed publishes them, which runs newest first without being sorted: read 'published_at' rather than the position to date one. Each entry names the song and the artist as one line, which is read apart at the first separator and kept whole under 'listed_as'. Use get_song on the id for the record itself: year, writers, label, duration and the words when the page carries them. When you show a record to a user, credit Bide & Musique and link the page.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum entries to return, taken from the head of the feed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesYes
sourceYes
resultsYes
result_countYes
entries_in_feedYesHow many entries the feed carries, read or not. It is a fixed window on the newest records, never a count of the collection.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond annotations by explaining behavior not covered: the fixed-size feed with no second page, lack of sorting (despite newest-first appearance), and how entries combine artist/song into one line. It also tells the agent to parse 'published_at' instead of position. All annotations (readOnlyHint, idempotentHint, openWorldHint) are consistent; no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-front-loaded with the core purpose, but the middle paragraph includes multiple nuanced behavioral notes (one-entry-per-line parsing, order caveats) that could be restructured for faster scanning. Still, every sentence adds value with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (1 optional param, no nested objects), the description fully covers return shape (id, listed_as, published_at), subtle ordering behavior, and how to use the result. The presence of an output schema reduces burden further. All agent decision points are addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter (limit) already described. The description adds context that limit takes from the 'head of the feed,' confirming it pulls from the start (newest entries). This adds slight value beyond the schema's default/minimum/maximum descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns recently catalogued records from Bide & Musique, contrasting with station playlists. It specifies that the feed has a fixed number of entries, no pagination, and entries are ordered by publication date (newest first). This uniquely distinguishes it from siblings like search_songs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool: to see what has been added lately, not what is playing. Provides alternatives: use get_song on the id for full record details. Also warns that count does not reflect total collection size. 'credit Bide & Musique and link the page' gives a when-showing-to-user directive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_songsSearch songsA
Read-onlyIdempotent

Search the Bide & Musique collection: French songs, mostly forgotten ones, catalogued by hand since 2000 by the association that runs the station. Bide & Musique is a French site, so French terms work best. 'search_type' picks the axis and has to be stated: 'performer' for the artist credited on the record, 'title' for the name of the song, 'writer' for who wrote or composed it, 'lyrics' for the words sung in it, 'label' for the label it came out on, 'year' for the year printed on it. Each asks a different question and they are never merged, so a name that finds nothing as a performer may still be a title. 'year' takes one four-digit year and nothing else: the site drops any other word on that axis instead of filtering on it, and the ranges its own form documents return nothing. To combine a year with words, search the words on their own axis and read each record's year from its page. Use 'lyrics' to find a song from a line someone remembers. It answers with the songs whose words match, without showing what matched; read the words themselves with get_song on the id. Several keywords are combined with AND, each matched inside words, so every extra word narrows the search and never widens it. Quoting a phrase returns nothing, whatever the site's own form says. Results carry the song id, the artist and the page to read, which is where the song's own record lives: year, label, catalogue reference and writers. The count returned counts matching songs across every page, so it is usually larger than the rows of one page; ask for the next page with 'page'. When you show a song to a user, credit Bide & Musique and link the source URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoWhich page of results to read. The answer states which page the site served.
limitNoMaximum songs to return from that page.
queryYesWhat to search for, in French, for example 'Pierre Bachelet' or 'vacances'.
search_typeYesWhich axis to search: 'performer' for the artist credited on the record, 'title' for the name of the song, 'writer' for who wrote or composed it, 'lyrics' for the words sung in it, 'label' for the label it came out on, 'year' for the year printed on it. The 'year' axis takes one four-digit year and nothing else: the site drops any other word there instead of filtering on it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesYes
queryYes
sourceYes
resultsYes
page_countYes
page_servedYesThe page the site actually served, read from its pagination bar. Asking for a page past the last one returns the last page, so this can differ from 'page_requested'.
search_typeYes
result_countYesSongs returned, after 'limit'.
rows_on_pageYesSongs this page held, before 'limit'.
total_matchesYesThe number Bide & Musique prints above the results, counting matching songs across every page. Null when the site printed none, which is different from zero.
has_more_pagesYes
page_requestedYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, openWorldHint, idempotentHint=true, destructiveHint=false. The description adds significant behavioral context beyond annotations: the year axis drops extra words, quoting fails, search uses AND matching inside words, results include song id/artist/page/fields but not matched lyrics, count is total across pages, pagination with 'page' parameter. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence serves a purpose—it covers the collection nature, axis behaviors, search logic, pagination, and attribution. It is front-loaded with the collection context. Minor structural improvement could be made (e.g., bullet-like separation of axis behaviors), but it remains clear and not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (6 axes, special rules for year and quoting, pagination, output format), the description is remarkably complete. It explains what results contain (song id, artist, page, year, label, catalogue, writers), how to get more pages, and the fact that the count is total. The output schema is not provided in the prompt, but the description covers its key fields. No gaps are apparent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. However, the description adds deep semantic value: explains the meaning and appropriate uses of each search_type value, that query should be in French, how year axis behaves differently, and that quoting a phrase yields no results. This goes well beyond the schema's bare descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool searches the Bide & Musique collection of French songs, with a specific focus on forgotten ones hand-catalogued since 2000. It distinguishes the tool from siblings like get_song (single retrieval) and get_random_song by focusing on search across multiple axes. The verb 'search' and resource 'collection' are explicit and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides extensive guidance: explains that search_type is required, each axis answers a different question, year must be a single four-digit number, how to combine year with other terms, use lyrics to find songs from remembered lines, quoting returns nothing, AND logic for multiple keywords, pagination behavior, and the need to credit the source. Also warns about the count being across all pages, not just the current one. This covers when and how to use the tool effectively.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.0
    • Changedget_artist1 field changed
      • changedInput schema / properties / artist_id / description
        Previous value: -"The artist id returned by search_songs or get_song, digits only, for example '290'."New value: +"The artist id returned by search_songs, get_song or get_random_song, digits only, for example '290'."
    • Changedget_random_song1 field changed
      • addedInput schema / properties / include_lyrics
        Added value: +{
        +  "default": true,
        +  "description": "Whether to return the transcription the drawn record's page carries. Browsing chains many calls, and a record with one runs to a few thousand characters.",
        +  "type": "boolean"
        +}
  2. 5 tool updatesv0.3.0
    • First observedget_artist
    • First observedget_random_song
    • First observedget_song
    • First observedlist_new_songs
    • First observedsearch_songs

TDQS

A4.8/5.0

Scored across 5 tools

Disambiguation5/5

Each tool serves a clearly distinct purpose: artist pages, song search across multiple axes, song details, random browsing, and newest additions. There is no overlap or ambiguity between them; an agent can easily select the right tool for the task.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern: get_artist, get_song, get_random_song, list_new_songs, search_songs. The prefix clearly indicates the action (get/search/list) and the noun indicates the resource, making the API predictable and easy to navigate.

Tool Count5/5

Five tools is an ideal size for this server's purpose—a focused read-only music archive. Each tool serves a distinct user need without redundancy or bloat, and the count is well within the optimal range for a domain-specific MCP server.

Completeness5/5

The tool surface fully covers the apparent domain: searching the catalog, retrieving artist and song details, browsing randomly, and checking new additions. There are no missing operations that would prevent an agent from accomplishing typical tasks like finding a song, learning about an artist, or exploring the collection.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers