ncm-mcp-server
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 |
| Dos conjuntos de cifrado: eapi / weapi |
| Capa de peticiones, lectura/escritura de cookies y ID de sala |
| Servicio principal MCP, 16 herramientas |
| Inicio de sesión para obtener cookies completas (qr / sms / password) |
| Latido de la sesión de escucha conjunta, para cron |
| Unidad de systemd |
| 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.txtLas 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 120Con 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.txtLuego 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-pagerPara ver los logs:
sudo journalctl -u ncm-mcp -fAl 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/mcpSi 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 -eAñ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>&1Si 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/mcpNombre: NetEase Cloud Music
Tras conectar deberías ver las 16 herramientas.
Uso
Escucha conjunta
En la app de NetEase Cloud Music, envía una invitación de escucha conjunta a la cuenta de IA
Dile a Claude: "Te he enviado una invitación de escucha conjunta"
Claude llama a
get_private_list→get_private_messagespara extraer el roomId y el inviterIdClaude llama a
accept_listen_togetherpara unirse; el ID de sala se guarda automáticamente y cron se encarga del latido
Pedir canciones
Claude llama a
search_musicpara obtener el songIdadd_songlo añade a la listaCierra y reabre la app en segundo plano (es la única forma de sincronizar la lista)
Después,
play_commandcambia 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 |
Las operaciones de lectura fallan | El contenedor está caído; |
La sesión de escucha conjunta se cae sola | El latido no se ejecuta; revisa |
nginx 502 | El servicio no está activo; |
Claude no conecta | Problema de certificado o falta |
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.
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