ncm-mcp-server
ncm-mcp-server
MCP Server для 网易云音乐. После подключения к официальному клиенту Claude, Claude может напрямую искать музыку, добавлять треки, переключать песни, принимать приглашения на совместное прослушивание и отправлять личные сообщения.
Весь процесс требует только SSH с телефона — не нужно на компьютере вытаскивать cookie через F12.
Архитектура
Claude.ai
↓ MCP (HTTPS)
nginx 你的域名/ncm/mcp
↓
ncm_mcp_server.py 127.0.0.1:3940
├─ 读操作 → NeteaseCloudMusicApi 容器 :3939
└─ 写操作 → 本地 eapi/weapi 加密 → 网易云官方接口Операции записи не идут через контейнер, потому что параметры шифрования eapi в публичном образе уже устарели: совместное прослушивание и личные сообщения возвращают 400.
Related MCP server: soundcloud-mcp-server
Файлы
Файл | Описание |
| две схемы шифрования: eapi / weapi |
| слой запросов, чтение/запись cookie и ID комнаты |
| основной MCP-сервис, 16 инструментов |
| вход и получение полного cookie (qr / sms / password) |
| heartbeat для поддержания совместного прослушивания, для cron |
| systemd-юнит |
| конфигурация обратного прокси |
Развертывание
1. Склонировать код и установить зависимости
cd ~
git clone https://github.com/1049376904-crypto/ncm-mcp-server.git
cd ncm-mcp-server
sudo pip3 install -r requirements.txtСтарая версия pip не понимает --break-system-packages; просто используйте команду выше. Если появится ошибка externally-managed-environment, добавьте этот параметр и повторите.
2. Запустить контейнер для интерфейса чтения
sudo docker run -d -p 3939:3000 --restart=always \
--name ncmapi binaryify/netease_cloud_music_api:latest
curl -s "http://localhost:3939/search?keywords=test" | head -c 120Достаточно, чтобы он отдавал JSON.
3. Войти и получить cookie
Создайте каталог, доступный только вам: cookie равноценен паролю от аккаунта, не кладите его в /tmp.
mkdir -p ~/.ncm && chmod 700 ~/.ncm
export NCM_COOKIE_FILE=~/.ncm/music_cookie.txt
export NCM_ROOM_FILE=~/.ncm/listen_room_id.txtЗатем выберите один из способов входа:
python3 login.py sms # 推荐:手机号 + 短信验证码
python3 login.py qr # 终端直接画二维码,网易云 APP 扫
python3 login.py password # 手机号 + 密码(网易云经常拦)В режиме qr QR-код может не поместиться в мобильном SSH, и его не получится отсканировать; при этом он также сохранит копию в /tmp/ncm_qr.png. Самый надёжный — sms.
Когда увидите [ok] logged in as … (uid=…) — всё готово. Запомните этот uid: это uid AI-аккаунта.
4. Настроить как службу
Сначала измените User в ncm-mcp.service и пути, чтобы они совпадали с вашим реальным пользователем, затем:
sudo cp ncm-mcp.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now ncm-mcp
sudo systemctl status ncm-mcp --no-pagerПосмотрите логи:
sudo journalctl -u ncm-mcp -fПри запуске выводятся доступность контейнера, длина cookie и адрес прослушивания. Если все три строки в порядке, продолжайте.
5. Обратный прокси nginx
Вставьте содержимое nginx.conf.example в HTTPS server-блок вашего домена:
sudo nginx -t && sudo systemctl reload nginx
curl -i https://你的域名/ncm/mcpЕсли возвращается 400/406, а не 502 — значит, обратный прокси работает (MCP не обрабатывает «голый» GET, ошибка — это нормально). 502 означает, что бэкенд не запустился.
6. Heartbeat через cron
crontab -eДобавьте строку (укажите свои пути):
* * * * * NCM_COOKIE_FILE=/home/ubuntu/.ncm/music_cookie.txt NCM_ROOM_FILE=/home/ubuntu/.ncm/listen_room_id.txt /usr/bin/python3 /home/ubuntu/ncm-mcp-server/heartbeat.py >> /home/ubuntu/.ncm/heartbeat.log 2>&1Если активной комнаты нет, он просто завершается, не отправляя лишних запросов; его можно оставить висеть постоянно.
7. Подключение к Claude
Claude.ai → Settings → Connectors → Add custom connector:
URL:
https://你的域名/ncm/mcpНазвание: 网易云音乐
После подключения вы должны увидеть 16 инструментов.
Использование
Совместное прослушивание
В приложении 网易云 отправьте AI-аккаунту приглашение на совместное прослушивание.
Скажите Claude: «Я отправил приглашение на совместное прослушивание».
Claude вызывает
get_private_list→get_private_messagesи извлекает roomId и inviterId.Claude вызывает
accept_listen_togetherи входит; ID комнаты сохраняется автоматически, cron берёт на себя поддержание heartbeat.
Заказ песни
Claude вызывает
search_music, чтобы получить songId.add_songдобавляет в список.Один раз закройте APP из фона и зайдите заново (иначе синхронизацию списка не сделать).
Затем
play_commandпереключает трек; изменения вступают в силу в реальном времени.
Список инструментов
Операции записи: accept_listen_together end_listen_together listen_together_heartbeat listen_together_status get_room_playlist play_command add_song send_private_message
Операции чтения: search_music get_song_detail get_private_list get_private_messages get_user_playlist get_playlist_detail get_login_status get_user_detail
Запасной вариант: http_request
Безопасность
MCP-сервис сам по себе не имеет аутентификации. Он слушает только 127.0.0.1 и доступен через nginx. Любой, кто знает https://你的域名/ncm/mcp, может управлять вашим аккаунтом 网易云. Два совета:
Не используйте путь
/ncm/; замените его на случайную строку, например/ncm-a7f3k9d2/.Или добавьте в nginx проверку заголовков: коннектор Claude поддерживает пользовательские заголовки.
Cookie равноценен паролю от аккаунта; не коммитьте его в репозиторий — .gitignore уже всё закрывает.
Устранение неполадок
Симптом | Причина |
Все операции записи возвращают 400 | cookie неполный, не хватает |
Операции чтения выдают ошибку | контейнер упал, |
Комната совместного прослушивания сама отключается | heartbeat не запущен, смотрите |
nginx 502 | служба не запущена, |
Claude не подключается | проблема с сертификатом или в URL пропущен |
Добавил песню, но в APP не видно | это нормально, закройте фон и зайдите заново |
Благодарности
Реализовано на основе руководства по интеграции от Iris & Rei.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for GLM chat completions using Zhipu AI models via AceDataCloud
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
MCP server for AI dialogue using various LLM models via AceDataCloud
Hosted X (Twitter) MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for the Spotify Web API — gives Claude and other AI assistants tools to search music, control playback, manage playlists, library, and podcasts.475MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives Claude access to your SoundCloud library, allowing you to manage playlists and tracks through natural language.3AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI assistants to search and retrieve music data (songs, lyrics, playlists, albums, artists) from Netease Cloud Music.MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server for managing YouTube Music playlists via Claude. Add and remove songs, create playlists, and ask Claude to suggest music — all through conversation.-