Unofficial Apple Music for macOS
Pide una playlist. Obtén una real, reproduciéndose en Apple Music — sin cuenta, nada almacenado.
Documentación
Servidor MCP no oficial de Apple Music
Deja que Claude reproduzca tu música. Descarga, arrastra, haz doble clic: así de fácil es la instalación.
Una sola petición. Una lista de reproducción real, en reproducción, con las versiones explícitas omitidas.
⬇ Descargar para Apple Silicon
·
⬇ Descargar para Intel
¿No sabes cuál es la tuya? Menú Apple → Acerca de este Mac. "Apple M1/M2/M3…" es Apple Silicon.
notarizado por Apple · sin terminal · sin cuenta de desarrollador ·
todas las descargas y sumas de verificación
"¿Cuál fue la mejor canción de 2024 que probablemente nunca he escuchado?" "Reproduce el álbum que definió el hip-hop de los 90." "Algo como Khruangbin, pero más rápido."
Quería un servidor MCP de Apple Music que pudiera entregar a un amigo.
Todos los que revisé estaban diseñados para desarrolladores. Clonar un repositorio, ejecutar un gestor de paquetes, editar manualmente un archivo JSON; uno requería una cuenta de desarrollador de Apple, una clave de MusicKit y un archivo .p8 antes de reproducir una sola nota. Eso es una exigencia razonable para un desarrollador, pero imposible para cualquier otra persona — y "que mi IA ponga música" no es una petición de desarrollador.
La parte de seguridad es el mismo problema visto desde el otro lado. Entregar software a alguien significa entregarle todo lo que ese software puede alcanzar. El servidor más capaz que encontré necesita el permiso de macOS confusamente llamado Accesibilidad — la API de automatización que permite que una aplicación controle otra con pulsaciones de teclas y clics sintéticos. Al concederlo, el proceso puede escribir en cualquier ventana, hacer clic en cualquier elemento de la pantalla y leer las interfaces de otras aplicaciones. No se puede limitar a una sola aplicación; es todo o nada. Y se lo estarías concediendo a un programa que recibe instrucciones de un modelo que lee texto que nadie controla. Nombres de canciones. Títulos de listas de reproducción. Lo que sea que acaba de buscar.
Para aclarar el nombre: el permiso de "Accesibilidad" de macOS se refiere a controlar tu Mac programáticamente, no a tecnología de asistencia. Esta aplicación nunca lo solicita, y eso no tiene nada que ver con los lectores de pantalla — la ventana de configuración y todo su contenido funcionan con VoiceOver como cualquier otra aplicación de Mac.
Así que construí este para pedir lo mínimo que macOS me permite:
| Obtiene | No obtiene |
|---|---|
| AppleScript para Music.app — una aplicación, revocable en Ajustes del Sistema | La API de automatización de Accesibilidad. Nunca. No puede usarla |
| MusicKit, para poder añadir canciones a tu biblioteca | Ningún navegador, tus cookies, tus pestañas |
| Un proceso en segundo plano, iniciado al iniciar sesión | Los permisos de tu terminal. Nada en tu PATH |
Esa es la lista completa, y está garantizada por una suite de pruebas que hace fallar la compilación si una capacidad eliminada vuelve a aparecer.
Y aun así reproduce todo el catálogo. Si tienes una suscripción a Apple Music, puedes pedir cualquier cosa que Apple tenga — no solo lo que ya está en tu biblioteca. Eso normalmente tiene un costo: el otro servidor que lo gestiona controla la interfaz de Music.app con clics sintéticos, que es exactamente el permiso a nivel de sistema mencionado antes. Este usa MusicKit, firmado con la identidad propia de la aplicación — una sola ventana de aprobación, sin cuenta de desarrollador y sin credenciales almacenadas en ningún lugar de tu Mac.
Los límites son lo que lo hacen útil. Una herramienta que nadie puede instalar de forma segura no ayuda a nadie. Como esta pide tres cosas específicas y revocables — y porque el permiso recae en la aplicación en lugar de en lo que haya iniciado tu cliente de IA — es algo que realmente puedes entregar a una persona, que era el objetivo.
Una bifurcación endurecida de epheterson/applemusic-mcp
(bifurcada en 0acf697). El proyecto original es más capaz: multiplataforma, reproducción
web, Up Next, funciona sin cuenta de desarrollador de Apple. Esta bifurcación
intercambia esas funciones por una superficie de capacidades más reducida.
Por qué existe esto
Dos objetivos, y el orden importa:
- Cualquiera debería poder instalarlo — no solo quienes usan una terminal.
- Debería ser seguro entregarlo a esa persona.
Ambos surgieron al observar lo que ya existía. Hasta agosto de 2026, todos los demás servidores MCP de Apple Music requerían línea de comandos: clonar un repositorio o ejecutar un gestor de paquetes, y luego editar manualmente la configuración JSON de Claude. Uno también requería una cuenta de desarrollador de Apple, una clave de MusicKit y un archivo .p8 antes de hacer nada. Eso es un estándar razonable para una herramienta de desarrollador, pero imposible para cualquier otra persona — y "deja que Claude controle mi música" no es una petición de desarrollador. De ahí: descargar, arrastrar, doble clic, y un instalador que edita la configuración por ti.
La parte de seguridad es esa misma evaluación vista desde el otro lado. El más capaz de esos servidores alcanza algunas funciones mediante Accesibilidad — el permiso de entrada sintética a nivel de sistema de macOS. Es una solución honesta para una brecha real (reproducir una canción del catálogo que no posees: enlace profundo a Music.app, luego hacer clic en el botón de reproducción con un evento de ratón sintético). El problema es que Accesibilidad no se puede limitar a una sola aplicación. Concedérselo a un servidor de música también concede la capacidad de escribir en cualquier ventana, hacer clic en cualquier cosa de la pantalla y leer las interfaces de otras aplicaciones. Y se lo estarías concediendo a un programa que recibe instrucciones de un modelo que lee texto que nadie controla — nombres de canciones, títulos de listas de reproducción, lo que sea que acaba de buscar. Ese es un camino muy corto desde la inyección de instrucciones hasta las pulsaciones de teclas sintéticas, así que esta bifurcación eliminó esas rutas de código por completo y una prueba garantiza que sigan eliminadas.
El mismo instinto produjo el paquete de aplicación. Un servidor que tu cliente MCP inicia hereda los permisos del cliente, así que la configuración habitual significa aprobar "Automatización → Música" para toda tu terminal y todo lo que ejecutes desde ella. Aquí, la concesión recae en un único asistente iniciado por launchd — una sola fila revocable en Ajustes del Sistema, y tu terminal no recibe nada.
Nada de esto hace que la bifurcación sea mejor que el proyecto original; la hace más pequeña. El proyecto original hace más y siempre lo hará. Esta está diseñada para entregarse a alguien que nunca va a leer su código fuente.
Sobre el nombre. "Seguro" es el objetivo, no una certificación. Esto no ha sido auditado de forma independiente. La afirmación comprobable es la siguiente.
Lo que no hace
| Sin API de Accesibilidad | Sin pulsaciones de teclas sintéticas, sin clics sintéticos, sin leer las ventanas de otras aplicaciones. (El permiso de automatización de macOS — sin relación con la tecnología de asistencia.) |
| Sin automatización de navegador | Sin Playwright, sin Chrome controlado en proceso. |
| Sin leer tu navegador | Nunca toca las cookies de Safari ni ejecuta JavaScript en tus pestañas. |
| Sin abrir URLs | Las URLs se analizan, nunca se entregan a open ni a un navegador. |
| Sin shell | Solo se ejecuta un binario: osascript, lista de argumentos, con tiempo de espera. |
| Sin credenciales almacenadas por defecto | Nada en ~/.config que robar. |
| Sin API no oficial | Solo api.music.apple.com y la API pública de búsqueda de iTunes. |
Todo esto está garantizado por tests/test_capability_invariants.py,
que se ejecuta como trabajo propio de CI. Eliminar un subsistema es un evento único; mantenerlo eliminado es una propiedad.
Lo que hace
Mediante Apple Events a Music.app — sin necesidad de credenciales:
- Listas de reproducción: listar, árbol/carpetas, crear, añadir, copiar, mover, eliminar, renombrar, borrar
- Biblioteca: buscar, explorar, añadidos/reproducidos recientemente, favoritos, calificar (incl. estrellas), eliminar, instantánea/diferencias
- Reproducción: reproducir, pausar, siguiente/anterior, buscar, volumen, aleatorio, repetir, reproduciendo ahora, revelar, selección de dispositivo AirPlay
- Búsqueda en el catálogo mediante la API de búsqueda de iTunes pública de Apple
Reproduce cualquier cosa del catálogo de Apple Music — no solo lo que ya está en tu biblioteca — si tienes una suscripción. La aplicación empaquetada lo hace mediante MusicKit, firmado con su propia identidad: una ventana de aprobación, sin cuenta de desarrollador, sin credenciales almacenadas. Una copia del código fuente sin el asistente MusicKit incluido recurre a un token opcional de desarrollador de Apple (login --dev), que también desbloquea metadatos de catálogo más ricos, listas y recomendaciones.
Lo que tiene el proyecto original que esta no tiene
Soporte para Windows/Linux, los reproductores web de Chrome y Safari, y la cola Up Next (vive en la instancia de MusicKit del reproductor web y no puede sobrevivir a su eliminación). El proyecto original también reproduce canciones del catálogo que no posees, pero lo logra mediante automatización de interfaz y, por tanto, con el permiso de Accesibilidad; aquí lo mismo funciona con MusicKit.
Instalación
Requisitos: macOS 12+, la aplicación Música iniciada sesión con tu cuenta de Apple Music. Nada más — sin Python, sin Homebrew, sin línea de comandos.
- Descarga la aplicación.
(Cada versión está en la página de Versiones
con un
SHA256SUMS.txtsi quieres verificarla primero.) - Descomprime y arrastra UnofficialAppleMusicMCP.app a
/Applications. - Haz doble clic una vez.
Las versiones están firmadas con un Developer ID y notarizadas por Apple, así que se abren normalmente — sin advertencia de "desarrollador no identificado", sin truco de clic derecho y sin visita a Ajustes del Sistema. Arrástrala a /Applications antes de abrirla en lugar de ejecutarla desde Descargas: macOS ejecuta una aplicación en cuarentena desde una copia de solo lectura aleatoria que desaparece al salir, lo que deja al asistente en segundo plano apuntando a una ruta que ya no existe.
La configuración pregunta antes de cada paso, y cada uno se puede omitir:
| Paso | Qué hace | Por qué |
|---|---|---|
| Asistente en segundo plano | Instala un LaunchAgent que inicia el asistente al iniciar sesión | Que launchd lo inicie es lo que da a la aplicación su propia identidad de permisos |
| Clientes de IA | Añade una entrada unofficial-apple-music a cada cliente que marques — Claude Desktop, Claude Code, Cursor, Codex, VS Code | Para que puedan acceder a ella. Tus otros servidores se conservan y cada archivo se respalda primero |
| Permiso | Activa el aviso de macOS "controlar Música" | Pedirlo ahora significa que la concesión recae en esta aplicación, no en lo que inicie tu cliente |
Luego reinicia los clientes que elegiste. Eso es todo.
La aplicación es autónoma: incluye su propio runtime de Python, así que no hay nada que instalar ni nada en tu PATH que pueda entrar en conflicto.
Si la compilas tú mismo, fírmala — consulta Desde el código fuente. La aplicación publicada está notarizada y no necesita nada de esto, pero una compilación local no lo está, y macOS vincula el permiso de Música a la identidad de firma: una aplicación sin firmar presenta una nueva identidad cada vez que cambia su contenido, así que el permiso se vuelve a solicitar en cada recompilación.
Por qué la aplicación, en lugar de solo un comando
macOS atribuye una concesión de permisos al proceso responsable — para un servidor que tu cliente MCP inicia, ese es el cliente. Así que la configuración obvia significa aprobar "Automatización → Música" para toda tu terminal, y cada programa que ejecutes desde ella hereda ese permiso.
La aplicación evita esto dividiéndose en dos:
Claude Desktop ──stdio──▶ shim ──unix socket (0600)──▶ helper ──▶ Music.app
no permissions owns the grant
El intermediario no contiene nada y no puede hablar con Música; el asistente iniciado por launchd es el dueño de la concesión. Obtienes una fila revocable en Ajustes del Sistema → Privacidad y Seguridad → Automatización, y tu terminal no recibe nada. docs/PERMISSIONS.md tiene los detalles.
Con pip, pipx o uvx
Para quienes ya viven en una terminal. La rueda incluye el mismo asistente MusicKit firmado que la aplicación, así que es una instalación completa, no una reducida.
pipx install secure-applemusic-mcp-for-osx # or: uv tool install …
La rueda también está adjunta a cada lanzamiento con sumas de verificación, si prefieres instalar un archivo que puedas verificar primero.
No hay ventana de primera ejecución en esta ruta, así que dos pasos son tuyos:
1. Añádelo a tu cliente MCP. Para Claude Desktop, en
~/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.
Otros clientes toman el mismo comando y argumento en su propio archivo de configuración.
Usa la ruta completa si el comando no está en el PATH de tu cliente — las aplicaciones GUI
a menudo no heredan un PATH de shell. which secure-applemusic-mcp te dirá
qué pegar.
2. Aprueba Apple Music una vez. Reinicia el cliente, luego pídele que ejecute
config(action='signin'). Aparece un aviso nativo; no se almacena nada. Hasta que
hagas esto, todo funciona excepto añadir música que no posees.
La rueda es solo para macOS y cubre ambas arquitecturas. pip se negará a
instalarla en otro lugar en lugar de darte una compilación sin el raíl de MusicKit.
Desde el código fuente
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 se instala en un virtualenv privado de 0700 desde el checkout en el que
estás parado — nada se canaliza desde la red a un shell. ./install.sh simple
omite el paquete y configura el servidor stdio más simple (sin ámbito).
Compartirlo con otra persona
Envíales el lanzamiento. Está notarizado, así que se abre en su Mac sin advertencias y sin nada que hacer clic — ese es el punto de pagar por el certificado.
Lo único a verificar es la arquitectura. El zip está construido para una:
UnofficialAppleMusicMCP-*-arm64 es Apple Silicon (M1 y posteriores). Para una Mac
Intel, compila --arch x86_64. Si tienes dudas, pídeles que vayan a → Acerca de este Mac.
Repartir una compilación propia es diferente. Una compilación auto-firmada no es una notarizada: macOS la rechaza en la primera apertura, y el truco de clic derecho → Abrir ya no funciona en versiones recientes. Necesitan
Configuración del Sistema → Privacidad y Seguridad → desplázate hacia abajo → Abrir de todos modos
que es el costo honesto de no notarizar. La auto-firma aún vale la pena — le da a la aplicación una identidad estable, así que el permiso de Música sobrevive recompilaciones en lugar de volver a preguntar cada vez.
Para entregar la tuya tan limpia como el lanzamiento, firma con un certificado de
Developer ID Application y notariza. make release hace toda la secuencia,
incluyendo grapar el ticket en el paquete (un zip hecho antes de grapar
aún necesita la red para validar, que es la razón habitual por la que una aplicación "notarizada"
es rechazada en la máquina de otra persona):
SIGN_ID="Developer ID Application: Your Name (TEAMID)" make release
La configuración única para las credenciales de notaría está documentada al inicio de
tools/notarize.sh.
Eso requiere una cuenta de desarrollador de Apple de pago ($99/año). Nada más sobre la aplicación cambia.
Desinstalación
Mueve la aplicación a la Papelera, luego:
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
Elimina la entrada de unofficial-apple-music de la configuración de Claude Desktop (una copia de seguridad está al lado),
y borra ~/.config/applemusic-mcp y ~/.cache/applemusic-mcp si
quieres que las credenciales y el registro de auditoría también desaparezcan. Desde una instalación de código fuente:
./install.sh --uninstall.
Nunca concedas el permiso de Accesibilidad. No puede usarlo. Si algo lo pide, eso es un error — por favor repórtalo. (Ese permiso es la API de automatización de aplicaciones de macOS, no tiene nada que ver con tecnología de asistencia.)
Seguridad
Consulta SECURITY.md para el modelo de amenazas, qué es y qué no es alcanzable, y los riesgos residuales (Music.app es un delegado sin sandbox; la inyección de prompts es real; no hay sandbox).
Tres problemas heredados de upstream están corregidos aquí — una verificación de URL de Apple Music
evadible, una guardia inerte de traversal de rutas en el recurso exports://, y
operaciones destructivas que actúan sobre una suposición de subcadena. Consulta
CHANGELOG.md para detalles, y
DISCLOSURE.md para su estado de reporte upstream.
Relación con upstream
MIT, © Eric Pheterson, retenido en su totalidad. El historial de upstream se conserva en git y en CHANGELOG-upstream.md.
Seguimos las correcciones de seguridad y exactitud de upstream a los módulos retenidos; los commits de características que tocan subsistemas eliminados se ignoran por diseño. Debido a que las eliminaciones son grandes, haz cherry-pick por archivo en lugar de fusionar:
git fetch upstream --tags
git log --oneline fork-base..upstream/main -- src/applemusic_mcp/applescript.py
Los invariantes de capacidad son la red de seguridad para un cherry-pick que arrastraría una capacidad eliminada de vuelta.
Preguntas que la gente realmente hace
¿Necesito una cuenta de desarrollador de Apple, una clave API o un archivo .p8?
No. Ninguno de ellos. El MusicKit de Apple firma cada solicitud desde la identidad de firma de código
de la propia aplicación más un aviso de permiso único, así que no hay
credencial que crear, pegar o almacenar. Un token de desarrollador opcional existe solo
para elevar el límite de tasa de Apple para trabajo masivo como una importación de lista de reproducción grande.
¿Funciona en Windows o Linux? No. Este fork es solo para macOS, porque controla la aplicación Música a través de Apple Events. Si necesitas Windows o Linux, usa upstream en su lugar.
¿En qué Macs se ejecuta? macOS 14 (Sonoma) o posterior, en Apple Silicon. La descarga es una compilación arm64.
¿Necesito una suscripción a Apple Music? Para tu propia biblioteca, listas de reproducción y reproducción local, no. Para reproducir o añadir pistas del catálogo de Apple Music, sí — esa es una restricción de Apple, no de este servidor.
¿Con qué clientes MCP funciona? Claude Desktop, Claude Code, Cursor, Windsurf, Codex y VS Code. La ventana de primera ejecución detecta cuáles tienes y escribe la configuración por ti.
¿Se almacena algo en mi máquina o se envía a algún lugar? No se almacena ninguna credencial — no hay ninguna que almacenar. La aplicación habla con los endpoints públicos del catálogo de Apple y la API propia de Apple Music, y con nada más. Sin telemetría, sin servicio de terceros, sin cuenta con este proyecto.
¿Qué permisos pedirá macOS? Dos: acceso de Automatización a la aplicación Música, y acceso a Apple Music. No pide Accesibilidad, no controla un navegador y no envía clics sintéticos — que es lo principal que lo separa de los otros servidores en la tabla a continuación.
¿Cómo lo instalo? Descarga el zip, arrastra la aplicación a Aplicaciones, haz doble clic una vez. La ventana de primera ejecución instala el helper en segundo plano y escribe la configuración de tu cliente. No hay paso de terminal.
¿Cómo lo actualizo? Descarga el último zip y reemplaza la aplicación, luego reinicia tu cliente MCP. El enlace de descarga siempre apunta al lanzamiento más reciente.
¿Esto lo hizo Apple? No. Es un proyecto independiente y no oficial, y no está afiliado con, respaldado por, o soportado por Apple. "Apple Music" y "MusicKit" son marcas comerciales de Apple.
Comparación con otros servidores MCP de Apple Music
Escritura completa con fuentes en docs/COMPARISON.md. La versión corta, por estrellas (agosto 2026):
| Mejor para | Necesita cuenta de desarrollador | Instalación | |
|---|---|---|---|
| kennethreitz/mcp-applemusic ★90 | Algo pequeño que puedas auditar en una sesión | no | clonar + editar JSON |
| epheterson/applemusic-mcp ★86 | La mayoría de funciones; Windows/Linux; cola Up Next | no | pip/uvx + editar JSON |
| Cifero74/mcp-apple-music ★38 | La API REST oficial | sí | asistente + editar JSON |
| este fork | Un usuario de Mac que no usa terminal | no | doble clic |
Upstream (epheterson) hace más que este fork y siempre lo hará — reproducción web, Windows/Linux, la cola Up Next. Este fork intercambia esas cosas por una superficie de capacidades más pequeña (sin Accesibilidad, sin automatización de navegador, sin credenciales almacenadas) y un instalador que no necesita terminal.
Una cosa que vale la pena señalar si estás eligiendo entre ellos: el servidor de kennethreitz interpola parámetros de herramientas en AppleScript sin escapar, así que una comilla en un nombre de pista o lista de reproducción rompe el literal de cadena. Reportado con una corrección como issue #8.