Bide & Musique

Pesquise a coleção Bide & Musique de canções francesas esquecidas. Discos, letras, sem chave de API.

Documentação

mcp-bideetmusique

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

Bide & Musique é uma web rádio francesa e a coleção de discos que ela toca, catalogada à mão pela associação voluntária que a administra. Seu tema é a canção esquecida: o fracasso, o disco de novidade, o tema de televisão, o single que ninguém relançou. A página de um disco traz o intérprete, os autores e compositores, o ano, o selo e sua referência de catálogo, a capa, a duração, as colocações nas paradas da própria estação e as letras quando um ouvinte as transcreveu.

Este servidor conecta um cliente de chat a essa coleção. Você pode pesquisá-la ao longo de um eixo por vez, por intérprete, título, autor, letra, selo ou ano; ler um disco por completo; ler o que o site guarda sobre um artista com sua discografia; sortear um disco aleatoriamente; e ver o que acabou de ser catalogado. Ele não exige chave de API nem conta.

Versão francesa


Instalação

Instalação em um clique

Install in Cursor Install in VS Code

Claude Code

claude mcp add bideetmusique -- npx -y mcp-bideetmusique

Claude Desktop, Cursor e qualquer cliente que use o formato de configuração padrão

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

Node 24 ou posterior é necessário, e nenhuma variável de ambiente precisa ser definida.

Com Docker

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

-i mantém o stdin aberto, que é por onde o protocolo trafega, e -t fica de fora porque um TTY reescreve o fluxo. O contêiner precisa de HTTPS de saída para www.bide-et-musique.com, e nada mais: sem volume, sem porta, sem credencial.

Pacote, sem npm

Baixe mcp-bideetmusique-2.0.1.mcpb de o lançamento mais recente e abra-o. Um cliente que suporte pacotes MCP o instala por conta própria, sem npm e sem arquivo de configuração para editar. O pacote carrega suas dependências, então nada é baixado no momento da instalação.

O que você pode perguntar

  • « Qu'est-ce que Bide & Musique a de Jacques Dutronc ? »
  • "Which songs mention a submarine in their words?"
  • "Read me that record: the label, the year, who wrote it."
  • "Play me something at random from the collection."
  • "What has been catalogued lately?"

O caminho comum vai de uma pesquisa a um disco: uma linha carrega um song_id, e get_song o lê.

Ferramentas

FerramentaO que ela faz
search_songsPesquisa a coleção ao longo de um eixo por vez.
get_songLê um disco por completo, incluindo as letras.
get_artistLê um artista e os discos que a coleção guarda dele.
get_random_songSorteia um disco que ninguém escolheu.
list_new_songsLê o que a coleção acabou de catalogar.

search_songs

Pesquisa ao longo de um eixo, que precisa ser nomeado: cada um faz uma pergunta diferente, e uma resposta em um não diz nada sobre os outros. Um nome que não retorna nada como intérprete pode ainda ser um título.

ArgumentoTipoObrigatórioO que faz
querystring, até 200 caracteressimO que procurar nesse eixo.
search_typeperformer, title, writer, lyrics, label ou yearsimO eixo ao longo do qual pesquisar.
pageinteiro, 1 a 200, padrão 1nãoQual página de linhas.
limitinteiro, 1 a 50, padrão 20nãoLinhas a servir.
search_typeEncontra
performero artista creditado no disco
titleo nome da canção
writerquem a escreveu ou compôs
lyricsas palavras cantadas nela
labelo selo em que ela saiu
yearo ano impresso nela

O eixo year aceita um ano de quatro dígitos e nada mais: o site descarta qualquer outra palavra ali em vez de filtrar por ela. Várias palavras-chave são combinadas com AND e cada uma é correspondida dentro das palavras, então cada palavra extra estreita a pesquisa, e uma frase entre aspas não retorna nada, independentemente do que o formulário do próprio site oferece.

Em retorno: linhas carregando song_id, que get_song recebe; title; url; e o artist. total_matches é o número que o site imprime, contando canções correspondentes em todas as páginas, então ele excede as linhas de uma página. page_served é a página que o site realmente serviu, já que ele responde a uma página além da última com a última página e sem erro: leia-a em vez de assumir a página pedida. page_count e has_more_pages são null onde o site não imprimiu nenhum dos dois.

get_song

Lê um disco por completo.

ArgumentoTipoObrigatórioO que faz
song_idstring, até 20 caracteressimO id que uma linha de pesquisa carrega.
include_lyricsbooleano, padrão truenãoCarrega as letras transcritas quando a página as tem.

Em retorno: title, artist, credited_performer, year, writers, duration com o texto exatamente como o disco o imprime e seu precision, labels com uma entrada por selo, catalogue_reference, presentation, sleeve_credits, image_url, added_on como data ISO, as colocações nas paradas da estação, favourites e comments. O título, o artista e a duração são sempre informados; o resto está ausente em alguns discos e volta null em vez de ser adivinhado, e um contador para o qual a página não imprime nada é desconhecido em vez de zero. lyrics.available diz se a página carrega uma transcrição, e lyrics.text guarda as palavras com o transcriber que as escreveu.

get_artist

Lê o que a coleção guarda sobre um artista, com os discos que ela tem dele.

ArgumentoTipoObrigatórioO que faz
artist_idstring, até 20 caracteressimO id do artista que um disco carrega.
limitinteiro, 1 a 200, padrão 100nãoDiscos dele a servir.

Em retorno: name, aliases, surname, first_name, nationality, birth_date, presentation, see_also, links e photo_url, cada um null ou vazio onde a página não afirma nada. discography carrega os discos dele, cada um com seu song_id para get_song, seu title, url, year e com que frequência a estação o programou. discography_count conta os discos servidos e songs_on_page os discos que a página guardava, então uma discografia truncada fica visível.

get_random_song

Sorteia um disco que ninguém escolheu, entre os ids que o site serve. É para navegar pela coleção quando nenhuma canção específica está sendo perguntada.

ArgumentoTipoObrigatórioO que faz
include_lyricsbooleano, padrão truenãoCarrega as letras transcritas quando a página as tem.

Em retorno: o disco que get_song retorna.

list_new_songs

Lê o que a coleção acabou de catalogar.

ArgumentoTipoObrigatórioO que faz
limitinteiro, 1 a 50, padrão 20nãoLinhas a servir.

Em retorno: linhas carregando song_id, title lidas da linha que o feed publica, artist_name, listed_as, url e published_at. entries_in_feed é o número de entradas que o feed guarda, que é um número fixo e não diz nada sobre quantos discos a coleção guarda.

Configuração

Toda variável é opcional. Defina-as no bloco env da configuração do seu cliente.

VariávelPadrãoO que ela faz
BIDE_USER_AGENTa identidade do projetoNomeia seu aplicativo para o site, com um endereço onde uma pessoa pode ser alcançada.
BIDE_MIN_INTERVAL_MS3000Intervalo entre duas solicitações, de 2000 a 60000.
BIDE_TIMEOUT_MS20000Prazo para uma solicitação, de 1000 a 120000.
BIDE_MAX_RETRIES3Tentativas após uma falha transitória, de 0 a 10.
BIDE_CACHE_TTL_MS900000Por quanto tempo uma página fica na memória, de 0 a 86400000.
BIDE_CACHE_MAX_ENTRIES200Páginas guardadas na memória de uma vez, de 0 a 10000.
BIDE_LOG_LEVELerrorsilent, error, info ou debug, escrito no stderr.

Um valor fora do intervalo volta ao padrão, e o motivo é escrito no stderr.

Erros

Toda falha carrega um de seis códigos, uma mensagem e, onde ajuda, uma dica nomeando o próximo passo.

CódigoO que aconteceuO que fazer
not_foundO site respondeu e não possui tal registro.Verifique o id com search_songs.
invalid_inputOs argumentos foram recusados antes de qualquer solicitação ser enviada.Leia a mensagem, que nomeia o argumento.
rate_limitedO site pediu que este cliente diminuísse o ritmo.Aguarde o número de segundos que a dica indica e chame novamente com os mesmos argumentos. O registro ainda está lá.
parse_failureA página carregou e o conteúdo esperado estava ausente.Reporte em o rastreador de problemas.
network_errorA solicitação não foi concluída.Tente novamente em breve.
timeoutA solicitação passou do prazo.Aumente BIDE_TIMEOUT_MS, ou peça menos linhas.

Como biblioteca

A camada que lê o site é publicada por conta própria, com seu ritmo, seu cache e seus erros, e sem protocolo anexado.

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 e getNewSongs respondem cada um a { data, cached }, e lançam um erro carregando um dos seis códigos. O intervalo mínimo de dois segundos entre duas solicitações também se aplica aqui.

Ritmo e atribuição

As solicitações saem uma de cada vez com pelo menos três segundos entre elas, e o intervalo mínimo de dois segundos se mantém independentemente de como o servidor está configurado. Bide & Musique é mantido por uma associação voluntária com recursos próprios, e esse ritmo é o que a coleção merece. O User-Agent sempre termina com a identidade do projeto e um endereço onde uma pessoa pode ser contatada.

Cada resultado carrega o endereço da página do registro. O catálogo é o trabalho da associação e dos ouvintes que o construíram, transcrições incluídas.

Este servidor MCP é um projeto não oficial, sem afiliação com Bide & Musique.

Privacidade

Este servidor não coleta nada sobre você e não envia nada ao seu autor. Ele roda na sua máquina, contata www.bide-et-musique.com e nada mais, mantém as respostas na memória enquanto roda e não grava nada em disco. PRIVACY.md declara o que uma solicitação carrega e quais configurações alteram qualquer parte disso.

Desenvolvimento

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

Os testes rodam contra fixtures gerados e não fazem nenhuma solicitação de rede. A suíte ao vivo, npm run test:live, faz uma solicitação por rota e roda todas as noites contra o próprio site.

Contribuindo

Bugs, perguntas e ideias pertencem ao rastreador de problemas. Pull requests são bem-vindos; abrir uma issue primeiro ajuda a concordar sobre a forma da mudança. Veja CONTRIBUTING.md.

Licença

MIT, veja LICENSE. O catálogo pertence a Bide & Musique e aos ouvintes que o construíram.


mcp-bideetmusique (français)

Versão em inglês

Bide & Musique é uma rádio web francesa e a coleção de discos que ela transmite, catalogada à mão pela associação voluntária que a mantém. Seu assunto é a canção esquecida: o fracasso, o disco de fantasia, o tema de televisão, o compacto que ninguém relançou. A página de um disco traz o intérprete, os autores e compositores, o ano, o selo e sua referência de catálogo, a capa, a duração, as classificações do hit-parade da estação, e as letras quando um ouvinte as transcreveu.

Este servidor conecta um cliente de conversa a essa coleção. Pode-se pesquisar segundo um eixo por vez, por intérprete, título, autor, letras, selo ou ano; ler uma ficha inteira; ler o que o site contém sobre um artista com sua discografia; sortear um disco; e ver o que acabou de ser catalogado. Nenhuma chave de API, nenhuma conta.

Instalação

Instalação em um clique

Install in Cursor Install in VS Code

Claude Code

claude mcp add bideetmusique -- npx -y mcp-bideetmusique

Claude Desktop, Cursor e qualquer cliente no formato de configuração padrão

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

Node 24 ou mais recente é necessário, e nenhuma variável de ambiente precisa ser preenchida.

Com Docker

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

-i mantém a entrada padrão aberta, que é o canal do protocolo, e -t é omitido porque um TTY reescreve o fluxo. O contêiner precisa de acesso HTTPS de saída para www.bide-et-musique.com, e nada mais: nenhum volume, nenhuma porta, nenhuma credencial.

Bundle, sem npm

Baixe mcp-bideetmusique-2.0.1.mcpb de a última publicação e abra-o. Um cliente que gerencia bundles MCP o instala sozinho, sem npm e sem arquivo de configuração para modificar. O bundle carrega suas dependências, portanto nada é baixado na instalação.

O que se pode pedir

  • « O que Bide & Musique tem de Jacques Dutronc? »
  • « Quais canções falam de um submarino em suas letras? »
  • « Leia-me esta ficha: o selo, o ano, quem a escreveu. »
  • « Faça-me ouvir algo aleatório na coleção. »
  • « O que foi catalogado recentemente? »

O caminho comum vai de uma pesquisa a uma ficha: uma linha carrega um song_id, e get_song a lê.

As ferramentas

FerramentaO que faz
search_songsPesquisa na coleção segundo um eixo por vez.
get_songLê uma ficha inteira, letras incluídas.
get_artistLê um artista e os discos que a coleção tem dele.
get_random_songSorteia um disco que ninguém escolheu.
list_new_songsLê o que a coleção acabou de catalogar.

search_songs

Pesquisa segundo um eixo, que é preciso nomear: cada um faz uma pergunta diferente, e uma resposta sobre um não diz nada sobre os outros. Um nome que não retorna nada como intérprete pode muito bem ser um título.

ArgumentoTipoObrigatórioO que faz
querystring, até 200 caracteressimO que se procura neste eixo.
search_typeperformer, title, writer, lyrics, label ou yearsimO eixo de pesquisa.
pageinteiro, 1 a 200, padrão 1nãoQual página de linhas.
limitinteiro, 1 a 50, padrão 20nãoLinhas a servir.
search_typeEncontra
performero artista creditado no disco
titleo nome da canção
writerquem a escreveu ou compôs
lyricsas palavras que são cantadas nela
labelo selo que a publicou
yearo ano impresso nela

O eixo year aceita um ano com quatro dígitos e nada mais: o site descarta qualquer outra palavra em vez de filtrar por ela. Várias palavras-chave são combinadas por E e cada uma é pesquisada dentro das palavras, portanto cada palavra adicional restringe a pesquisa, e uma expressão entre aspas não retorna nada, independentemente do que o formulário do site proponha.

Em retorno: linhas carregando song_id, que get_song retoma; title; url; e o artist. total_matches é o número que o site imprime, contando as canções correspondentes em todas as páginas, portanto ultrapassa as linhas de uma página. page_served é a página que o site realmente serviu, já que ele responde a uma página além da última com a última página e sem erro: leia-a em vez de supor a página solicitada. page_count e has_more_pages valem null onde o site não imprimiu nem um nem outro.

get_song

Lê uma ficha inteira.

ArgumentoTipoObrigatórioO que faz
song_idstring, até 20 caracteressimO identificador que uma linha carrega.
include_lyricsbooleano, padrão truenãoTrazer as letras transcritas quando a página as tem.

Em retorno: title, artist, credited_performer, year, writers, duration com o texto exatamente como a ficha o imprime e sua precision, labels com uma entrada por selo, catalogue_reference, presentation, sleeve_credits, image_url, added_on em data ISO, as classificações do hit-parade da estação, favourites e comments. O título, o artista e a duração são sempre indicados; o resto está ausente em algumas fichas e retorna null em vez de ser adivinhado, e um contador que a página não imprime é desconhecido em vez de nulo. lyrics.available diz se a página carrega uma transcrição, e lyrics.text contém as palavras com o transcriber que as anotou.

get_artist

Lê o que a coleção contém sobre um artista, com os discos que ela tem dele.

ArgumentoTipoObrigatórioO que faz
artist_idstring, até 20 caracteressimO identificador de artista que uma ficha carrega.
limitinteiro, 1 a 200, padrão 100nãoDiscos dele a servir.

Em retorno: name, aliases, surname, first_name, nationality, birth_date, presentation, see_also, links e photo_url, cada um null ou vazio onde a página não indica nada. discography carrega seus discos, cada um com seu song_id para get_song, seu title, url, year e o número de vezes que a estação o programou. discography_count conta os discos servidos e songs_on_page aqueles que a página continha, de modo que uma discografia truncada fica visível.

get_random_song

Sorteia um disco que ninguém escolheu, entre os identificadores que o site serve. Serve para percorrer a coleção quando nenhuma canção específica está em questão.

ArgumentoTipoObrigatórioO que faz
include_lyricsbooleano, padrão truenãoTrazer as letras transcritas quando a página as tem.
Em retorno: a ficha que retorna get_song.

list_new_songs

Lê o que a coleção acabou de catalogar.

ArgumentoTipoObrigatórioO que faz
limitinteiro, 1 a 50, padrão 20nãoLinhas a servir.

Em retorno: linhas com song_id, title lido na linha que o fluxo publica, artist_name, listed_as, url e published_at. entries_in_feed é o número de entradas que o fluxo contém, que é um número fixo e não diz nada sobre a quantidade de discos que a coleção contém.

Configuração

Cada variável é opcional. Elas são definidas no bloco env da configuração do cliente.

VariávelPadrãoO que faz
BIDE_USER_AGENTa identidade do projetoNomeia seu aplicativo junto ao site, com um endereço para contato.
BIDE_MIN_INTERVAL_MS3000Intervalo entre duas requisições, de 2000 a 60000.
BIDE_TIMEOUT_MS20000Tempo limite de uma requisição, de 1000 a 120000.
BIDE_MAX_RETRIES3Tentativas após uma falha temporária, de 0 a 10.
BIDE_CACHE_TTL_MS900000Duração durante a qual uma página permanece em memória, de 0 a 86400000.
BIDE_CACHE_MAX_ENTRIES200Páginas mantidas em memória por vez, de 0 a 10000.
BIDE_LOG_LEVELerrorsilent, error, info ou debug, escrito na saída de erro.

Um valor fora do intervalo volta ao padrão, e o motivo é escrito na saída de erro.

Erros

Cada falha carrega um dos seis códigos, uma mensagem e, quando ajuda, uma indicação do próximo passo.

CódigoO que aconteceuO que fazer
not_foundO site respondeu e não tem essa ficha.Verifique o identificador com search_songs.
invalid_inputOs argumentos foram recusados antes de qualquer requisição.Leia a mensagem, que nomeia o argumento.
rate_limitedO site pede que este cliente desacelere.Aguarde os segundos indicados e chame novamente com os mesmos argumentos. A ficha ainda está lá.
parse_failureA página carregou e o conteúdo esperado está ausente.Reporte em o rastreador de incidentes.
network_errorA requisição não foi concluída.Tente novamente em breve.
timeoutA requisição excedeu seu tempo limite.Aumente BIDE_TIMEOUT_MS, ou peça menos linhas.

Como biblioteca

A camada que lê o site é publicada sozinha, com seu ritmo, seu cache e seus erros, sem protocolo anexado.

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 e getNewSongs respondem cada um { data, cached }, e levantam um erro com um dos seis códigos. O piso de dois segundos entre duas requisições também vale aqui.

Ritmo e atribuição

As requisições saem uma a uma com pelo menos três segundos entre elas, e o piso de dois segundos vale independentemente da configuração. Bide & Musique é mantido por uma associação voluntária com recursos próprios, e esse ritmo é o que devemos à coleção. O User-Agent sempre termina com a identidade do projeto e um endereço para contato.

Cada resultado traz o endereço da página da ficha. O catálogo é a obra da associação e dos ouvintes que o construíram, transcrições incluídas.

Este MCP é um projeto não oficial, sem afiliação à Bide & Musique.

Privacidade

Este servidor não coleta nada sobre você e não envia nada ao autor. Ele roda na sua máquina, junta apenas www.bide-et-musique.com, guarda suas respostas em memória enquanto roda e não escreve nada no disco. PRIVACY.md diz o que uma requisição leva e quais ajustes mudam isso.

Desenvolvimento

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

Os testes rodam em fixtures geradas e não emitem nenhuma requisição. A suíte ao vivo, npm run test:live, emite uma requisição por rota e roda todas as noites contra o próprio site.

Contribuindo

Anomalias, perguntas e ideias têm seu lugar em o rastreador de incidentes. As propostas de modificação são bem-vindas; abrir um ticket primeiro ajuda a alinhar a forma da mudança. Veja CONTRIBUTING.md.

Licença

MIT, veja LICENSE. O catálogo pertence à Bide & Musique e aos ouvintes que o construíram.