Skip to main content
Glama
xiazhe-xz
by xiazhe-xz

ESP32-C3 MCP Music Server

Корневой каталог этого проекта представляет собой MCP-сервер, предназначенный для управления воспроизведением музыки на аудиоклиенте ESP32-C3 через MQTT с помощью OpenClaw, Claude Desktop или других MCP-агентов.

Инструкции по прошивке ESP32-C3 находятся в esp32-c3-client/README.md.

Функции

  • Отправка команд управления (воспроизведение, пауза, стоп, громкость, следующая песня и т.д.) на ESP32-C3 через MQTT

  • Чтение списка песен из HTTP-каталога музыки

  • Поддержка поиска и воспроизведения по названию песни

  • Поддержка последовательного воспроизведения всего списка музыки

  • Поддержка записи плейлиста в MQTT retained topic для автономного воспроизведения на ESP32-C3

  • Поддержка сброса сохраненных настроек Wi-Fi на ESP32-C3 для повторного входа в режим настройки через смартфон

Требования

  • Node.js 18 или выше

  • Доступный MQTT-брокер

  • Клиент ESP32-C3 прошит и подключен к тому же MQTT-брокеру

  • HTTP-каталог музыки, например, директория с MP3-файлами, опубликованная через nginx

Установка

npm install

Скопируйте шаблон переменных окружения:

copy .env.example .env

В Windows PowerShell также можно использовать:

Copy-Item .env.example .env

Затем измените .env в соответствии с вашей конфигурацией.

Переменные окружения

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=50

Описание:

  • MQTT_BROKER: Адрес подключения к MQTT-брокеру, поддерживаются URL с именем пользователя и паролем

  • MQTT_TOPIC: Топик, в который ESP32-C3 получает команды управления

  • MQTT_PLAYLIST_TOPIC: Префикс для retained-топика кэша плейлиста

  • MUSIC_LIBRARY_URL: Адрес HTTP-каталога музыки, в конце можно не ставить /

  • FETCH_TIMEOUT_MS: Тайм-аут для получения каталога музыки или файлов плейлиста

  • MAX_PLAYLIST_FETCHES: Максимальное количество анализируемых файлов плейлистов

  • MAX_PLAYLIST_ITEMS: Максимальное количество песен, кэшируемых при последовательном воспроизведении

Пример конфигурации MCP

В агентах, поддерживающих MCP stdio server, настройте команду следующим образом:

{
  "mcpServers": {
    "esp32-c3-music": {
      "command": "node",
      "args": ["D:\\ESP32-C3-MCP\\index.js"],
      "cwd": "D:\\ESP32-C3-MCP"
    }
  }
}

Если агент поддерживает переменные окружения, можно также поместить переменные из .env непосредственно в конфигурацию MCP-сервера.

Доступные инструменты

list_music_library

Сканирует MUSIC_LIBRARY_URL и возвращает список найденных названий песен и их URL.

play_music

Воспроизводит указанную песню. Можно передать:

  • url: Воспроизвести этот URL напрямую

  • song_name: Найти и воспроизвести по названию из музыкальной библиотеки

Если переданы и url, и song_name, приоритет отдается url.

play_song_from_library

Поиск и воспроизведение только по song_name из музыкальной библиотеки.

play_playlist

Последовательное воспроизведение списка музыкальной библиотеки.

Сначала список записывается в MQTT retained topic:

esp32-c3/music/playlist/active/meta
esp32-c3/music/playlist/active/item/0
esp32-c3/music/playlist/active/item/1

Затем в MQTT_TOPIC отправляется:

{"action":"play_playlist","start_index":0}

После получения ESP32-C3 начинает воспроизведение из локально кэшированного списка, автоматически переходя к следующей песне после завершения текущей. Таким образом, MCP-серверу не нужно быть постоянно онлайн.

Параметры:

  • start_index: С какой песни начать, по умолчанию 0

  • max_songs: Максимальное количество песен для кэширования и воспроизведения, по умолчанию MAX_PLAYLIST_ITEMS

next_music

Следующая песня или переключение трека.

  • Передача url или song_name: Прямое переключение на указанную песню, сохраняя логику воспроизведения одного трека

  • Без параметров: Отправка playlist_next, чтобы ESP32-C3 перешел к следующей песне в режиме плейлиста

pause_music

Приостановка воспроизведения. ESP32-C3 остановит текущее воспроизведение, но сохранит последний URL.

stop_music

Остановка воспроизведения и очистка последнего URL. Режим плейлиста также будет завершен.

set_volume

Установка громкости, диапазон 0-100.

reset_wifi

Отправка:

{"action":"reset_wifi"}

После получения ESP32-C3 очистит сохраненные настройки Wi-Fi и перезагрузится, после чего откроет точку доступа для настройки через смартфон.

Примечание: этот инструмент требует, чтобы ESP32-C3 оставался онлайн и был подключен к MQTT. Если устройство уже оффлайн, оно не получит это сообщение MQTT, и придется дождаться автоматического включения точки доступа после неудачного подключения прошивки.

Соглашение о сообщениях MQTT

Топик управления по умолчанию:

esp32-c3/music/play

Типовые сообщения управления:

{"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"}

Префикс топика плейлиста по умолчанию:

esp32-c3/music/playlist/active

MCP-сервер публикует retained-сообщения, на которые подписывается ESP32-C3:

esp32-c3/music/playlist/active/#

Локальная проверка

Проверка синтаксиса Node.js:

node --check index.js

В текущем package.json пока нет скриптов автоматического тестирования.

F
license - not found
Not graded
quality - not tested
Not graded
maintenance - not tested

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…

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/xiazhe-xz/ESP32-C3-MCP'

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