关于 Unofficial Apple Music for macOS
Unofficial Apple Music for macOS 是一款 macOS MCP 服务,可让 AI 客户端控制 Music 应用和 Apple Music 曲库。它支持管理资料库与播放列表,同时不申请辅助功能权限,也不控制浏览器。
主要功能
- 01创建和整理播放列表
- 02搜索及浏览音乐资料库
- 03为曲目评分并管理收藏
- 04控制播放、音量和 AirPlay
- 05搜索并播放 Apple Music 曲库
适用场景
- 01根据自然语言请求创建播放列表
- 02查找个人资料库中的曲目
- 03通过 MCP 客户端控制播放
- 04将曲库歌曲添加到资料库
MCP 相关
该服务向 MCP 客户端提供 Apple Music 资料库、播放列表、搜索和播放操作。可作为应用安装,也可配置为命令行服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
非官方 Apple Music MCP
让 Claude 为你播放音乐。下载、拖拽、双击。安装就是这么简单。
只需一句请求,就能创建并播放真实歌单,同时跳过显式版本。
⬇ 下载 Apple Silicon 版
·
⬇ 下载 Intel 版
不确定该选哪个?打开 Apple 菜单 → 关于本机。“Apple M1/M2/M3…”表示 Apple Silicon。
已通过 Apple 公证 · 无需终端 · 无需开发者账户 ·
所有下载项和校验和
用日常语言点播音乐
“给我家孩子做一个霍格沃茨主题的生日歌单。只要原声带,不要吓人的内容。”
“《The Heist》我都听腻了。接下来该听什么?”
“来点类似 Eric Ericson 合唱团那张唱片的,不过跳过圣诞歌曲部分。”
Claude 会在你已有的 Music 应用中完成操作。它创建的歌单是真实歌单, 还会同步到你的手机。
| 歌单 | 创建、添加歌曲、重新排序、重命名、整理到文件夹、删除 |
| 你的资料库 | 搜索、浏览、为歌曲评分、标记为喜爱、查看播放记录 |
| 播放 | 播放、暂停、跳过、快进/快退、随机播放、循环播放、调节音量、使用 AirPlay |
| 完整曲库 | 搜索 Apple Music 全部曲库、播放音乐、将音乐添加到资料库 |
播放或添加你尚未拥有的音乐需要 Apple Music 订阅。这是 Apple 的规定, 与此服务无关。其他功能无需订阅也能使用。
安装
你需要 macOS 12 或更高版本,并在音乐应用中登录 Apple 账户。播放或添加目录中的音乐需要 macOS 14 或更高版本。
安装就这么简单。不需要 Python、Homebrew 或终端。应用已包含所需的一切。
Apple 已对这些构建进行公证,因此应用可以直接打开。不会出现“无法识别的开发者”警告,不需要右键操作,也不必前往“系统设置”。
请先将它拖到“应用程序”文件夹。 如果从“下载”文件夹打开,macOS 会从临时副本运行它;退出后该副本就会消失,后台助手最终会指向一个已不存在的文件。
随后,设置窗口会问你三个问题。任何一个都可以跳过。
| 它会询问 | 会发生什么 | 原因 |
|---|---|---|
| 安装后台助手? | 添加一个在你登录时启动的小程序 | 这样权限就属于应用,而不是终端 |
| 设置你的 AI 应用? | 向 Claude Desktop、Claude Code、Cursor、Windsurf、Codex 或 VS Code 添加一条配置 | 这样它们就能找到应用。其他工具不会受影响,而且每个文件都会先备份 |
| 允许访问“音乐”吗? | 显示标准的 macOS 权限对话框 | 在此处批准后,权限就会授予这个应用 |
重启你选择的 AI 应用,就完成了。
自己构建? 请对应用签名。参见从源代码构建。macOS 会将“音乐”权限与签名绑定。未签名的应用每次重新构建后都会被视为全新应用,因此每次都会再次请求权限。
为什么它只请求很少的权限
软件可以访问你允许它访问的任何内容。这里这一点格外重要,因为这款软件会听从 AI 的指令。
我找到的功能最强大的 Apple Music 服务需要名为 辅助功能 的 macOS 权限。这个名称容易让人误解。它与屏幕阅读器或辅助技术无关。它允许一个应用操控另一个应用:输入按键、点击按钮、读取屏幕上的内容。
macOS 不会将此权限限制在单个应用上。你只能选择授予所有应用,或完全不授予。
因此,持有该权限的音乐服务也能在你的电子邮件中输入内容。而且它会听从模型的指令,模型读取的文本未经任何人审核:曲目名称、播放列表标题,以及刚刚搜索到的任何内容。一个暗藏恶意内容的播放列表标题,就可能变成按键输入。
这个分支删除了相关代码。它改为请求三项权限:
| 它能获得 | 它无法获得 |
|---|---|
| 控制“音乐”应用,除此之外无权控制其他内容。你随时可以在“系统设置”中撤销此权限 | 辅助功能权限。已没有任何代码可以使用该权限 |
| 连接到 Apple Music,以便将歌曲添加到你的资料库 | 访问任何浏览器、你的 Cookie 或标签页 |
| 一个后台程序,在你登录时启动 | 终端的权限,或 Mac 上的任何其他权限 |
就这些,测试套件会在任何权限被重新加入时让构建失败。
它仍然可以播放 Apple Music 目录中的所有音乐。大多数服务都会使用上述权限来实现这一点。这个服务则通过 Apple 自己的 MusicKit 进行操作,并使用应用的身份签名:只需在一个对话框中批准,无需开发者账户,也不会在 Mac 上的任何位置存储密码或密钥。
“安全”是目标,不是证书。 没有独立机构审计过此项目。值得信赖的说法应当是测试可以验证的内容,具体列在下方。
为什么使用应用而不是命令
macOS 会将权限归到父进程名下。当你的 AI 应用启动辅助程序时,权限会授予 AI 应用,而不是辅助程序。因此,常见的配置会把“控制 Music”的权限交给整个终端,以及你之后通过它运行的所有程序。
这个应用改为拆分成两部分:
Claude Desktop ──stdio──▶ shim ──unix socket (0600)──▶ helper ──▶ Music.app
no permissions owns the grant
shim 会与 Claude 通信,但无法访问 Music。辅助程序拥有该权限,并由 macOS 本身启动。你会在“系统设置”中看到一项可以关闭的权限,而终端不会获得任何权限。 详情请参阅 docs/PERMISSIONS.md。
它绝不会做什么
| 不使用辅助功能 | 不模拟按键,不模拟点击,不读取其他应用的窗口 |
| 不使用浏览器 | 不使用 Playwright,不在应用内驱动 Chrome |
| 不读取你的浏览器 | 绝不接触 Safari Cookie,也不在你的标签页中运行 JavaScript |
| 不打开链接 | 它会读取 Apple Music 链接,但绝不会将链接交给浏览器 |
| 不使用 Shell | 它只运行一个程序:osascript,并设置超时 |
| 不存储密码 | ~/.config 中没有任何值得窃取的内容 |
| 不使用私有 API | 只使用 api.music.apple.com 和 Apple 的公开搜索 API |
每一项都有对应测试,位于 tests/test_capability_invariants.py,并作为独立的 CI 任务运行。删除子系统只需做一次,而确保它始终被删除则是一项特性。
面向开发者
这是 epheterson/applemusic-mcp 的加固分支。上游功能更多,而且会一直如此:支持 Windows 和 Linux、Chrome 和 Safari 网页播放器,以及 Up Next 队列。该队列位于网页播放器中,播放器移除后便无法保留。此分支则以这些功能为代价,换取更小的影响范围,以及亲友也能使用的安装程序。
使用 pip、pipx 或 uvx
wheel 包含与应用相同的已签名 MusicKit 辅助程序,因此这是完整安装,而非精简安装。
pipx install secure-applemusic-mcp-for-osx # or: uv tool install …
每个 release 也附有带校验和的 wheel,方便你先验证文件。
此安装方式不会出现设置窗口,因此有两个步骤需要你自行完成。
1. 将其添加到 MCP 客户端。 对于 Claude Desktop,请在
~/Library/Application Support/Claude/claude_desktop_config.json 中添加:
{
"mcpServers": {
"unofficial-apple-music": {
"command": "secure-applemusic-mcp",
"args": ["serve"]
}
}
}
对于 Claude Code:claude mcp add unofficial-apple-music -- secure-applemusic-mcp serve。
其他客户端也需在各自的配置文件中使用相同的命令。如果该程序不在客户端的 PATH 中,请使用完整路径,因为 GUI 应用通常不会继承 Shell 的 PATH。运行 which secure-applemusic-mcp 可查看要粘贴的路径。
2. 批准 Apple Music 一次。 重启客户端,然后让它运行 config(action='signin')。系统会显示原生提示框,不会存储任何内容。在完成此操作前,除添加你尚未拥有的音乐外,其他功能均可正常使用。
此 wheel 仅适用于 macOS,支持两种芯片。pip 在其他平台上会拒绝安装,以免提供一个不含 MusicKit 的构建版本。
从源代码安装
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 会根据你当前所在的检出目录创建一个权限为 0700 的私有虚拟环境。它不会将网络内容通过管道传入 Shell。直接运行 ./install.sh 会跳过 bundle,并设置更简单、无作用域限制的 stdio 服务。
如果源代码检出目录中没有捆绑的 MusicKit 辅助程序,则会回退到可选的 Apple Developer 令牌(login --dev),此令牌还会解锁更丰富的目录元数据、排行榜和推荐内容。
分享你构建的版本
发行版
已完成公证,因此任何人的 Mac 都能直接打开,无需点击确认。只需发送正确的版本:Apple 芯片选 -arm64,Intel 选 -x86_64。
你自己构建的版本则不同。自签名版本未经公证,macOS 首次打开时会拒绝运行,而且旧的右键操作方法已不再有效。你的朋友需要:
系统设置 → 隐私与安全性 → 向下滚动 → 仍要打开
自签名仍然有用,因为它能为应用提供稳定的身份标识,并让音乐权限在重新构建后继续有效。
要像发行版那样顺利地交付自己的版本,请使用 Developer ID Application 证书进行签名并完成公证。make release 会运行整个流程,包括将票据装订到应用包中。(在装订票据之前创建的 zip 仍需联网验证,这通常就是“已公证”的应用在别人的电脑上遭拒的原因。)
SIGN_ID="Developer ID Application: Your Name (TEAMID)" make release
公证凭据的说明见
tools/notarize.sh 文件顶部。此流程需要付费的 Apple Developer 账户(每年 99 美元)。应用的其他部分均不会改变。
跟踪上游
MIT 许可证,© Eric Pheterson,完整保留。从 0acf697 分叉;上游历史记录保留在 git 和 CHANGELOG-upstream.md 中。
我们会采纳上游针对保留模块的安全性和正确性修复,并忽略涉及已删除子系统的功能提交。删除的内容很多,因此请按文件进行 cherry-pick,而不是合并:
git fetch upstream --tags
git log --oneline fork-base..upstream/main -- src/applemusic_mcp/applescript.py
能力测试可以防止 cherry-pick 将已删除的能力重新引入。
卸载
将应用拖到废纸篓,然后将以下内容粘贴到终端:
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
从 Claude Desktop 的配置中移除 unofficial-apple-music 条目;备份文件就在旁边。如需同时清除缓存和审计日志,请删除 ~/.config/applemusic-mcp 和 ~/.cache/applemusic-mcp。如果是从源代码安装的:./install.sh --uninstall。
切勿为此应用授予辅助功能权限。 它无法使用该权限。如果有任何内容要求你授予此权限,那就是一个错误。请报告此问题。
安全
SECURITY.md 介绍了威胁模型、可访问和不可访问的内容,以及仍然存在的风险:音乐应用本身不在沙盒中,提示词注入确实存在,而且此服务自身没有沙盒。
这里修复了三个从上游继承的问题:可被绕过的 Apple Music 链接检查、形同虚设的 exports:// 资源路径遍历防护,以及基于子字符串猜测执行的破坏性操作。CHANGELOG.md 中有详细说明,DISCLOSURE.md 记录了这些问题向上游报告的经过。
常见问题
我需要 Apple Developer 账号、API 密钥或 .p8 文件吗?
不需要。Apple 的 MusicKit 会使用应用自身的签名和你的一次性授权来为每个请求签名。你无需创建、粘贴或存储任何密钥。可选的开发者令牌仅用于提高 Apple 的速率限制,适合导入大型播放列表等批量任务。
我需要订阅 Apple Music 吗? 访问自己的音乐库、播放列表或播放本地音乐都不需要。播放或添加 Apple 曲库中的内容则需要。
它能在 Windows 或 Linux 上运行吗? 不能。它会直接控制 Mac 上的 Music 应用。如需在这些平台上使用,请使用上游项目。
它支持哪些 AI 应用? Claude Desktop、Claude Code、Cursor、Windsurf、Codex 和 VS Code。设置窗口会查找你已安装的应用,并为你完成配置。
它会存储或向任何地方发送数据吗? 不会。应用不会存储密码,因为根本没有密码。应用只会与 Apple 通信,不会与其他任何对象通信。不会跟踪数据,不使用第三方服务,也无需在本项目注册账号。
macOS 会向我要什么权限? 两项:控制 Music 应用的权限,以及使用 Apple Music 的权限。它绝不会请求“辅助功能”权限,不会控制浏览器,也不会发送伪造的点击操作。
如何更新? 下载最新的 zip 文件,替换应用,然后重启 AI 应用。上面的下载链接始终指向最新版本。
这是 Apple 制作的吗? 不是。这是一个独立项目,与 Apple 无关,也未获得 Apple 认可或支持。“Apple Music”和“MusicKit”是 Apple 的商标。
其他 Apple Music MCP 服务
详情及来源请参阅docs/COMPARISON.md。简要对比如下:
| 最适合 | 是否需要开发者账号 | 安装方式 | |
|---|---|---|---|
| kennethreitz/mcp-applemusic | 代码精简,一次就能读完 | 不需要 | 克隆 + 编辑 JSON |
| epheterson/applemusic-mcp | 功能最多;支持 Windows/Linux;“接下来播放”队列 | 不需要 | pip/uvx + 编辑 JSON |
| Cifero74/mcp-apple-music | 官方 REST API | 需要 | 向导 + 编辑 JSON |
| 此分支 | 不想打开 Terminal 的用户 | 不需要 | 双击 |
选择时值得注意:kennethreitz 的服务会将工具参数未经转义直接传入 AppleScript,因此,曲目名称或播放列表名称中的引号会导致字符串意外结束。此问题已报告,并提供了修复方案:问题 #8。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。