Skip to main content
Glama

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.

Файлы

Файл

Описание

ncm_crypto.py

две схемы шифрования: eapi / weapi

ncm_client.py

слой запросов, чтение/запись cookie и ID комнаты

ncm_mcp_server.py

основной MCP-сервис, 16 инструментов

login.py

вход и получение полного cookie (qr / sms / password)

heartbeat.py

heartbeat для поддержания совместного прослушивания, для cron

ncm-mcp.service

systemd-юнит

nginx.conf.example

конфигурация обратного прокси

Развертывание

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.

Создайте каталог, доступный только вам: 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 инструментов.

Использование

Совместное прослушивание

  1. В приложении 网易云 отправьте AI-аккаунту приглашение на совместное прослушивание.

  2. Скажите Claude: «Я отправил приглашение на совместное прослушивание».

  3. Claude вызывает get_private_listget_private_messages и извлекает roomId и inviterId.

  4. Claude вызывает accept_listen_together и входит; ID комнаты сохраняется автоматически, cron берёт на себя поддержание heartbeat.

Заказ песни

  1. Claude вызывает search_music, чтобы получить songId.

  2. add_song добавляет в список.

  3. Один раз закройте APP из фона и зайдите заново (иначе синхронизацию списка не сделать).

  4. Затем 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 неполный, не хватает __csrf; перезапустите login.py

Операции чтения выдают ошибку

контейнер упал, sudo docker restart ncmapi

Комната совместного прослушивания сама отключается

heartbeat не запущен, смотрите heartbeat.log

nginx 502

служба не запущена, systemctl status ncm-mcp

Claude не подключается

проблема с сертификатом или в URL пропущен /mcp

Добавил песню, но в APP не видно

это нормально, закройте фон и зайдите заново

Благодарности

Реализовано на основе руководства по интеграции от Iris & Rei.

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all MCP Connectors

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/1049376904-crypto/ncm-mcp-server'

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