ESP32-C3 MCP Music Server
Servidor de música MCP ESP32-C3
El directorio raíz de este proyecto es un servidor MCP, utilizado para permitir que OpenClaw, Claude Desktop u otros agentes MCP controlen un cliente de audio ESP32-C3 para reproducir música a través de MQTT.
Las instrucciones del firmware del ESP32-C3 se encuentran en esp32-c3-client/README.md.
Funcionalidades
Enviar comandos de control como reproducir, pausar, detener, volumen y siguiente canción al ESP32-C3 a través de MQTT.
Leer la lista de canciones desde un directorio de música HTTP.
Soporte para buscar y reproducir por nombre de canción.
Soporte para reproducción secuencial de toda la lista de música.
Soporte para escribir listas de reproducción en un topic retenido de MQTT, para que el ESP32-C3 las reproduzca secuencialmente por sí mismo.
Soporte para borrar la configuración Wi-Fi guardada en el ESP32-C3 y volver al modo de configuración por teléfono.
Requisitos de ejecución
Node.js 18 o superior.
Un broker MQTT accesible.
Cliente ESP32-C3 flasheado y conectado al mismo broker MQTT.
Un directorio de música HTTP, por ejemplo, un directorio de archivos MP3 expuesto por nginx.
Instalación
npm installCopiar la plantilla de variables de entorno:
copy .env.example .envEn Windows PowerShell también puedes usar:
Copy-Item .env.example .envLuego, modifica .env según tu situación real.
Variables de entorno
MQTT_BROKER=mqtt://esp32:esp32mqtt2026@localhost:1883
MQTT_TOPIC=esp32-c3/music/play
MQTT_PLAYLIST_TOPIC=esp32-c3/music/playlist/active
MUSIC_LIBRARY_URL=http://47.102.147.204:8080/mp3/
FETCH_TIMEOUT_MS=8000
MAX_PLAYLIST_FETCHES=3
MAX_PLAYLIST_ITEMS=50Descripción:
MQTT_BROKER: Dirección de conexión del broker MQTT, admite URL con nombre de usuario y contraseña.MQTT_TOPIC: Topic donde el ESP32-C3 recibe los comandos de control.MQTT_PLAYLIST_TOPIC: Prefijo del topic de caché retenido para listas de reproducción.MUSIC_LIBRARY_URL: Dirección del directorio de música HTTP, puede no incluir/al final.FETCH_TIMEOUT_MS: Tiempo de espera para obtener el directorio de música o archivos de lista de reproducción.MAX_PLAYLIST_FETCHES: Cantidad máxima de archivos de lista de reproducción a analizar.MAX_PLAYLIST_ITEMS: Cantidad máxima de canciones a almacenar en caché durante la reproducción secuencial.
Ejemplo de configuración MCP
En agentes que admiten servidores MCP stdio, configura el comando como:
{
"mcpServers": {
"esp32-c3-music": {
"command": "node",
"args": ["D:\\ESP32-C3-MCP\\index.js"],
"cwd": "D:\\ESP32-C3-MCP"
}
}
}Si el agente admite variables de entorno, también puedes colocar las variables de .env directamente en la configuración del servidor MCP.
Herramientas disponibles
list_music_library
Escanea MUSIC_LIBRARY_URL y devuelve los nombres de las canciones y las URL encontradas.
play_music
Reproduce una canción específica. Puedes pasar:
url: Reproduce esta URL directamente.song_name: Busca y reproduce por nombre desde la biblioteca de música.
Si se pasan tanto url como song_name, se prioriza la url.
play_song_from_library
Busca y reproduce solo por song_name desde la biblioteca de música.
play_playlist
Reproduce la lista de la biblioteca de música en orden.
Primero escribe la lista en un topic retenido de MQTT:
esp32-c3/music/playlist/active/meta
esp32-c3/music/playlist/active/item/0
esp32-c3/music/playlist/active/item/1Luego envía al MQTT_TOPIC:
{"action":"play_playlist","start_index":0}Una vez que el ESP32-C3 lo recibe, comenzará a reproducir desde la lista almacenada localmente y, al terminar la canción actual, reproducirá la siguiente por sí mismo. De esta manera, el servidor MCP no necesita estar siempre en línea.
Parámetros:
start_index: Desde qué canción comenzar, por defecto0.max_songs: Cantidad máxima de canciones a almacenar y reproducir, por defectoMAX_PLAYLIST_ITEMS.
next_music
Siguiente canción o cambio de pista.
Pasar
urlosong_name: Cambia directamente a la canción especificada, manteniendo la lógica original de reproducción de una sola canción.No pasar parámetros: Envía
playlist_next, permitiendo que el ESP32-C3 salte a la siguiente canción en modo de lista de reproducción.
pause_music
Pausa la reproducción. El ESP32-C3 detendrá la reproducción actual, pero conservará la última URL.
stop_music
Detiene la reproducción y borra la última URL. También saldrá del modo de lista de reproducción.
set_volume
Establece el volumen, rango 0-100.
reset_wifi
Envía:
{"action":"reset_wifi"}Una vez que el ESP32-C3 lo recibe, borrará la configuración Wi-Fi guardada y se reiniciará; tras el reinicio, activará el punto de acceso para la configuración por teléfono.
Nota: Esta herramienta requiere que el ESP32-C3 esté actualmente en línea y conectado a MQTT. Si el dispositivo ya está desconectado, no recibirá este mensaje MQTT y solo podrá activar el punto de acceso de configuración automáticamente después de que el firmware falle al conectarse.
Convención de mensajes MQTT
El topic de control por defecto es:
esp32-c3/music/playMensajes de control comunes:
{"action":"play","url":"http://example.com/song.mp3"}
{"action":"next","url":"http://example.com/next.mp3"}
{"action":"pause"}
{"action":"stop"}
{"action":"set_volume","volume":65}
{"action":"play_playlist","start_index":0}
{"action":"playlist_next"}
{"action":"reset_wifi"}El prefijo por defecto para el topic de lista de reproducción es:
esp32-c3/music/playlist/activeEl servidor MCP publicará mensajes retenidos, a los cuales el ESP32-C3 se suscribe:
esp32-c3/music/playlist/active/#Verificación local
Verificar la sintaxis de Node.js:
node --check index.jsActualmente, package.json aún no tiene scripts de prueba automatizados.
This server cannot be installed
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
Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
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/xiazhe-xz/ESP32-C3-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server