Skip to main content
Glama

Облегченный сервер Model Context Protocol (MCP) , который позволяет помощникам с искусственным интеллектом, таким как Cursor & Claude, управлять воспроизведением Spotify и управлять плейлистами.

Примеры взаимодействий

  • «Включи первую песню Элвиса»

  • «Создайте плейлист в стиле фьюжн Тейлор Свифт/Slipknot»

  • «Скопировать все техно-треки из моего плейлиста для тренировок в мой рабочий плейлист»

Related MCP server: Sonic Pi MCP

Инструменты

Операции чтения

  1. поискSpotify

    • Описание : Поиск треков, альбомов, исполнителей или плейлистов на Spotify.

    • Параметры :

      • query (строка): поисковый термин

      • type (строка): Тип элемента для поиска (трек, альбом, исполнитель, плейлист)

      • limit (число, необязательно): максимальное количество возвращаемых результатов (10-50)

    • Возвраты : список соответствующих товаров с их идентификаторами, названиями и дополнительными данными.

    • Пример : searchSpotify("bohemian rhapsody", "track", 20)

  2. getNowPlaying

    • Описание : Получить информацию о воспроизводимом в данный момент треке на Spotify

    • Параметры : Нет

    • Возвращает : объект, содержащий название трека, исполнителя, альбом, ход воспроизведения, длительность и состояние воспроизведения.

    • Пример : getNowPlaying()

  3. получитьMyPlaylists

    • Описание : Получить список плейлистов текущего пользователя на Spotify.

    • Параметры :

      • limit (число, необязательно): максимальное количество возвращаемых плейлистов (по умолчанию: 20)

      • offset (число, необязательно): индекс первого возвращаемого плейлиста (по умолчанию: 0)

    • Возвращает : Массив плейлистов с их идентификаторами, названиями, количеством треков и публичным статусом.

    • Пример : getMyPlaylists(10, 0)

  4. получитьPlaylistTracks

    • Описание : Получить список треков в определенном плейлисте Spotify.

    • Параметры :

      • playlistId (строка): идентификатор Spotify плейлиста.

      • limit (число, необязательно): максимальное количество возвращаемых треков (по умолчанию: 100)

      • offset (число, необязательно): индекс первой возвращаемой дорожки (по умолчанию: 0)

    • Возвращает : Массив треков с их идентификаторами, названиями, исполнителями, альбомами, продолжительностью и датой добавления.

    • Пример : getPlaylistTracks("37i9dQZEVXcJZyENOWUFo7")

  5. получитьНедавноВоспроизведено

    • Описание : Извлекает список недавно воспроизведенных треков из Spotify.

    • Параметры :

      • limit (число, необязательно): число, указывающее максимальное количество возвращаемых треков.

    • Возвращает : Если треки найдены, возвращается отформатированный список недавно воспроизведенных треков, в противном случае возвращается сообщение: «У вас нет недавно воспроизведенных треков на Spotify».

    • Пример : getRecentlyPlayed({ limit: 10 })

  6. получитьНедавноВоспроизведено

    • Описание : Извлекает список недавно воспроизведенных треков из Spotify.

    • Параметры :

      • limit (число, необязательно): число, указывающее максимальное количество возвращаемых треков.

    • Возвращает : Если треки найдены, возвращается отформатированный список недавно воспроизведенных треков, в противном случае возвращается сообщение: «У вас нет недавно воспроизведенных треков на Spotify».

    • Пример : getRecentlyPlayed({ limit: 10 })

Воспроизведение/Создание операций

  1. playMusic

    • Описание : Начните воспроизведение трека, альбома, исполнителя или плейлиста на Spotify.

    • Параметры :

      • uri (строка, необязательно): URI Spotify элемента для воспроизведения (переопределяет тип и идентификатор)

      • type (строка, необязательно): Тип элемента для воспроизведения (трек, альбом, исполнитель, плейлист)

      • id (строка, необязательно): идентификатор Spotify элемента для воспроизведения

      • deviceId (строка, необязательно): идентификатор устройства для воспроизведения

    • Возвращает : статус успеха

    • Пример : playMusic({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })

    • Альтернатива : playMusic({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })

  2. паузаВоспроизведение

    • Описание : Приостановка текущего трека на Spotify.

    • Параметры :

      • deviceId (строка, необязательно): идентификатор устройства, которое нужно приостановить

    • Возвращает : статус успеха

    • Пример : pausePlayback()

  3. перейти к следующему

    • Описание : Переход к следующему треку в текущей очереди воспроизведения.

    • Параметры :

      • deviceId (строка, необязательно): идентификатор устройства

    • Возвращает : статус успеха

    • Пример : skipToNext()

  4. Перейти к предыдущему

    • Описание : Переход к предыдущему треку в текущей очереди воспроизведения.

    • Параметры :

      • deviceId (строка, необязательно): идентификатор устройства

    • Возвращает : статус успеха

    • Пример : skipToPrevious()

  5. создатьПлейлист

    • Описание : Создайте новый плейлист на Spotify

    • Параметры :

      • name (строка): Имя для нового плейлиста

      • description (строка, необязательно): Описание для плейлиста

      • public (логическое значение, необязательно): должен ли плейлист быть общедоступным (по умолчанию: false)

    • Возвращает : объект с идентификатором и URL нового плейлиста.

    • Пример : createPlaylist({ name: "Workout Mix", description: "Songs to get pumped up", public: false })

  6. добавитьТрекиВПлейлист

    • Описание : Добавить треки в существующий плейлист Spotify.

    • Параметры :

      • playlistId (строка): идентификатор плейлиста

      • trackUris (массив): Массив URI или идентификаторов треков для добавления

      • position (номер, необязательно): позиция для вставки дорожек

    • Возвращает : статус успешного выполнения и идентификатор снимка.

    • Пример : addTracksToPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackUris: ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh"] })

  7. добавить в очередь

    • Описание : Добавляет трек, альбом, исполнителя или плейлист в текущую очередь воспроизведения.

      • Параметры :

      • uri (строка, необязательно): URI Spotify элемента для добавления в очередь (переопределяет тип и идентификатор)

      • type (строка, необязательно): Тип элемента для очереди (трек, альбом, исполнитель, плейлист)

      • id (строка, необязательно): идентификатор Spotify элемента для очереди

      • deviceId (строка, необязательно): идентификатор устройства для постановки в очередь

    • Возвращает : статус успеха

    • Пример : addToQueue({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })

    • Альтернатива : addToQueue({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })

Настраивать

Предпосылки

  • Node.js v16+

  • Премиум-аккаунт Spotify

  • Зарегистрированное приложение Spotify Developer

Установка

git clone https://github.com/marcelmarais/spotify-mcp-server.git cd spotify-mcp-server npm install npm run build

Создание приложения для разработчиков Spotify

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

  2. Войдите в систему, используя свою учетную запись Spotify.

  3. Нажмите кнопку «Создать приложение».

  4. Введите название и описание приложения.

  5. Примите Условия обслуживания и нажмите «Создать»

  6. На панели инструментов вашего нового приложения вы увидите свой идентификатор клиента.

  7. Нажмите «Показать секрет клиента», чтобы раскрыть свой секрет клиента.

  8. Нажмите «Изменить настройки» и добавьте URI перенаправления (например, http://localhost:8888/callback ).

  9. Сохраните изменения

Конфигурация API Spotify

Создайте файл spotify-config.json в корне проекта (вы можете скопировать и изменить предоставленный пример):

# Copy the example config file cp spotify-config.example.json spotify-config.json

Затем отредактируйте файл, указав свои учетные данные:

{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "redirectUri": "http://localhost:8888/callback" }

Процесс аутентификации

API Spotify использует OAuth 2.0 для аутентификации. Выполните следующие шаги для аутентификации вашего приложения:

  1. Запустите скрипт аутентификации:

npm run auth
  1. Скрипт сгенерирует URL авторизации. Откройте этот URL в вашем веб-браузере.

  2. Вам будет предложено войти в Spotify и авторизовать свое приложение.

  3. После авторизации Spotify перенаправит вас на указанный вами URI перенаправления с параметром code в URL.

  4. Скрипт аутентификации автоматически обменяет этот код на токены доступа и обновления.

  5. Эти токены будут сохранены в вашем файле spotify-config.json , который теперь будет выглядеть примерно так:

{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "redirectUri": "http://localhost:8888/callback", "accessToken": "BQAi9Pn...kKQ", "refreshToken": "AQDQcj...7w", "expiresAt": 1677889354671 }
  1. При необходимости сервер автоматически обновит токен доступа, используя токен обновления.

Интеграция с Claude Desktop, Cursor и VsCode через расширение модели Cline

Чтобы использовать ваш сервер MCP с Claude Desktop, добавьте его в конфигурацию Claude:

{ "mcpServers": { "spotify": { "command": "node", "args": ["spotify-mcp-server/build/index.js"] } } }

Для курсора перейдите на вкладку MCP в Cursor Settings (command + shift + J). Добавьте сервер с помощью этой команды:

node path/to/spotify-mcp-server/build/index.js

Чтобы правильно настроить MCP с помощью Cline, убедитесь, что у вас есть следующий набор конфигурации файла cline_mcp_settings.json :

{ "mcpServers": { "spotify": { "command": "node", "args": ["~/../spotify-mcp-server/build/index.js"], "autoApprove": ["getListeningHistory", "getNowPlaying"] } } }

Вы можете добавить дополнительные инструменты в массив автоматического одобрения, чтобы запускать инструменты без вмешательства.

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/marcelmarais/spotify-mcp-server'

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