Unofficial Apple Music for macOS
Peça uma playlist. Receba uma de verdade, tocando no Apple Music — sem conta, nada armazenado.
Documentação
Servidor MCP Não Oficial do Apple Music
Deixe o Claude tocar sua música. Baixe, arraste, clique duas vezes — é assim que se instala.
Um único pedido. Uma playlist de verdade, tocando, com as versões explícitas de fora.
⬇ 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
"Qual foi a melhor música de 2024 que eu provavelmente nunca ouvi?" "Toque o álbum que definiu o hip-hop dos anos 90." "Algo como Khruangbin, mas mais rápido."
Eu queria um servidor MCP do Apple Music que eu pudesse entregar a um amigo.
Todos os que eu analisei foram feitos para desenvolvedores. Clonar um repositório, rodar um gerenciador
de pacotes, editar manualmente um JSON de configuração; um deles queria uma conta de desenvolvedor Apple, uma
chave MusicKit e um arquivo .p8 antes de tocar uma nota. Isso é uma exigência justa para um
desenvolvedor e impossível para qualquer outra pessoa — e "deixar minha IA colocar música"
não é um pedido de desenvolvedor.
A metade da segurança é o mesmo problema pelo outro lado. Entregar software a alguém significa entregar tudo o que ele pode alcançar. O servidor mais capaz que encontrei precisa da permissão do macOS com o nome confuso de Acessibilidade — a API de automação que permite que um app controle outro com teclas e cliques sintéticos. Conceda isso e o processo pode digitar em qualquer janela, clicar em qualquer coisa na tela e ler as interfaces de outros aplicativos. Não pode ser limitado a um único app; é tudo ou nada. E você estaria concedendo isso a um programa que recebe instruções de um modelo lendo texto que ninguém controla. Nomes de faixas. Títulos de playlists. O que quer que ele tenha acabado de pesquisar.
Para deixar claro sobre o nome: a permissão "Acessibilidade" do macOS é sobre controlar seu Mac programaticamente, não sobre tecnologia assistiva. Este app nunca pede isso, e isso não tem nada a ver com leitores de tela — a janela de configuração e tudo nela funciona com VoiceOver como qualquer outro app do Mac.
Então eu construí este para pedir o mínimo que o macOS me permite:
| Ele obtém | Ele não obtém |
|---|---|
| AppleScript para o Music.app — um app, revogável em Ajustes do Sistema | A API de automação de Acessibilidade. Nunca. Ele não pode usá-la |
| MusicKit, para que possa adicionar músicas à sua biblioteca | Qualquer navegador, seus cookies, suas abas |
| Um processo em segundo plano, iniciado no login | As permissões do seu terminal. Nada no seu PATH |
Essa é a lista completa, e ela é aplicada por uma suíte de testes que falha a compilação se uma capacidade removida voltar.
E ainda toca o catálogo inteiro. Se você assina o Apple Music, você pode pedir qualquer coisa que a Apple tenha — não apenas o que já está na sua biblioteca. Isso geralmente custa algo: o outro servidor que gerencia isso controla a interface do Music.app com cliques sintéticos, que é exatamente a permissão de todo o sistema mencionada acima. Este usa MusicKit, assinado com a identidade do próprio app — um prompt de aprovação, sem conta de desenvolvedor e sem credencial armazenada em qualquer lugar do seu Mac.
Os limites são o que o tornam útil. Uma ferramenta que ninguém pode instalar com segurança não ajuda ninguém. Como este pede três coisas específicas e revogáveis — e porque a permissão recai sobre o app em vez de sobre o que quer que tenha iniciado seu cliente de IA — é algo que você pode realmente dar a uma pessoa, que era o objetivo.
Um fork endurecido de epheterson/applemusic-mcp
(forkado em 0acf697). O upstream é o projeto mais capaz — multiplataforma, reprodução
web, Up Next, funciona sem conta de desenvolvedor Apple. Este fork troca
essas coisas por uma superfície de capacidades menor.
Por que isso existe
Dois objetivos, e a ordem importa:
- Qualquer pessoa deve conseguir instalar — não apenas quem usa terminal.
- Deve ser seguro entregar a essa pessoa.
Ambos surgiram ao olhar o que já existia. Em agosto de 2026, todo outro
servidor MCP do Apple Music exigia linha de comando: clonar um repositório ou rodar um gerenciador
de pacotes, e então editar manualmente o JSON de configuração do Claude. Um também queria uma conta
de desenvolvedor Apple, uma chave MusicKit e um arquivo .p8 antes de fazer qualquer coisa.
Isso é uma barreira justa para uma ferramenta de desenvolvedor e impossível para qualquer outra pessoa
— e "deixar o Claude controlar minha música" não é um pedido de desenvolvedor. Daí: baixar,
arrastar, clicar duas vezes, e um instalador que edita a configuração para você.
A metade da segurança é essa mesma pesquisa vista pelo outro lado. O mais capaz desses servidores alcança alguns recursos através de Acessibilidade — a permissão de entrada sintética de todo o sistema do macOS. É uma correção honesta para uma lacuna real (tocar uma faixa do catálogo que você não possui: abrir o Music.app via deep-link e clicar no botão de reprodução com um evento de mouse sintético). O problema é que a Acessibilidade não pode ser limitada a um único app. Concedê-la a um servidor de música também concede a capacidade de digitar em qualquer janela, clicar em qualquer coisa na tela e ler as interfaces de outros aplicativos. E você estaria concedendo isso a um programa que recebe instruções de um modelo lendo texto que ninguém controla — nomes de faixas, títulos de playlists, o que quer que ele tenha acabado de pesquisar. Esse é um caminho muito curto de injeção de prompt para teclas sintéticas, então este fork removeu esses caminhos de código inteiramente e um teste os mantém removidos.
O mesmo instinto produziu o pacote do app. Um servidor que seu cliente MCP inicia herda as permissões do cliente, então a configuração comum significa aprovar "Automação → Música" para todo o seu terminal, e tudo o que você já executou a partir dele. Aqui a concessão recai sobre um único helper iniciado por launchd — uma linha revogável em Ajustes do Sistema, e seu terminal não recebe nada.
Nada disso torna o fork melhor que o upstream; torna-o menor. O upstream faz mais e sempre fará. Este foi feito para ser entregue a alguém que nunca vai ler seu código-fonte.
Sobre o nome. "Seguro" é o objetivo, não uma certificação. Isto não foi auditado de forma independente. A afirmação verificável é a abaixo.
O que ele não faz
| Sem API de Acessibilidade | Sem teclas sintéticas, sem cliques sintéticos, sem ler janelas de outros apps. (A permissão de automação do macOS — não relacionada a tecnologia assistiva.) |
| Sem automação de navegador | Sem Playwright, sem Chrome controlado em processo. |
| Sem ler seu navegador | Nunca toca nos cookies do Safari nem executa JavaScript nas suas abas. |
| Sem abrir URLs | URLs são analisadas, nunca entregues a open ou a um navegador. |
| Sem shell | Apenas um binário é executado: osascript, lista de argumentos, com timeout. |
| Sem credenciais armazenadas por padrão | Nada em ~/.config para roubar. |
| Sem API não oficial | Apenas api.music.apple.com e a API pública de Busca do iTunes. |
Isso é aplicado por tests/test_capability_invariants.py,
que roda como um job próprio de CI. Excluir um subsistema é um evento único; mantê-lo
excluído é uma propriedade.
O que ele faz
Através de Apple Events para o Music.app — sem exigir credencial:
- Playlists: listar, árvore/pastas, criar, adicionar, copiar, mover, remover, renomear, excluir
- Biblioteca: buscar, navegar, adicionados/reproduzidos recentemente, favoritos, avaliar (incl. estrelas), remover, snapshot/diff
- Reprodução: tocar, pausar, próxima/anterior, avançar, volume, embaralhar, repetir, tocando agora, revelar, seleção de dispositivo AirPlay
- Busca no catálogo via API pública de Busca do iTunes
Toque qualquer coisa no catálogo do Apple Music — não apenas o que já está na sua
biblioteca — se você tiver uma assinatura. O app empacotado faz isso através do
MusicKit, assinado com sua própria identidade: um prompt de aprovação, sem conta
de desenvolvedor, sem credencial armazenada. Um checkout do código-fonte sem o helper
MusicKit incluído recorre a um token opcional de desenvolvedor Apple (login --dev), que
também desbloqueia metadados de catálogo mais ricos, paradas e recomendações.
O que o upstream tem que este não tem
Suporte a Windows/Linux, os players web do Chrome e Safari, e a fila Up Next (ela vive na instância MusicKit do player web e não sobrevive à sua remoção). O upstream também toca faixas do catálogo que você não possui, mas alcança isso através de automação de interface e, portanto, da permissão de Acessibilidade; aqui a mesma coisa roda no MusicKit.
Instalação
Requisitos: macOS 12+, o app Música conectado à sua conta do Apple Music. Nada mais — sem Python, sem Homebrew, sem linha de comando.
- Baixe o app.
(Cada versão está na página de Releases
com um
SHA256SUMS.txtse quiser verificar antes.) - Descompacte e arraste UnofficialAppleMusicMCP.app para
/Applications. - Clique duas vezes uma vez.
As versões são assinadas com um Developer ID e notarizadas pela Apple, então abrem
normalmente — sem aviso de "desenvolvedor não identificado", sem truque de clique com botão direito e sem
visita aos Ajustes do Sistema. Arraste para /Applications antes de abrir, em vez de
executá-lo da pasta Downloads: o macOS executa um app em quarentena a partir de uma cópia
somente leitura aleatória que desaparece ao sair, o que deixa o helper em segundo plano
apontando para um caminho que não existe mais.
A configuração pergunta antes de cada etapa, e cada uma pode ser pulada:
| Etapa | O que faz | Por quê |
|---|---|---|
| Helper em segundo plano | Instala um LaunchAgent que inicia o helper no login | Ser iniciado pelo launchd é o que dá ao app sua própria identidade de permissão |
| Clientes de IA | Adiciona uma entrada unofficial-apple-music a cada cliente que você marcar — Claude Desktop, Claude Code, Cursor, Codex, VS Code | Para que possam alcançá-lo. Seus outros servidores são mantidos e cada arquivo é copiado antes |
| Permissão | Aciona o prompt do macOS "controlar Música" | Pedir agora significa que a concessão recai sobre este app, não sobre o que inicia seu cliente |
Então reinicie os clientes que você escolheu. É isso.
O app é autossuficiente: ele carrega seu próprio runtime Python, então não há nada
para instalar e nada no seu PATH para conflitar.
Se você compilar você mesmo, assine — veja A partir do código-fonte. O app lançado é notarizado e não precisa de nada disso, mas uma compilação local não é, e o macOS vincula a permissão do Música à identidade de assinatura: um app não assinado apresenta uma nova identidade sempre que seu conteúdo muda, então a permissão é solicitada novamente a cada recompilação.
Por que o app, em vez de apenas um comando
O macOS atribui uma concessão de permissão ao processo responsável — para um servidor que seu cliente MCP inicia, esse é o cliente. Então a configuração óbvia significa aprovar "Automação → Música" para todo o seu terminal, e cada programa que você executa a partir dele herda isso.
O app evita isso dividindo em dois:
Claude Desktop ──stdio──▶ shim ──unix socket (0600)──▶ helper ──▶ Music.app
no permissions owns the grant
O shim não contém nada e não pode falar com o Música; o helper iniciado por launchd é o dono da concessão. Você obtém uma linha revogável em Ajustes do Sistema → Privacidade e Segurança → Automação, e seu terminal não recebe nada. docs/PERMISSIONS.md tem os detalhes.
Com pip, pipx ou uvx
Para pessoas que já vivem no terminal. A wheel carrega o mesmo helper MusicKit assinado que o app, então esta é uma instalação completa, não uma reduzida.
pipx install secure-applemusic-mcp-for-osx # or: uv tool install …
A roda também está anexada a cada lançamento com somas de verificação, caso prefira instalar um arquivo que você possa verificar primeiro.
Não há janela de primeira execução neste caminho, então dois passos são seus:
1. Adicione-o ao seu cliente MCP. Para o Claude Desktop, em
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"unofficial-apple-music": {
"command": "secure-applemusic-mcp",
"args": ["serve"]
}
}
}
Para o Claude Code: claude mcp add unofficial-apple-music -- secure-applemusic-mcp serve.
Outros clientes usam o mesmo comando e argumento em seus próprios arquivos de configuração.
Use o caminho completo se o comando não estiver no PATH do seu cliente — aplicativos GUI
muitas vezes não herdam um PATH de shell. which secure-applemusic-mcp dirá
o que colar.
2. Aprove o Apple Music uma vez. Reinicie o cliente e peça para ele executar
config(action='signin'). Um prompt nativo aparece; nada é armazenado. Até
fazer isso, tudo funciona, exceto adicionar músicas que você ainda não possui.
A roda é exclusiva para macOS e cobre ambas as arquiteturas. pip se recusará a
instalá-la em outros lugares, em vez de lhe dar uma compilação sem o trilho 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 instala em um virtualenv privado 0700 a partir do checkout em que você
está — nada é canalizado da rede para um shell. O ./install.sh simples
ignora o pacote e configura o servidor stdio mais simples (sem escopo).
Compartilhando com outra pessoa
Envie a eles o lançamento. Ele é notarizado, então abre no Mac deles sem aviso e sem nada para clicar — esse é o objetivo de pagar pelo certificado.
A única coisa a verificar é a arquitetura. O zip é compilado para uma:
UnofficialAppleMusicMCP-*-arm64 é Apple Silicon (M1 e posteriores). Para um Mac
Intel, compile --arch x86_64. Em caso de dúvida, peça para eles verem → Sobre Este Mac.
Distribuir uma compilação sua é diferente. Uma compilação autoassinada não é uma notarizada: o macOS a recusa na primeira abertura, e o truque de clicar com o botão direito → Abrir não funciona mais em versões recentes. Eles precisam de
Ajustes do Sistema → Privacidade e Segurança → role para baixo → Abrir Mesmo Assim
que é o custo honesto de não notarizar. A autoassinatura ainda vale a pena — ela dá ao aplicativo uma identidade estável, então a permissão do Music sobrevive a recompilações em vez de solicitar novamente toda vez.
Para entregar a sua tão limpa quanto o lançamento, assine com um certificado Developer ID
Application e notarize. make release faz toda a sequência,
incluindo grampear o ticket no pacote (um zip feito antes de grampear
ainda precisa da rede para validar, que é o motivo usual de um aplicativo "notarizado"
ser recusado na máquina de outra pessoa):
SIGN_ID="Developer ID Application: Your Name (TEAMID)" make release
A configuração única para as credenciais do notário está documentada no topo de
tools/notarize.sh.
Isso requer uma conta paga de desenvolvedor Apple ($99/ano). Nada mais sobre o aplicativo muda.
Desinstalação
Mova o aplicativo para a Lixeira e depois:
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) e exclua ~/.config/applemusic-mcp e ~/.cache/applemusic-mcp se
quiser que as credenciais e o log de auditoria também desapareçam. De uma instalação a partir do código-fonte:
./install.sh --uninstall.
Nunca conceda a permissão de Acessibilidade a isso. Ele não pode usá-la. Se algo pedir, isso é um bug — por favor, registre-o. (Essa permissão é a API de automação de aplicativos do macOS, não tem nada a ver com tecnologia assistiva.)
Segurança
Veja SECURITY.md para o modelo de ameaças, o que é e o que não é acessível, e os riscos residuais (Music.app é um representante sem sandbox; injeção de prompt é real; não há sandbox).
Três problemas herdados do upstream são corrigidos aqui — uma verificação de URL do Apple Music
contornável, uma proteção inerte contra travessia de caminho no recurso exports:// e
operações destrutivas agindo em um palpite de substring. Veja
CHANGELOG.md para detalhes e
DISCLOSURE.md para o status do relatório upstream deles.
Relação com o upstream
MIT, © Eric Pheterson, mantido integralmente. O histórico do upstream é preservado no git e em CHANGELOG-upstream.md.
Acompanhamos as correções de segurança e correções de bugs nos módulos mantidos do upstream; commits de recursos que tocam subsistemas removidos são ignorados por design. Como as exclusões são grandes, faça cherry-pick por arquivo em vez de mesclar:
git fetch upstream --tags
git log --oneline fork-base..upstream/main -- src/applemusic_mcp/applescript.py
As invariantes de capacidade são a rede de segurança para um cherry-pick que arrastaria uma capacidade removida de volta.
Perguntas que as pessoas realmente fazem
Preciso de uma conta de desenvolvedor Apple, uma chave de API ou um arquivo .p8?
Não. Nenhum deles. O MusicKit da Apple assina cada solicitação a partir da própria identidade de
assinatura de código do aplicativo, mais um prompt de permissão único, então não há
credencial para criar, colar ou armazenar. Um token de desenvolvedor opcional existe apenas
para aumentar o limite de taxa da Apple para trabalhos em massa, como uma grande importação de playlist.
Funciona no Windows ou Linux? Não. Este fork é exclusivo para macOS, porque ele controla o aplicativo Music via Apple Events. Se você precisa de Windows ou Linux, use o upstream em vez disso.
Em quais Macs ele roda? macOS 14 (Sonoma) ou posterior, em Apple Silicon. O download é uma compilação arm64.
Preciso de uma assinatura do Apple Music? Para sua própria biblioteca, playlists e reprodução local, não. Para reproduzir ou adicionar faixas do catálogo do Apple Music, sim — essa é uma restrição da Apple, não deste servidor.
Com quais clientes MCP ele funciona? Claude Desktop, Claude Code, Cursor, Windsurf, Codex e VS Code. A janela de primeira execução detecta quais deles você tem e escreve a configuração para você.
Algo é armazenado na minha máquina ou enviado para algum lugar? Nenhuma credencial é armazenada — não há nenhuma para armazenar. O aplicativo fala com os endpoints públicos do catálogo da Apple e com a própria API do Apple Music, e com mais nada. Sem telemetria, sem serviço de terceiros, sem conta com este projeto.
Quais permissões o macOS solicitará? Duas: acesso de Automação ao aplicativo Music e acesso ao Apple Music. Ele não solicita Acessibilidade, não controla um navegador e não envia cliques sintéticos — que é a principal coisa que o separa dos outros servidores na tabela abaixo.
Como eu instalo? Baixe o zip, arraste o aplicativo para Aplicativos, clique duas vezes nele uma vez. A janela de primeira execução instala o helper em segundo plano e escreve a configuração do seu cliente. Não há etapa de terminal.
Como eu atualizo? Baixe o zip mais recente e substitua o aplicativo, depois reinicie seu cliente MCP. O link de download sempre aponta para o lançamento mais novo.
Isso é feito pela Apple? Não. É um projeto independente e não oficial, e não é afiliado, endossado ou suportado pela Apple. "Apple Music" e "MusicKit" são marcas registradas da Apple.
Comparação com outros servidores MCP do Apple Music
Análise completa com fontes em docs/COMPARISON.md. A versão curta, por estrelas (ago 2026):
| Melhor para | Precisa de conta de desenvolvedor | Instalação | |
|---|---|---|---|
| kennethreitz/mcp-applemusic ★90 | Algo pequeno que você pode auditar em uma sentada | não | clone + editar JSON |
| epheterson/applemusic-mcp ★86 | Mais recursos; Windows/Linux; fila Up Next | não | pip/uvx + editar JSON |
| Cifero74/mcp-apple-music ★38 | A API REST oficial | sim | assistente + editar JSON |
| este fork | Um usuário de Mac que não usa terminal | não | clique duplo |
O upstream (epheterson) faz mais do que este fork e sempre fará — reprodução web, Windows/Linux, a fila Up Next. Este fork troca isso por uma superfície de capacidade menor (sem Acessibilidade, sem automação de navegador, sem credenciais armazenadas) e um instalador que não precisa de terminal.
Uma coisa que vale destacar se você está escolhendo entre eles: o servidor do kennethreitz interpola parâmetros de ferramenta em AppleScript sem escape, então uma aspa em um nome de faixa ou playlist quebra o literal de string. Relatado com uma correção como issue #8.