Skip to main content
Glama

ncm-mcp-server

Servidor MCP de NetEase Cloud Music. Tras conectarlo al cliente oficial de Claude, Claude puede buscar canciones, añadirlas, cambiar de canción, aceptar invitaciones a sesiones de escucha conjunta y enviar mensajes privados.

Solo necesitas SSH desde el móvil, no hace falta usar F12 en el ordenador para obtener cookies.

Arquitectura

Claude.ai
  ↓ MCP (HTTPS)
nginx  你的域名/ncm/mcp
  ↓
ncm_mcp_server.py  127.0.0.1:3940
  ├─ 读操作 → NeteaseCloudMusicApi 容器 :3939
  └─ 写操作 → 本地 eapi/weapi 加密 → 网易云官方接口

Las operaciones de escritura no pasan por contenedores, porque los parámetros de cifrado eapi de las imágenes públicas ya han caducado, y las sesiones de escucha conjunta y los mensajes privados devuelven error 400.

Related MCP server: soundcloud-mcp-server

Archivos

Archivo

Función

ncm_crypto.py

Dos conjuntos de cifrado: eapi / weapi

ncm_client.py

Capa de peticiones, lectura/escritura de cookies y ID de sala

ncm_mcp_server.py

Servicio principal MCP, 16 herramientas

login.py

Inicio de sesión para obtener cookies completas (qr / sms / password)

heartbeat.py

Latido de la sesión de escucha conjunta, para cron

ncm-mcp.service

Unidad de systemd

nginx.conf.example

Configuración de proxy inverso

Despliegue

1. Clonar el código e instalar dependencias

cd ~
git clone https://github.com/1049376904-crypto/ncm-mcp-server.git
cd ncm-mcp-server
sudo pip3 install -r requirements.txt

Las versiones antiguas de pip no reconocen --break-system-packages; usa directamente la línea de arriba. Si aparece el error externally-managed-environment, añade ese parámetro y reintenta.

2. Levantar el contenedor de lectura

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

Con que devuelva JSON, vale.

3. Iniciar sesión para obtener cookies

Crea un directorio que solo tú puedas leer; las cookies equivalen a tu contraseña, no las pierdas en /tmp:

mkdir -p ~/.ncm && chmod 700 ~/.ncm
export NCM_COOKIE_FILE=~/.ncm/music_cookie.txt
export NCM_ROOM_FILE=~/.ncm/listen_room_id.txt

Luego elige un método de inicio de sesión:

python3 login.py sms       # 推荐:手机号 + 短信验证码
python3 login.py qr        # 终端直接画二维码,网易云 APP 扫
python3 login.py password  # 手机号 + 密码(网易云经常拦)

En el modo qr, el código QR puede no caber en la terminal SSH del móvil; además guardará una copia en /tmp/ncm_qr.png. El método más fiable es sms.

Cuando veas [ok] logged in as … (uid=…), ya está. Anota este uid, es el uid de la cuenta de IA.

4. Registrar como servicio

Primero ajusta User y las rutas en ncm-mcp.service para que coincidan con tu usuario real, y luego:

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

Para ver los logs:

sudo journalctl -u ncm-mcp -f

Al arrancar imprimirá la accesibilidad del contenedor, la longitud de la cookie y la dirección de escucha; solo continúa cuando las tres líneas sean correctas.

5. Proxy inverso con nginx

Pega el contenido de nginx.conf.example en el bloque server HTTPS de tu dominio:

sudo nginx -t && sudo systemctl reload nginx
curl -i https://你的域名/ncm/mcp

Si devuelve 400/406 en lugar de 502, el proxy inverso funciona (MCP no acepta GET sin más; que dé error es normal). Un 502 significa que el backend no se ha levantado.

6. Cron del latido

crontab -e

Añade una línea (ajusta la ruta a la tuya):

* * * * * 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

Si no hay ninguna sala activa, sale directamente sin enviar peticiones innecesarias; puede quedarse ejecutándose siempre.

7. Conectar con Claude

Claude.ai → Settings → Connectors → Add custom connector:

  • URL: https://tu-dominio/ncm/mcp

  • Nombre: NetEase Cloud Music

Tras conectar deberías ver las 16 herramientas.

Uso

Escucha conjunta

  1. En la app de NetEase Cloud Music, envía una invitación de escucha conjunta a la cuenta de IA

  2. Dile a Claude: "Te he enviado una invitación de escucha conjunta"

  3. Claude llama a get_private_list → get_private_messages para extraer el roomId y el inviterId

  4. Claude llama a accept_listen_together para unirse; el ID de sala se guarda automáticamente y cron se encarga del latido

Pedir canciones

  1. Claude llama a search_music para obtener el songId

  2. add_song lo añade a la lista

  3. Cierra y reabre la app en segundo plano (es la única forma de sincronizar la lista)

  4. Después, play_command cambia de canción con efecto inmediato

Lista de herramientas

Escritura: accept_listen_together end_listen_together listen_together_heartbeat listen_together_status get_room_playlist play_command add_song send_private_message

Lectura: search_music get_song_detail get_private_list get_private_messages get_user_playlist get_playlist_detail get_login_status get_user_detail

Respaldo: http_request

Seguridad

El servicio MCP no tiene permisos especiales. Solo escucha en 127.0.0.1 y se expone mediante nginx. Cualquiera que conozca https://tu-dominio/ncm/mcp podría operar tu cuenta de NetEase Cloud Music. Dos recomendaciones:

  • No uses /ncm/ como ruta; cámbiala por una cadena aleatoria, por ejemplo /ncm-a7f3k9d2/

  • O añade verificación de cabeceras en nginx; el connector de Claude admite cabeceras personalizadas

Las cookies equivalen a tu contraseña; no las subas al repositorio; .gitignore ya las excluye.

Solución de problemas

Síntoma

Causa

Las operaciones de escritura dan 400

Cookie incompleta, falta __csrf; vuelve a ejecutar login.py

Las operaciones de lectura fallan

El contenedor está caído; sudo docker restart ncmapi

La sesión de escucha conjunta se cae sola

El latido no se ejecuta; revisa heartbeat.log

nginx 502

El servicio no está activo; systemctl status ncm-mcp

Claude no conecta

Problema de certificado o falta /mcp en la URL

La canción se añade pero no aparece en la app

Normal; cierra y reabre la app en segundo plano

Agradecimientos

Implementación basada en el tutorial de Iris & Rei.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for the Spotify Web API — gives Claude and other AI assistants tools to search music, control playback, manage playlists, library, and podcasts.
    47
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that enables AI assistants to search and retrieve music data (songs, lyrics, playlists, albums, artists) from Netease Cloud Music.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for managing YouTube Music playlists via Claude. Add and remove songs, create playlists, and ask Claude to suggest music — all through conversation.
    -