Docs

MCP 播放控制

让支持 MCP 的 AI 客户端读取播放状态并控制 Scopify 桌面端的播放。

Scopify 桌面端内置一个只监听本机的 MCP(Model Context Protocol)服务。支持 MCP 的客户端连接后,可以查询当前播放状态,并在你授权的范围内控制播放、切歌、跳转和调节音量。

仅桌面端提供

MCP 服务由 Electron 主进程运行,Web 版没有这项能力。服务默认关闭,需要在设置中手动启用。

快速开始

  1. 打开 设置 → 桌面端,找到「本地 MCP」区域,启用「启用本地 MCP」。
  2. 在「客户端凭据」中查看并复制客户端配置。
  3. 把配置粘贴到你的 MCP 客户端。客户端需要支持 Streamable HTTP 传输。
  4. 回到设置页点击「测试 MCP 连接」,确认服务可用。

复制出来的配置使用标准的 mcpServers 结构,连接地址为本机回环地址,并携带 Bearer 令牌:

{
  "mcpServers": {
    "scopify": {
      "type": "http",
      "url": "http://127.0.0.1:31927/mcp",
      "headers": { "Authorization": "Bearer <your-token>" }
    }
  }
}

端口默认是 31927,可以在设置中修改。令牌请以设置页生成的配置为准,不要自己编造或提交到仓库。

设置项

设置说明
启用本地 MCP总开关,默认关闭。关闭后服务立即停止。
监听端口默认 31927。端口被占用时服务不会启动,也不会影响播放器本身。
受控能力逐项勾选客户端可以执行的操作,见下文。
测试 MCP 连接发送真实的 initialize 与 tools/list 请求,确认服务可用。
重启服务使用已保存的配置重新启动本地服务。
客户端凭据查看并复制客户端配置,或重新生成令牌;重新生成后旧令牌立即失效。

可用工具

当前暴露的是刻意收窄的一组播放工具:

工具类型说明
get_playback_status只读当前播放状态、进度、时长和音量,时间单位为毫秒。
get_now_playing只读当前歌曲的简要信息。不包含歌词、音源地址或凭据。
play控制继续播放。
pause控制暂停播放。
toggle_playback控制切换播放与暂停。
next_track控制播放下一首。
previous_track控制播放上一首。
seek控制跳转到指定位置,参数 positionMs 为毫秒。
set_volume控制设置音量,参数 volume 范围 0–100。

权限模型

主进程会对每一次工具调用检查权限,工具说明只是给 AI 客户端看的提示,并不起限制作用。权限共 9 项:

分组能力
读取playback.read.status、playback.read.track
控制playback.control.play、.pause、.toggle、.next、.previous、.seek、.volume

默认只授予 playback.read(读取)。要让客户端控制播放,需要在「受控能力」中显式勾选对应项。旧版本配置里的粗粒度 playback.read 与 playback.control 仍然有效,并会覆盖对应分组下的全部细项。

安全边界

  • 仅本机访问:服务只监听 127.0.0.1,局域网和外网无法连接。
  • 令牌认证:每个请求必须携带 Authorization: Bearer <token>,缺失或错误返回 401。
  • 来源检查:Host 只接受 localhost 与 127.0.0.1,以防 DNS 重绑定;带有非本机 Origin 的浏览器请求会被拒绝(403)。普通 MCP 客户端不发送 Origin,不受影响。
  • 凭据安全存储:令牌由 Electron 主进程通过系统加密服务(safeStorage)加密保存,不会写入配置文件,也不会出现在界面状态里;系统加密服务不可用时不会创建持久令牌。
  • 会话上限:同时最多 8 个会话,空闲 30 分钟后自动回收。
  • 调用审计:每次工具调用都会记录工具名、结果和耗时,不记录请求内容。
  • 真实回执:控制类操作会等待播放器的真实回执再返回,而不是只报告「已发送」。

常见问题

连接被拒绝或超时:确认设置中已启用、状态为监听中;端口被占用时服务不会启动,请换一个端口。

返回 401:令牌已被重新生成。请回到设置页复制最新的客户端配置。

工具返回「不可用」:播放器当前没有可控制的会话,或者对应能力没有被授权。

相关页面

本页内容