Unofficial Apple Music for macOS
Peça uma playlist. Receba uma de verdade, tocando no Apple Music — sem conta, nada armazenado.
Documentação
Unofficial Apple Music MCP
Deixe o Claude tocar sua música. Baixe, arraste, clique duas vezes. É só isso.
Um único pedido. Uma playlist de verdade, tocando, sem as versões explícitas.
⬇ Baixar para Apple Silicon
·
⬇ Baixar para Intel
Não sabe qual? Menu Apple → Sobre Este Mac. "Apple M1/M2/M3…" é Apple Silicon.
notarizado pela Apple · sem terminal · sem conta de desenvolvedor ·
todos os downloads e checksums
Peça música em português simples
"Monte uma playlist de aniversário de Hogwarts para meu filho. Só trilhas sonoras, nada assustador."
"Já cansei de The Heist. O que você me sugere agora?"
"Mais parecido com aquele disco do coral Eric Ericson, mas pule a metade de Natal."
O Claude faz o trabalho no app Música que você já tem. A playlist que ele cria é uma playlist de verdade. Ela sincroniza com o seu celular.
| Playlists | Criar, adicionar, reordenar, renomear, organizar em pastas, excluir |
| Sua biblioteca | Pesquisar, navegar, avaliar músicas, marcar favoritas, ver o que você ouviu |
| Reprodução | Tocar, pausar, pular, avançar, embaralhar, repetir, volume, AirPlay |
| O catálogo completo | Pesquisar todo o Apple Music, tocar, adicionar à sua biblioteca |
Tocar ou adicionar músicas que você ainda não possui exige uma assinatura do Apple Music. Essa é uma regra da Apple, não deste servidor. Todo o resto funciona sem ela.
Instalação
Você precisa de macOS 12 ou posterior e do app Música conectado à sua conta Apple. Tocar ou adicionar músicas do catálogo exige macOS 14 ou posterior.
- Baixe o app para Apple Silicon, ou a versão para Intel.
- Descompacte. Arraste UnofficialAppleMusicMCP.app para a pasta Aplicativos.
- Clique duas vezes uma vez.
Essa é a instalação completa. Sem Python, sem Homebrew, sem Terminal. O app traz tudo o que precisa consigo.
A Apple notarizou essas versões, então o app simplesmente abre. Sem aviso de "desenvolvedor não identificado", sem truque de clique com botão direito, sem visita às Ajustes do Sistema.
Arraste para Aplicativos primeiro. Se você abrir direto da pasta Downloads, o macOS executa a partir de uma cópia temporária que desaparece ao sair, e o helper em segundo plano acaba apontando para um arquivo que não existe mais.
A janela de configuração então faz três perguntas. Você pode pular qualquer uma.
| O que pergunta | O que acontece | Por quê |
|---|---|---|
| Instalar o helper em segundo plano? | Adiciona um pequeno programa que inicia quando você faz login | É isso que permite que a permissão pertença ao app em vez do seu terminal |
| Configurar seus apps de IA? | Adiciona uma entrada ao Claude Desktop, Claude Code, Cursor, Windsurf, Codex ou VS Code | Para que eles o encontrem. Suas outras ferramentas ficam intactas, e ele faz backup de cada arquivo antes |
| Permitir acesso ao Música? | Mostra a caixa de permissão padrão do macOS | Aprovar aqui faz a permissão recair sobre este app |
Reinicie os apps de IA que você escolheu, e pronto.
Quer compilar você mesmo? Assine. Veja A partir do código-fonte. O macOS vincula a permissão do Música a uma assinatura. Um app não assinado parece um app novo a cada recompilação, então ele pedirá permissão novamente toda vez.
Por que ele pede tão pouco
Software pode alcançar tudo o que você deixar. Isso importa mais do que o normal aqui, porque este software recebe ordens de uma IA.
O servidor de Apple Music mais capaz que encontrei exige uma permissão do macOS chamada Acessibilidade. O nome engana. Não tem nada a ver com leitores de tela ou tecnologia assistiva. Ela permite que um app controle outro: digitar teclas, clicar botões, ler o que está na tela.
O macOS não limita isso a um único app. Você concede para tudo ou nada.
Então um servidor de música com essa permissão também pode digitar no seu e-mail. E ele recebe instruções de um modelo lendo texto que ninguém revisou: nomes de faixas, títulos de playlists, o que ele acabou de pesquisar. Um título de playlist malicioso vira um toque de teclado.
Este fork excluiu esse código. Ele pede três coisas em vez disso:
| Ele obtém | Ele não obtém |
|---|---|
| Controle do app Música, e nada mais. Revogue em Ajustes do Sistema a qualquer momento | A permissão de Acessibilidade. Não há código restante que pudesse usá-la |
| Uma conexão com o Apple Music, para adicionar músicas à sua biblioteca | Qualquer navegador, seus cookies, suas abas |
| Um programa em segundo plano, iniciado no login | As permissões do seu terminal, ou qualquer outra coisa no seu Mac |
Essa é a lista completa, e uma suíte de testes falha o build se qualquer item voltar a aparecer.
Ele ainda toca todo o catálogo do Apple Music. A maioria dos servidores paga por isso com a permissão acima. Este usa o MusicKit da própria Apple, assinado com a identidade do app: uma caixa de aprovação, sem conta de desenvolvedor, e sem senha ou chave armazenada em qualquer lugar do seu Mac.
"Seguro" é o objetivo, não um certificado. Ninguém independente auditou isto. As afirmações que valem a pena confiar são as que um teste pode verificar, e elas estão listadas abaixo.
Por que um app em vez de um comando
O macOS culpa o processo pai. Quando seu app de IA inicia um programa auxiliar, a permissão recai sobre o app de IA, não sobre o auxiliar. A configuração usual, portanto, entrega "controlar o Música" para todo o seu terminal e para tudo o que você já executou nele.
Este app se divide em dois:
Claude Desktop ──stdio──▶ shim ──unix socket (0600)──▶ helper ──▶ Music.app
no permissions owns the grant
O shim conversa com o Claude e não pode tocar no Música. O helper possui a permissão e é iniciado pelo próprio macOS. Você tem uma linha em Ajustes do Sistema que pode desativar, e seu terminal não recebe nada. docs/PERMISSIONS.md tem os detalhes.
O que ele nunca fará
| Sem Acessibilidade | Sem teclas falsas, sem cliques falsos, sem ler janelas de outros apps |
| Sem navegador | Sem Playwright, sem Chrome controlado de dentro do app |
| Sem ler seu navegador | Nunca toca nos cookies do Safari nem executa JavaScript nas suas abas |
| Sem abrir links | Ele lê links do Apple Music, nunca os entrega a um navegador |
| Sem shell | Ele executa exatamente um programa: osascript, com timeout |
| Sem senhas armazenadas | Não há nada em ~/.config que valha a pena roubar |
| Sem APIs privadas | Apenas api.music.apple.com e a API pública de busca da Apple |
Cada linha é um teste em tests/test_capability_invariants.py,
rodando como um job de CI próprio. Excluir um subsistema é um evento único. Mantê-lo
excluído é uma propriedade.
Para desenvolvedores
Um fork endurecido de epheterson/applemusic-mcp. O upstream faz mais e sempre fará: Windows e Linux, os players web do Chrome e do Safari, e a fila Up Next, que vivia dentro do player web e não sobreviveu à sua remoção. Este fork troca tudo isso por um raio de impacto menor e um instalador que seus parentes conseguem usar.
Com pip, pipx ou uvx
A wheel carrega o mesmo helper MusicKit assinado que o app, então esta é uma instalação completa, não uma versão reduzida.
pipx install secure-applemusic-mcp-for-osx # or: uv tool install …
Toda release também tem a wheel anexada com checksums, se você preferir verificar um arquivo antes.
Não há janela de configuração neste caminho, então dois passos são seus.
1. Adicione ao seu cliente MCP. Para Claude Desktop, em
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"unofficial-apple-music": {
"command": "secure-applemusic-mcp",
"args": ["serve"]
}
}
}
Para Claude Code: claude mcp add unofficial-apple-music -- secure-applemusic-mcp serve.
Outros clientes usam o mesmo comando no próprio arquivo de configuração. Use o caminho
completo se ele não estiver no PATH do seu cliente, já que apps com interface
gráfica muitas vezes não herdam um shell
PATH. which secure-applemusic-mcp imprime o que colar.
2. Aprove o Apple Music uma vez. Reinicie o cliente e peça para executar
config(action='signin'). Um prompt nativo aparece e nada é armazenado. Até
fazer isso, tudo funciona exceto adicionar músicas que você ainda não possui.
A wheel é exclusiva para macOS e cobre ambos os chips. pip se recusa a instalá-la
em outros lugares em vez de entregar uma versão sem MusicKit.
A partir do código-fonte
git clone https://github.com/jaminben/secure-applemusic-mcp-for-osx
cd secure-applemusic-mcp-for-osx
./install.sh --scoped --sign "My Local Signing Cert" # or plain ./install.sh
tools/make-signing-cert.sh # one-off local signing cert
SIGN_ID="Apple Music MCP Self-Signed" make app # build a signed .app
install.sh cria um virtualenv 0700 privado a partir do checkout em que você
está. Nada é canalizado da rede para um shell. Um simples
./install.sh pula o bundle e configura o servidor stdio mais simples, sem escopo.
Sem o helper MusicKit embutido, um checkout do código-fonte recorre a um token
opcional de desenvolvedor Apple (login --dev), que também desbloqueia metadados
de catálogo mais ricos, gráficos e recomendações.
Compartilhando uma versão que você compilou
A release
é notarizada, então abre no Mac de qualquer pessoa sem precisar clicar em nada. Basta
enviar a correta: -arm64 para Apple Silicon, -x86_64 para Intel.
Sua própria compilação é diferente. Autoassinada não é notarizada, o macOS a recusa na primeira abertura, e o antigo truque de clique com botão direito não funciona mais. Seu amigo precisaria de:
Ajustes do Sistema → Privacidade e Segurança → role para baixo → Abrir mesmo assim
Autoassinar ainda vale a pena, porque dá ao app uma identidade estável e a permissão do Música sobrevive a recompilações.
Para entregar a sua tão limpa quanto a release, assine com um certificado
Developer ID Application e notarize. make release executa a sequência completa,
incluindo grampear o ticket no bundle. (Um zip feito antes de grampear
ainda precisa da rede para validar, que é o motivo usual de um app "notarizado"
ser recusado na máquina de outra pessoa.)
SIGN_ID="Developer ID Application: Your Name (TEAMID)" make release
As credenciais de notarização estão documentadas no topo de
tools/notarize.sh. É preciso uma conta paga de Apple Developer
($99/ano). Nada mais no app muda.
Acompanhando o upstream
MIT, © Eric Pheterson, mantido integralmente. Forkado em 0acf697; o histórico
do upstream está preservado no git e em CHANGELOG-upstream.md.
Aplicamos correções de segurança e de funcionamento do upstream aos módulos que mantivemos, e ignoramos commits de funcionalidades que tocam subsistemas excluídos. As exclusões são grandes, então faça cherry-pick por arquivo em vez de merge:
git fetch upstream --tags
git log --oneline fork-base..upstream/main -- src/applemusic_mcp/applescript.py
Os testes de capacidade são a rede de segurança para um cherry-pick que arrastaria uma capacidade excluída de volta.
Desinstalação
Arraste o app para a Lixeira e cole isto no Terminal:
launchctl bootout gui/$(id -u)/io.github.jaminben.secure-applemusic-mcp
rm -f ~/Library/LaunchAgents/io.github.jaminben.secure-applemusic-mcp.plist
tccutil reset AppleEvents io.github.jaminben.secure-applemusic-mcp
Remova a entrada unofficial-apple-music da configuração do Claude Desktop; um backup
fica ao lado dela. Para limpar também o cache e o log de auditoria, exclua
~/.config/applemusic-mcp e ~/.cache/applemusic-mcp. Em uma instalação a partir do código-fonte:
./install.sh --uninstall.
Nunca dê a permissão de Acessibilidade a ele. Ele não consegue usá-la. Se algo pedir isso, é um bug. Por favor, reporte.
Segurança
SECURITY.md tem o modelo de ameaças, o que é e o que não é alcançável, e os riscos que permanecem: o próprio app Música não é sandboxed, injeção de prompt é real, e este servidor não tem sandbox própria.
Três problemas herdados do upstream estão corrigidos aqui: uma verificação de link
do Apple Music que podia ser enganada, uma proteção contra path traversal no
recurso exports:// que não fazia nada, e operações destrutivas que agiam com
base em um palpite de substring.
CHANGELOG.md tem os detalhes
e DISCLOSURE.md acompanha como foram reportados ao upstream.
Perguntas
Preciso de uma conta de Apple Developer, uma chave de API ou um arquivo .p8?
Não. O MusicKit da Apple assina cada requisição usando a assinatura do próprio app
mais sua aprovação única. Não há chave para criar, colar ou armazenar. O token
opcional de desenvolvedor só aumenta o limite de taxa da Apple para trabalhos em
massa, como importar uma playlist enorme.
Preciso de uma assinatura do Apple Music?
Não para a sua própria biblioteca, suas playlists ou reprodução local. Sim para reproduzir ou
adicionar qualquer coisa do catálogo da Apple.
Funciona no Windows ou Linux? Não. Ele controla diretamente o app Música do Mac. Use o upstream se você precisar desses sistemas.
Com quais apps de IA ele funciona? Claude Desktop, Claude Code, Cursor, Windsurf, Codex e VS Code. A janela de configuração encontra os que você tem e os configura para você.
Algo é armazenado ou enviado para algum lugar? Nenhuma senha é armazenada, porque não existe uma. O app conversa com a Apple e com mais nada. Sem rastreamento, sem serviço de terceiros, sem conta neste projeto.
O que o macOS vai me pedir? Duas coisas: permissão para controlar o app Música e permissão para usar o Apple Music. Ele nunca pede Acessibilidade, nunca controla um navegador e nunca envia cliques falsos.
Como eu atualizo? Baixe o zip mais recente, substitua o app, reinicie seu app de IA. Os links de download acima sempre apontam para a versão mais nova.
Isso é feito pela Apple? Não. É um projeto independente, não afiliado, endossado ou suportado pela Apple. "Apple Music" e "MusicKit" são marcas registradas da Apple.
Outros servidores MCP do Apple Music
Análise completa com fontes em docs/COMPARISON.md. A versão resumida:
| Melhor para | Precisa de conta de desenvolvedor | Instalação | |
|---|---|---|---|
| kennethreitz/mcp-applemusic | Algo pequeno que você consegue ler de uma vez | não | clone + edite o JSON |
| epheterson/applemusic-mcp | Mais recursos; Windows/Linux; fila Up Next | não | pip/uvx + edite o JSON |
| Cifero74/mcp-apple-music | A API REST oficial | sim | assistente + edite o JSON |
| este fork | Quem não quer abrir o Terminal | não | duplo clique |
Vale saber se você está escolhendo: o servidor do kennethreitz insere os parâmetros de ferramenta direto no AppleScript sem escapá-los, então uma aspa em um nome de faixa ou playlist quebra a string. Reportado com correção na issue #8.