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.

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_listget_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.

-
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