mcpField
U
Unofficial Apple Music for macOS

Unofficial Apple Music for macOS

本地服务
github.com游戏娱乐18 周前更新

关于 Unofficial Apple Music for macOS

Unofficial Apple Music for macOS 是一款 macOS MCP 服务,可让 AI 客户端控制 Music 应用和 Apple Music 曲库。它支持管理资料库与播放列表,同时不申请辅助功能权限,也不控制浏览器。

主要功能

  1. 01创建和整理播放列表
  2. 02搜索及浏览音乐资料库
  3. 03为曲目评分并管理收藏
  4. 04控制播放、音量和 AirPlay
  5. 05搜索并播放 Apple Music 曲库

适用场景

  1. 01根据自然语言请求创建播放列表
  2. 02查找个人资料库中的曲目
  3. 03通过 MCP 客户端控制播放
  4. 04将曲库歌曲添加到资料库

MCP 相关

该服务向 MCP 客户端提供 Apple Music 资料库、播放列表、搜索和播放操作。可作为应用安装,也可配置为命令行服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jaminben-secure-applemusic-mcp-for-osx": {
"command": "uvx",
"args": [
"secure-applemusic-mcp-for-osx"
]
}
}
}
启动命令uvx secure-applemusic-mcp-for-osx

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypisecure-applemusic-mcp-for-osx0.3.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

非官方 Apple Music MCP

让 Claude 为你播放音乐。下载、拖拽、双击。安装就是这么简单。

Claude 被要求创建一个生日歌单,收录五年来 8 月 10 日的热门歌曲,适合 7 岁孩子。它在 Apple Music 中创建并开始播放歌单,还列出了所选的 17 首歌曲,并跳过了显式版本。

只需一句请求,就能创建并播放真实歌单,同时跳过显式版本。

⬇ 下载 Apple Silicon 版  ·  ⬇ 下载 Intel 版
不确定该选哪个?打开 Apple 菜单 → 关于本机。“Apple M1/M2/M3…”表示 Apple Silicon。
已通过 Apple 公证 · 无需终端 · 无需开发者账户 · 所有下载项和校验和


用日常语言点播音乐

“给我家孩子做一个霍格沃茨主题的生日歌单。只要原声带,不要吓人的内容。”

“《The Heist》我都听腻了。接下来该听什么?”

“来点类似 Eric Ericson 合唱团那张唱片的,不过跳过圣诞歌曲部分。”

Claude 会在你已有的 Music 应用中完成操作。它创建的歌单是真实歌单, 还会同步到你的手机。

歌单创建、添加歌曲、重新排序、重命名、整理到文件夹、删除
你的资料库搜索、浏览、为歌曲评分、标记为喜爱、查看播放记录
播放播放、暂停、跳过、快进/快退、随机播放、循环播放、调节音量、使用 AirPlay
完整曲库搜索 Apple Music 全部曲库、播放音乐、将音乐添加到资料库

播放或添加你尚未拥有的音乐需要 Apple Music 订阅。这是 Apple 的规定, 与此服务无关。其他功能无需订阅也能使用。

安装

首次运行设置窗口:用 AI 控制 Apple Music

你需要 macOS 12 或更高版本,并在音乐应用中登录 Apple 账户。播放或添加目录中的音乐需要 macOS 14 或更高版本。

  1. 为 Apple Silicon 下载应用,或下载 Intel 版本。
  2. 解压文件。将 UnofficialAppleMusicMCP.app 拖到“应用程序”文件夹。
  3. 双击打开一次。

安装就这么简单。不需要 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。