Skip to main content
Glama
baoozak

qqmusic-mcp

by baoozak

QQ Music MCP

一个在本机运行的 QQ 音乐个人音乐库 MCP Server。它不是"点唱机",而是你的音乐库管理员:与市面上清一色"搜索 + 播放链接"的 QQ 音乐 MCP 不同,本项目是目前同类中首个支持账号级写入的 QQ 音乐 MCP:AI 可以读取、分析并直接管理你的歌单——创建歌单、批量加歌、移歌、按规则生成歌单,以及完整地整理"我的喜欢"。

仅支持 Windows 10/11。QQ 音乐没有提供这套功能的官方开放 API,本项目使用网站当前的非官方接口,可能随上游改版而失效。

为什么与众不同

1. 账号级写入:真正"管"你的音乐库 ⭐

市面上的 QQ 音乐 MCP 几乎全部只做一件事:搜索歌曲、返回播放链接,只读。本项目直接封装了 QQ 音乐账号接口的完整写能力(musicu.fcgPlaylistBaseWrite / PlaylistDetailWrite):

  • 创建 / 删除歌单

  • 批量加歌 / 移歌(每批最多 20 首,写后回读验证)

  • 合并、拆分、复制歌单,按规则生成"智能歌单"

这意味着 AI 能替你完成以前只能手动做的事情——把"我喜欢"按语言、流派、场景整理进新歌单,而不是只告诉你"你最好建个歌单"。

2. 写前探针:对不稳定接口的工程级防御

QQ 音乐没有官方 API,写接口随时可能被改版或风控。所以在任何真实写入之前,qqmusic_probe_write 会用一个临时歌单完整验证一遍:

创建 → 加歌 → 回读 → 移除 → 删除

只有全部成功才解锁写入能力(结果缓存到 capabilities.json);任何一步失败都会自动禁用所有写工具。探针不过,绝不写入。

3. 计划冻结 + 精确回滚:AI 整理不翻车

整理工作流把"AI 干活"变成可审计、可撤销的事务:

  • 计划在预览确认后冻结,生成不可篡改的 SHA-256,每次读取都校验完整性

  • 每次应用生成 run_id,记录每个歌单、每批添加的歌曲

  • 不满意可随时按 run_id 回滚,只撤销本次运行添加的内容

4. 可持续整理:规则同步 + 只处理新增喜欢

规则歌单不再是创建一次就结束:先预览目标歌单与规则结果的差异,再用预览哈希确认写入。后续重复运行时只补充新增歌曲;可选清理不再符合规则的歌曲。增量整理则比较两次"我喜欢"快照,只把新增加的歌曲交给 AI 分类,不必反复分析整个音乐库。

5. 音乐库体检:分析能力是同类空白

重复歌曲、同歌名不同版本、空歌单、歌单交集、未整理歌曲——一套完整的数据分析工具,让你(和 AI)先看清整个音乐库,再决定怎么整理。

6. 数据主权:本地备份 + 完整审计

所有导出、计划、运行记录与每次写操作日志都保存在本机,不经过任何第三方服务器:完整备份"我喜欢"(JSON / CSV / 摘要)、每次加歌 / 移歌 / 删歌的审计日志、每次整理运行的可回滚记录。你的音乐数据始终在你手里。

与常见 QQ 音乐 MCP 的对比

同样接入 QQ 音乐,两类 MCP 干的是两件不同的事:搜索播放类负责"找到歌、放出来",本项目负责"管好你的音乐库"

能力

搜索播放类 MCP

本项目

搜索歌曲 / 详情 / 歌词

读取个人歌单

仅公开歌单

✅ 全部自建歌单 + "我喜欢"

创建 / 修改 / 删除歌单

❌ 只读

账号级写入

批量加歌 / 移歌

✅ 每批 20 首 + 回读验证

音乐库分析(重复 / 空歌单 / 交集 / 未整理)

规则歌单 / 合并 / 拆分

写入安全(探针 / 只读保护 / 回滚)

本地备份与审计

登录方式

手动粘贴 Cookie

✅ 浏览器扫码 + DPAPI 加密保存

播放链接与下载是搜索播放类 MCP 的主场,本项目刻意不做:它既不是管理歌单的必要环节,也是版权、风控和接口变动最不稳定的部分。把播放交给专业的播放器,把管理做到极致。

一句话:别的 MCP 帮你"找到歌",这个 MCP 帮你"管好歌"。两者可以同时接入,各司其职。

和其他音乐 MCP 配合使用

本项目与搜索播放类音乐 MCP 是互补关系:让播放类 MCP(或 QQ 音乐客户端)负责找歌、试听,让本项目负责整理、归档、体检。例如先用其他 MCP 搜索试听确认喜欢的歌,再用 qqmusic_add_songs 把它们批量收进对应歌单。

你能让 AI 做什么

  • 列出和读取全部自建歌单,也可以只读读取"我喜欢"。

  • 创建歌单、批量加歌、移歌和删除空歌单(账号级写入,写前探针 + 回读验证)。

  • 完整导出"我喜欢"为 JSON、CSV 和摘要备份。

  • 分析整个音乐库:重复歌曲、同歌名不同版本、空歌单、歌单交集、未整理的"我喜欢"。

  • 按歌手、专辑、关键词和时长筛选歌曲,创建规则歌单。

  • 保存并重复同步规则歌单,写入前展示新增 / 移除差异和确认哈希。

  • 比较两次"我喜欢"快照,只整理后来新增的歌曲。

  • 分页批量补全发行时间、语言、版本和 Live / Remix / 伴奏标签,结果本地缓存。

  • 合并歌单、拆分歌单、复制歌单,同时保留原始歌单。

  • 搜索歌曲、读取歌曲详情和歌词。

  • 让 AI 按语言、流派、年代、场景或歌手整理/分类/新建歌单。

  • 一首歌可进入最多 3 张歌单;写入前先预览,冻结计划后才写回。

  • 自动创建或精确复用唯一同名歌单,分批写入并逐批回读验证。

  • 记录每次运行和通用操作,支持整理计划的有限回滚。

34 个 MCP 工具

通用歌单操作(账号级写入)

工具

说明

qqmusic_status

登录状态、音乐库概览与写入能力检查

qqmusic_list_playlists

列出全部自建歌单

qqmusic_get_playlist

读取歌单及其歌曲元数据

qqmusic_create_playlist

创建空歌单(需探针通过)

qqmusic_add_songs

加 1–20 首歌并回读验证

qqmusic_remove_songs

移 1–20 首歌并回读验证

qqmusic_delete_playlist

删除空歌单

音乐库分析

工具

说明

qqmusic_analyze_library

一键体检:覆盖、重复、空歌单、未整理

qqmusic_find_duplicates

出现在多张歌单的歌曲 + 同歌名不同版本

qqmusic_find_empty_playlists

空歌单,只读不改

qqmusic_find_unorganized_songs

未进入任何其他歌单的"我喜欢"歌曲

qqmusic_compare_playlists

两张歌单的交集与各自独有歌曲

智能歌单

工具

说明

qqmusic_create_smart_playlist

按歌手 / 专辑 / 关键词 / 时长规则建歌单

qqmusic_merge_playlists

合并 2–20 张歌单为去重新歌单,源保留

qqmusic_split_playlist

把一张歌单按 AI 分组拆成多个新歌单,源保留

qqmusic_preview_smart_playlist_sync

保存规则并预览新增 / 移除差异,不写入 QQ 音乐

qqmusic_apply_smart_playlist_sync

校验预览哈希后同步规则歌单,可重复运行

搜索与音乐信息

工具

说明

qqmusic_search

按歌名 / 歌手 / 专辑搜索

qqmusic_get_song_detail

读取单曲完整元数据

qqmusic_get_lyrics

读取歌词(版权允许时)

qqmusic_enrich_export_page

批量补全导出歌曲的年份、语言、版本等元数据并缓存

整理"我喜欢"工作流

工具

说明

qqmusic_export_liked

完整备份"我喜欢"到本地 JSON / CSV

qqmusic_get_export_summary / qqmusic_get_export_page

分页读取备份,避免一次载入过多

qqmusic_create_plan

创建整理计划草稿

qqmusic_set_taxonomy

定义分类(自动保留"待整理")

qqmusic_upsert_assignments

批量写入分类 / 置信度 / 理由(≤200 条)

qqmusic_preview_plan

覆盖率与歌单数量预览,不触碰 QQ 音乐

qqmusic_finalize_plan

冻结计划并生成不可篡改的 SHA-256

qqmusic_revise_plan

从冻结计划创建新修订

qqmusic_probe_write

临时歌单全链路写探针

qqmusic_apply_plan

创建 / 复用歌单并分批加歌(需探针通过)

qqmusic_rollback_run

run_id 精确回滚一次运行

qqmusic_prepare_incremental_organization

比较快照,只导出新增喜欢供后续分类

推荐使用流程

整理"我喜欢"时,建议让 AI 严格按下面的顺序执行:

  1. 调用 qqmusic_status,确认登录状态和本地能力可用。

  2. 调用 qqmusic_export_liked,完整备份"我喜欢",取得 export_id

  3. 调用 qqmusic_get_export_summary 查看整体信息,再用 qqmusic_get_export_page 分页读取歌曲,避免一次载入过多内容。

  4. 调用 qqmusic_create_plan 创建草稿,并用 qqmusic_set_taxonomy 定义分类。系统会自动保留"待整理"分类。

  5. AI 分析歌曲后,分批调用 qqmusic_upsert_assignments 写入分类、置信度和理由;每首歌最多进入 3 个分类。

  6. 调用 qqmusic_preview_plan 检查覆盖率、各歌单数量和待整理歌曲。此时不会修改 QQ 音乐。

  7. 需要调整时继续修改草稿;确认无误后调用 qqmusic_finalize_plan 冻结方案并生成 SHA-256。冻结后不能直接修改,可用 qqmusic_revise_plan 创建新修订。

  8. 调用 qqmusic_probe_write,用临时歌单验证当前 QQ 音乐接口是否支持创建、加歌、回读、移除和删除。

  9. 只有预览已确认、方案已冻结且探针成功后,才调用 qqmusic_apply_plan 创建或复用目标歌单并分批加歌。

  10. 如果本次整理结果需要撤销,使用应用结果中的 run_id 调用 qqmusic_rollback_run。它只撤销该次运行记录的新增歌曲,不会改动"我喜欢"。

可以直接对 AI 这样说:

请按推荐流程整理我的"我喜欢"。先检查状态并完整备份,然后分页读取歌曲,
按语言、流派和使用场景建立分类;低置信度歌曲放入"待整理"。
完成后只给我预览,不要写入。等我明确确认后,再冻结方案、运行写入探针并应用。
任何时候都不要从"我喜欢"删除歌曲。

使用场景

1. 先做一次音乐库体检

请分析我的 QQ 音乐音乐库,不要修改任何内容。
告诉我有多少空歌单、重复歌曲、歌单之间的交集,
以及"我喜欢"里还没有进入任何其他歌单的歌曲。

AI 会调用 qqmusic_analyze_library,必要时继续调用 qqmusic_find_duplicatesqqmusic_find_empty_playlistsqqmusic_find_unorganized_songsqqmusic_compare_playlists

2. 合并歌单但保留原歌单

把"通勤"和"开车"合并成一张"驾驶精选"。
重复歌曲只保留一份,原来的两张歌单不要修改。

AI 会读取两张源歌单,调用 qqmusic_merge_playlists。新歌单写入后会回读确认,源歌单不会被删除。

3. 把一张大歌单拆成多个场景

读取我的"收藏精选",按歌曲气质拆成"通勤""运动""夜晚"三张歌单。
先展示每张歌单包含哪些歌,确认后再创建;原歌单保留。

AI 会先调用 qqmusic_get_playlist,根据歌曲元数据生成分组预览,再调用 qqmusic_split_playlist

4. 用规则持续创建歌单

从"我喜欢"里找出周杰伦的歌,创建一张"周杰伦精选",最多 100 首,
不要重复,也不要动"我喜欢"。

AI 会使用 qqmusic_create_smart_playlist,规则可以组合歌手、专辑、关键词和时长:

{
  "keyword": "",
  "singer": "周杰伦",
  "album": "",
  "min_duration_seconds": null,
  "max_duration_seconds": null,
  "limit": 100,
  "deduplicate": true
}

source_directory_id=201 表示从"我喜欢"读取;它只作为来源,不会成为写入目标。

5. 搜索歌曲、查详情和歌词

搜索"晴天",告诉我有哪些版本;再读取最匹配版本的歌曲详情和歌词。

AI 会调用 qqmusic_search,再根据返回的 MID 调用 qqmusic_get_song_detailqqmusic_get_lyrics

6. 整理"我喜欢"

请整理我的 QQ 音乐"我喜欢":先备份,按语言、流派和使用场景分类,
低置信度的歌放入"待整理"。先给我预览和分类理由,确认后再写入。
绝不从"我喜欢"删除歌曲。

这是完整的计划工作流,工具顺序见上方"推荐使用流程"。

7. 让规则歌单跟着"我喜欢"更新

同步"周杰伦精选":来源是"我喜欢",保留歌手包含"周杰伦"的歌曲。
先展示新增和移除差异,不要直接写入;这次不要移除我手动放进去的歌曲。

AI 会调用 qqmusic_preview_smart_playlist_sync 保存规则并返回 preview_sha256。你确认后再调用 qqmusic_apply_smart_playlist_sync。 以后使用同一名称和规则再次预览,只会显示新的差异。默认 remove_extraneous=false,因此不会删除用户手动加入的歌曲。

8. 只整理最近新增的喜欢

比较上次快照,只整理后来新加入"我喜欢"的歌曲。
补全这些歌的发行年份、语言和版本信息,然后沿用之前的分类方式。

qqmusic_prepare_incremental_organization 会先保存当前完整快照,再生成只包含新增歌曲的 incremental_export_id。后续直接用这个导出创建整理计划即可。第一次运行且没有历史快照时, 只建立基线,不会把整个音乐库误当成新增内容。检测到从"我喜欢"消失的歌曲时只报告,不执行删除。

9. 批量补全分类所需元数据

读取这个导出的第一页,为歌曲补全发行时间、语言、版本、Live/Remix/伴奏标签,
需要时附带一小段歌词,再根据这些信息分类。

qqmusic_enrich_export_page 每页最多处理 50 首,并发请求数限制为 5。结果缓存在本机 30 天; 默认不读取歌词,启用时也只返回去除时间标签后的前 1200 个字符,避免把大段歌词塞进模型上下文。

MCP 工具提示

所有工具都声明了 MCP annotations。客户端可以区分只读工具、本地状态变更、远端追加和可能移除歌曲的操作, 从而优先选择高层工作流,并在真正的破坏性写入前展示更明确的确认提示。原有底层工具继续保留,兼容已有配置和提示词。

环境要求

  • Windows 10 或 Windows 11

  • 已安装 Chrome 或 Edge

  • 支持 MCP 的 AI 客户端

自动安装脚本会准备 uv 和隔离的 Python 环境,不要求预先安装 Python 或 Node.js。

安装

推荐在 PowerShell 中运行自动安装脚本:

irm https://github.com/baoozak/qqmusic-mcp/releases/latest/download/install.ps1 | iex

脚本会自动:

  1. 检查并安装 uv

  2. 下载最新 GitHub Release 的 wheel,并用随 Release 发布的 SHA-256 校验。

  3. 安装 qqmusic-mcp,将命令目录加入当前用户的 PATH

  4. 让你选择 Codex、Claude Desktop、Cursor 或 VS Code。

  5. 打开 QQ 音乐登录窗口,将登录态用 Windows DPAPI 加密保存。

  6. 自动注册 Codex;Claude Desktop、Cursor 和 VS Code 会输出待合并的标准配置。

  7. 运行安装检查。

脚本不读取或输出 Cookie。希望先审阅脚本时,可以下载后再运行:

$installer = "$env:TEMP\qqmusic-mcp-install.ps1"
irm https://github.com/baoozak/qqmusic-mcp/releases/latest/download/install.ps1 -OutFile $installer
notepad $installer
powershell -ExecutionPolicy Bypass -File $installer

手动安装

已经安装 uv 时,也可以直接从 GitHub 安装,然后运行一次设置向导:

uv tool install "git+https://github.com/baoozak/qqmusic-mcp.git"
qqmusic-mcp setup --client codex

升级时重新运行安装脚本;卸载使用:

uv tool uninstall qqmusic-mcp

接入 MCP 客户端

推荐使用标准 stdio 传输。客户端负责启动和关闭 MCP,不需要端口、后台服务或 Bearer Token。

Codex

登录、自动注册并检查:

qqmusic-mcp setup --client codex
codex mcp get qqmusic-mcp

等价的手动命令:

codex mcp add qqmusic-mcp -- qqmusic-mcp stdio

Claude Desktop

先登录并生成配置:

qqmusic-mcp setup --client claude

将输出中的 mcpServers 合并到 Claude Desktop 配置文件。典型配置如下:

{
  "mcpServers": {
    "qqmusic-mcp": {
      "command": "qqmusic-mcp",
      "args": ["stdio"]
    }
  }
}

Cursor

qqmusic-mcp setup --client cursor

将输出合并到项目 .cursor/mcp.json 或 Cursor 的全局 MCP 配置。

VS Code

qqmusic-mcp setup --client vscode

将输出保存或合并到 .vscode/mcp.json

{
  "servers": {
    "qqmusic-mcp": {
      "type": "stdio",
      "command": "qqmusic-mcp",
      "args": ["stdio"]
    }
  }
}

如果客户端找不到 qqmusic-mcp,运行 Get-Command qqmusic-mcp,然后把配置中的 command 换成输出的完整路径。

首次登录

自动安装脚本和 qqmusic-mcp setup 会在注册 MCP 客户端之前打开隔离的 Chrome 窗口;Chrome 不可用时尝试 Edge。使用 QQ 或微信登录 QQ 音乐即可,检测到登录态并完成服务端验证后窗口自动关闭。这样登录不会占用 MCP 的启动握手时间。

登录 Cookie 不会以明文写入磁盘、日志或 MCP 响应。它通过 Windows DPAPI 加密保存到:

%LOCALAPPDATA%\QQMusicOrganizer\session.dpapi

该文件只能由当前 Windows 用户解密。后续启动会自动复用;只有 QQ 音乐明确返回登录失效时才重新打开登录窗口。主动退出:

qqmusic-mcp logout

需要重新登录或单独检查安装时:

qqmusic-mcp login --force
qqmusic-mcp doctor --client codex

HTTP 模式

只有确实需要固定本地 URL 时才使用 Streamable HTTP。服务只绑定 127.0.0.1,并强制要求至少 32 字符的 Bearer Token。

$token = qqmusic-mcp token
[Environment]::SetEnvironmentVariable("QQMUSIC_ORGANIZER_TOKEN", $token, "User")
$env:QQMUSIC_ORGANIZER_TOKEN = $token
qqmusic-mcp start
qqmusic-mcp status

MCP URL:http://127.0.0.1:8765/mcp

停止服务:

qqmusic-mcp stop

直接前台运行也可以:

qqmusic-mcp serve --port 8765 --login-timeout 600

CLI

qqmusic-mcp stdio                     标准 MCP stdio 服务
qqmusic-mcp serve                     前台 HTTP 服务
qqmusic-mcp start/status/stop         管理后台 HTTP 服务
qqmusic-mcp login [--force]           登录并用 DPAPI 保存会话
qqmusic-mcp setup --client <client>   登录、注册并检查安装
qqmusic-mcp doctor --client <client>  检查命令、浏览器、登录和注册
qqmusic-mcp install --client codex    注册 Codex MCP
qqmusic-mcp config --client <client>  输出客户端配置
qqmusic-mcp logout                    删除 DPAPI 登录缓存
qqmusic-mcp uninstall [--purge]       移除 Codex 注册,可选退出登录
qqmusic-mcp token                     生成 HTTP Bearer Token

数据与安全

本地数据位于 %LOCALAPPDATA%\QQMusicOrganizer

  • exports/:歌曲快照、CSV 和摘要。

  • plans/:草稿、冻结计划、预览和 SHA-256。

  • runs/:写入及回滚日志。

  • operations/:通用歌单操作日志,可用于审计和人工回溯。

  • smart_playlists/:规则歌单定义、最近一次差异预览与确认哈希。

  • metadata/:按歌曲 MID 缓存的详情、分类辅助字段和可选歌词片段。

  • capabilities.json:最近一次写入探针结果。

  • session.dpapi:DPAPI 加密后的登录态。

安全边界:

  • 标准模式使用 stdio,不开放网络端口。

  • HTTP 模式仅监听 localhost 并校验 Bearer Token。

  • 写回前必须完成创建、加歌、读取、移除和删除探针。

  • 每批最多写入 20 首,并在写后回读确认。

  • 同名歌单不唯一时停止,避免写错目标。

  • "我喜欢"永远不是写入、删除或回滚目标。

  • 通用工具的每次写操作都会记录日志;需要撤销时优先使用整理计划工作流的回滚能力。

  • Cookie、令牌和完整认证错误不进入日志。

详见 SECURITY.md

限制

  • 本项目不是腾讯或 QQ 音乐官方产品,也与其无关联。

  • QQ 音乐网站接口、登录流程或风控变化可能导致功能失效。

  • 不提供播放链接与下载:这是刻意的定位选择(见"与常见 QQ 音乐 MCP 的对比");试听请使用搜索播放类 MCP 或 QQ 音乐客户端。

  • MCP 提供数据和安全写入工具,不内置大模型;分类质量取决于使用它的 AI 客户端。

  • 部分下架、地区限制或异常歌曲可能进入"待整理"。

  • 歌词和歌曲详情是否可用取决于 QQ 音乐当前的版权和接口返回。

  • 回滚不会恢复 QQ 音乐服务端自身的历史状态,只处理本项目运行日志记录的新增内容。

故障排查

查看 MCP 是否安装:

Get-Command qqmusic-mcp
qqmusic-mcp --help

登录窗口被关闭或登录已失效:

qqmusic-mcp login --force --login-timeout 600
qqmusic-mcp doctor --client codex

命令在当前窗口找不到:安装器已更新当前用户的 PATH,请重新打开 PowerShell 后再运行 qqmusic-mcp doctor

HTTP 服务未就绪:

qqmusic-mcp status
Get-Content "$env:LOCALAPPDATA\QQMusicOrganizer\service.err.log" -Tail 50

写入失败:不要绕过探针。保留本地计划和运行日志,更新到最新版后重新执行 qqmusic_probe_write

许可证

MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/baoozak/qqmusic-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server