Orpheus
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Orpheus放一首 Novo Amor,顺便把音量调到 60"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Orpheus · 网易云 Agent 点歌桥
让 Hermes / Codex / 任意支持 MCP 的 Agent 用自然语言控制本机网易云音乐的播放:点歌、放歌单、查待播队列、暂停/切歌/音量。
插件跑在网易云里(负责真正操作播放器),Agent 只负责理解你的话和选歌,两者通过本机的一个小服务连接。
你: "放一首 Novo Amor" → Agent(MCP) → 本机桥接服务(127.0.0.1:17632) → BetterNCM 插件 → 网易云播放器
↑ 配对令牌鉴权 / 结果回传命名彩蛋:网易云自己的内部协议就叫
orpheus://,而俄耳甫斯(Orpheus)是希腊神话中的音乐之神。
目录结构
orpheus/
├── src/
│ ├── server.js 本地 HTTP + WebSocket 桥接服务(Agent ←→ 插件的中间层)
│ ├── mcp.js MCP stdio 服务器:把 19 个工具暴露给 Agent
│ ├── tools.js 工具定义 + zod 参数校验(唯一可信的参数边界)
│ ├── client.js 内部:MCP → 桥接服务的 HTTP 客户端
│ ├── ensure-service.js 内部:MCP 启动时自动拉起桥接服务
│ ├── config.js 读写 .local/config.json(端口 + 配对令牌)
│ ├── cli.js 命令行调用单个工具(调试用)
│ └── install.js 把插件安装进 BetterNCM
├── plugin/
│ ├── manifest.json BetterNCM 插件清单(name: Orpheus, slug: orpheus)
│ └── main.js 插件运行时:运行时探测网易云接口、执行命令、回报结果
└── test/ 单元测试(node --test)Related MCP server: mcp_music_server
前置条件
Node.js ≥ 20
网易云音乐 PC 版 3.1.20 ~ 3.x(已在 3.1.41 上实测)
BetterNCM ≥ 1.3.4(已装好并注入)
网易云已登录账号(歌单、权限相关操作需要)
安装
1. 安装依赖
cd outputs/orpheus
npm install2. 把插件装进 BetterNCM(会自动生成本机配对令牌)
# 参数是 BetterNCM 的数据目录,默认 C:/betterncm
node src/install.js C:/betterncm它会把 plugin/ 复制到 C:/betterncm/plugins_dev/orpheus/,并写入 connection.json(内含本机 ws://127.0.0.1:<port>/plugin 和配对令牌)。然后重启网易云让插件加载(BetterNCM 不热重载)。
3. 起桥接服务(一般不用手动起——MCP 启动时会自动拉起来)
npm start # 手动启动,监听 127.0.0.1:17632健康检查:curl -H "Authorization: Bearer <token>" http://127.0.0.1:17632/health
接入 Agent
Hermes
printf 'y\n' | hermes mcp add orpheus \
--command "C:/Program Files/nodejs/node.exe" \
--args "<绝对路径>/orpheus/src/mcp.js" \
--connect-timeout 30
hermes mcp add会问 "Enable all 19 tools? [Y/n]",非交互环境会被取消,所以用printf 'y\n' |喂答案。
Codex
在 ~/.codex/config.toml 追加:
[mcp_servers.orpheus]
command = 'C:\Program Files\nodejs\node.exe'
args = ['<绝对路径>\orpheus\src\mcp.js']
startup_timeout_sec = 60其他 MCP 客户端
按标准 stdio 服务器配置:命令 = node,参数 = src/mcp.js 的绝对路径。
工具(19 个)
工具 | 作用 | 类型 |
| 读当前歌曲、播放状态、音量、连接能力 | 只读 |
| 搜真实歌曲/歌单,返回真实 ID(点歌前先核对) | 只读 |
| 读已登录账号的歌单(不改云端) | 只读 |
| 列出官方排行榜(飙升榜/新歌榜/热歌榜/原创榜…)拿 id | 只读 |
| 播放「每日推荐」歌曲(按口味每日更新) | 写·替换队列 |
| 读当前歌曲歌词(含翻译) | 只读 |
| 喜欢 / 取消喜欢当前歌曲 | 写 |
| 播放速度 0.5–2.0 | 写 |
| 切换音质(标准/极高/无损/Hi-Res/音效) | 写 |
| 屏蔽当前歌曲或歌手 | 写 |
| 新建歌单 | 写·账号 |
| 把歌曲加入歌单(默认当前歌曲) | 写·账号 |
| 从歌单移除歌曲 | 写·账号 |
| 删除歌单(不可逆) | 写·账号 |
| 分页读当前待播队列 | 只读 |
| 立即播放指定歌曲 ID,保留已有待播列表 | 写 |
| 用指定歌单替换本地播放队列并开始播放(不改云端歌单) | 写 |
| 把歌曲 ID 追加进待播队列,不打断当前歌曲 | 写 |
| pause / resume / next / previous / volume(0–100) / mode(list·single·random·order·fm·ai) | 写 |
安全设计
桥接服务只监听
127.0.0.1,不对外网开放插件→服务、Agent→服务 都用配对令牌鉴权(常量时间比较)
拒绝带
Origin的请求(防浏览器页面调用),阻塞无关的跨站请求不暴露任何"执行任意代码"的工具,参数由 zod 白名单校验(歌曲 ID 必须是数字等)
不导出账号 Cookie,不调用第三方音乐 API,全部走网易云客户端自身的接口
已知行为与限制
点歌确认机制:只有客户端回读确认目标状态才返回
verified:true。屏蔽接口目前仅能确认请求被接受,返回accepted:true, verified:false;喜欢操作未回读到目标状态也会明确返回verified:false。超时返回TIMEOUT,不要自动重试写操作无版权/VIP 不可播的歌返回
UNPLAYABLE,不会假装成功play_playlist会替换当前待播队列(不可逆),且受 1000 首上限约束next/previous走网易云内部 dispatch(playingList/jump2Track;FM 模式走fmPlaying/playNext|playPre),不依赖易碎的 DOM 选择器volume通过原生音频接口设置队列结构若与预期不符会明确报
UNSUPPORTED_QUEUE,而不是静默返回错误数据
测试
npm test # 鉴权、异常消息、超时并发、云端写操作模拟、时长、真实 MCP 握手0.1.1 可靠性与性能改进
异常 WebSocket 消息只关闭对应连接,不再导致桥接服务退出。
请求超时后保持执行锁,直到原命令结束或插件断线;避免超时后并行写入。若接口一直挂起,后续命令返回
BUSY,需要等待或重启网易云。每次云端写入前检查截止时间,不自动换参数重试。已经发出的网易云请求无法撤回,超时仍可能意味着操作已执行但未确认。
歌单增删使用完整列表验证;无效响应、缺失数据、截断列表均不算成功。创建歌单只按返回的新 ID 验证;删除歌单逐页核对。
ids: []明确报错;省略ids仍表示当前歌曲。账号歌单查询按页读取、去重后返回指定范围,兼容接口额外附带的置顶或创建歌单。播放状态
durationMs统一为毫秒,增加pluginVersion便于确认加载版本。API 函数按需解析并缓存,歌单读取绕过客户端结果缓存;找到所需模块即停止扫描;批量歌曲比对使用 Set;文档隐藏时跳过面板刷新,主题检测最多每 5 秒一次。
工具清单由
src/tools.js生成到插件,安装时自动同步;开发时运行npm run sync-tools。测试会检测清单漂移。
升级后需重启网易云以加载新版插件,并重启本地桥接服务;不会改变账号登录配置或配对令牌。测试使用模拟云端接口,不修改真实歌单。以上改动减少了重复扫描和比对工作,但尚未测量真实客户端 CPU/内存变化。
故障排查
现象 | 原因 / 处理 |
| 网易云没开,或插件没加载 → 重启网易云;检查插件面板状态 |
插件面板显示"尚未配对" | 没跑 |
| 客户端没确认目标状态;可能是版权、网络或网易云接口变化,先查当前状态 |
切歌报 | 客户端 |
端口被占用 | 服务可能已在运行; |
本项目通过运行时探测网易云 3.x 的 webpack 模块来定位其内部接口(搜索、歌曲详情、歌单、播放派发等),因此对客户端小版本更新有一定耐受性;但网易云改版仍可能导致接口失效,此时对应工具会明确报错而非静默失败。
许可证
MIT © 2026 SUPERtongmeng
仅供个人学习与自用。使用时请遵守网易云音乐的服务条款,不要用于传播版权内容或账号共享。
This server cannot be deployed
Maintenance
Related MCP Connectors
Generate full songs with vocals, instrumentals and sound effects from text. One server for Suno, Google Lyria, Mureka, MiniMax, ACE-Step, YuE and ElevenLabs. Your agent can quote the credit cost before generating, start a song, wait for it to finish and return download links. Sign in with OAuth; optional daily credit caps; retries never charge twice.
The media memory layer for AI agents and their humans. Your AI client gets 29 tools to search your collection, add items, update ratings, preview music, and find patterns across everything you've read, watched, and listened to.
Autonomous music production for AI agents with MIDI generation, QC and provenance.
AI music and podcast platform for autonomous agents. SoundCloud for AI bots.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to control NetEase Cloud Music playback, login, search, and get personalized recommendations through official APIs.1244MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that enables LLMs to search, play, and manage music from multiple platforms (NetEase, QQ, Kugou) and local files, with lyrics retrieval and playback control.MIT
- AlicenseNot gradedqualityDmaintenanceControls the official NetEase Cloud Music desktop client on Windows, enabling AI to search, play, manage queues, and adjust playback settings via a local control channel.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search Spotify tracks and control playback (play, pause, skip, queue, volume) through the Spotify Web API.72 npm2MIT