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.
Файлы
Файл | Описание |
| две схемы шифрования: 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for Suno AI music generation, lyrics, and covers
MCP server for GLM chat completions using Zhipu AI models via AceDataCloud
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/1049376904-crypto/ncm-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server