Spotify oynatmayı kontrol edin ve playlist'lerinizi yönetin.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"marcelmarais-spotify-mcp-server": {
"command": "node",
"args": [
"~/.mcp/spotify-mcp-server/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/marcelmarais/spotify-mcp-server.git ~/.mcp/spotify-mcp-server
cd ~/.mcp/spotify-mcp-server Cursor ve Claude gibi yapay zeka asistanlarının Spotify oynatmayı kontrol etmesine ve çalma listelerini yönetmesine olanak tanıyan hafif bir Model Context Protocol (MCP) sunucusu.
searchSpotify
query (string): Arama terimitype (string): Aranacak öğe türü (track, album, artist, playlist)limit (number, optional): Döndürülecek maksimum sonuç sayısı (10-50)searchSpotify("bohemian rhapsody", "track", 20)getNowPlaying
getNowPlaying()getMyPlaylists
limit (number, optional): Döndürülecek maksimum çalma listesi sayısı (varsayılan: 20)offset (number, optional): Döndürülecek ilk çalma listesinin indeksi (varsayılan: 0)getMyPlaylists(10, 0)getPlaylistTracks
playlistId (string): Çalma listesinin Spotify ID'silimit (number, optional): Döndürülecek maksimum track sayısı (varsayılan: 100)offset (number, optional): Döndürülecek ilk track'in indeksi (varsayılan: 0)getPlaylistTracks("37i9dQZEVXcJZyENOWUFo7")getRecentlyPlayed
limit (number, optional): Döndürülecek maksimum track sayısını belirten bir sayı.getRecentlyPlayed({ limit: 10 })getUsersSavedTracks
limit (number, optional): Döndürülecek maksimum track sayısı (1-50, varsayılan: 50)offset (number, optional): Sayfalandırma için offset (0 tabanlı indeks, varsayılan: 0)getUsersSavedTracks({ limit: 20, offset: 0 })getQueue
limit (number, optional): Gösterilecek maksimum sonraki öğe sayısı (1-50, varsayılan: 10)getQueue({ limit: 20 })getAvailableDevices
getAvailableDevices()removeUsersSavedTracks
trackIds (array): Kaldırılacak Spotify track ID'lerinin dizisi (maksimum 40)removeUsersSavedTracks({ trackIds: ["4iV5W9uYEdYUVa79Axb7Rh", "1301WleyT98MSxVHPZCA6M"] })playMusic
uri (string, optional): Çalınacak öğenin Spotify URI'si (tür ve id'yi geçersiz kılar)type (string, optional): Çalınacak öğe türü (track, album, artist, playlist)id (string, optional): Çalınacak öğenin Spotify ID'sideviceId (string, optional): Üzerinde çalacak cihazın ID'siplayMusic({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })playMusic({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })pausePlayback
deviceId (string, optional): Duraklatılacak cihazın ID'sipausePlayback()resumePlayback
deviceId (string, optional): Oynatmanın devam edeceği cihazın ID'siresumePlayback()skipToNext
deviceId (string, optional): Cihazın ID'siskipToNext()skipToPrevious
deviceId (string, optional): Cihazın ID'siskipToPrevious()createPlaylist
name (string): Yeni çalma listesinin adıdescription (string, optional): Çalma listesi açıklamasıpublic (boolean, optional): Çalma listesinin genel olup olmayacağı (varsayılan: false)createPlaylist({ name: "Workout Mix", description: "Songs to get pumped up", public: false })addTracksToPlaylist
playlistId (string): Çalma listesinin ID'sitrackUris (array): Eklenecek track URI'leri veya ID'lerinin dizisiposition (number, optional): Track'lerin ekleneceği pozisyonaddTracksToPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackUris: ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh"] })addToQueue
uri (string, optional): Kuyruğa eklenecek öğenin Spotify URI'si (tür ve id'yi geçersiz kılar)type (string, optional): Kuyruğa alınacak öğe türü (track, album, artist, playlist)id (string, optional): Kuyruğa alınacak öğenin Spotify ID'sideviceId (string, optional): Kuyruğa alınacak cihazın ID'siaddToQueue({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })addToQueue({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })setVolume
volumePercent (number): Ayarlanacak ses düzeyi (0-100)deviceId (string, optional): Ses düzeyinin ayarlanacağı cihazın ID'sisetVolume({ volumePercent: 50 })adjustVolume
adjustment (number): Sesi ayarlanacak miktar (-100 ile 100). Pozitif değerler sesi artırır, negatif değerler azaltır.deviceId (string, optional): Ses düzeyinin ayarlanacağı cihazın ID'siadjustVolume({ adjustment: 10 }) (%10 artır)adjustVolume({ adjustment: -20 }) (%20 azalt)getAlbums
albumIds (string|array): Tek bir albüm ID'si veya albüm ID'lerinin dizisi (maksimum 20)getAlbums("4aawyAB9vmqN3uQ7FjRGTy") veya getAlbums(["4aawyAB9vmqN3uQ7FjRGTy", "1DFixLWuPkv3KT3TnV35m3"])getAlbumTracks
albumId (string): Albümün Spotify ID'silimit (number, optional): Döndürülecek maksimum track sayısı (1-50)offset (number, optional): Sayfalandırma için offset (0 tabanlı indeks)getAlbumTracks("4aawyAB9vmqN3uQ7FjRGTy", 10, 0)saveOrRemoveAlbumForUser
albumIds (array): Spotify albüm ID'lerinin dizisi (maksimum 20)action (string): Gerçekleştirilecek işlem: "save" veya "remove"saveOrRemoveAlbumForUser(["4aawyAB9vmqN3uQ7FjRGTy"], "save")checkUsersSavedAlbums
albumIds (array): Kontrol edilecek Spotify albüm ID'lerinin dizisi (maksimum 20)checkUsersSavedAlbums(["4aawyAB9vmqN3uQ7FjRGTy", "1DFixLWuPkv3KT3TnV35m3"])getPlaylist
playlistId (string): Çalma listesinin Spotify ID'sigetPlaylist({ playlistId: "37i9dQZEVXcJZyENOWUFo7" })updatePlaylist
playlistId (string): Çalma listesinin Spotify ID'siname (string, optional): Çalma listesinin yeni adıdescription (string, optional): Çalma listesinin yeni açıklamasıpublic (boolean, optional): Çalma listesinin genel olup olmayacağıcollaborative (boolean, optional): Çalma listesinin işbirlikçi olup olmayacağı (genel değer false olmalı)updatePlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", name: "New Name", public: true })removeTracksFromPlaylist
playlistId (string): Çalma listesinin Spotify ID'sitrackIds (array): Kaldırılacak Spotify track ID'lerinin dizisi (maksimum 100)snapshotId (string, optional): Belirli bir sürümü hedeflemek için çalma listesi snapshot ID'siremoveTracksFromPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackIds: ["4iV5W9uYEdYUVa79Axb7Rh"] })reorderPlaylistItems
playlistId (string): Çalma listesinin Spotify ID'sirangeStart (number): Taşınacak ilk öğenin pozisyonu (0 tabanlı indeks)insertBefore (number): Öğelerin ekleneceği pozisyon (0 tabanlı indeks)rangeLength (number, optional): Taşınacak ardışık öğe sayısı (varsayılan: 1)snapshotId (string, optional): Belirli bir sürümü hedeflemek için çalma listesi snapshot ID'sireorderPlaylistItems({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", rangeStart: 2, insertBefore: 0 })git clone https://github.com/marcelmarais/spotify-mcp-server.git
cd spotify-mcp-server
npm install
npm run build
http://127.0.0.1:8888/callback)Proje kökünde bir spotify-config.json dosyası oluşturun (sağlanan örneği kopyalayıp değiştirebilirsiniz):
# Örnek yapılandırma dosyasını kopyalayın
cp spotify-config.example.json spotify-config.json
Ardından dosyayı kimlik bilgilerinizle düzenleyin:
{
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"redirectUri": "http://127.0.0.1:8888/callback"
}
Spotify API, kimlik doğrulama için OAuth 2.0 kullanır. Uygulamanızda kimlik doğrulama yapmak için şu adımları izleyin:
npm run auth
Script bir yetkilendirme URL'si oluşturacak. Bu URL'yi web tarayıcınızda açın.
Spotify'da oturum açmanız ve uygulamanızı yetkilendirmeniz istenecek.
Yetkilendirmeden sonra Spotify sizi belirtilen redirect URI'nize URL'de bir kod parametresi ile yönlendirecek.
Kimlik doğrulama script'i otomatik olarak bu kodu erişim ve yenileme tokenları ile değiştirecek.
Bu tokenlar spotify-config.json dosyasına kaydedilecek ve dosya şöyle görünecek:
{
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"redirectUri": "http://localhost:8888/callback",
"accessToken": "BQAi9Pn...kKQ",
"refreshToken": "AQDQcj...7w",
"expiresAt": 1677889354671
}
Not: expiresAt alanı, erişim tokenının ne zaman sona ereceğini gösteren Unix zaman damgasıdır (milisaniye cinsinden).
refreshToken kullanılarak şeffaf bir şekilde gerçekleşir, bu nedenle manuel olarak yeniden kimlik doğrulama yapmanız gerekmez. Yenileme başarısız olursa, yeniden kimlik doğrulamak için npm run auth komutunu çalıştırmanız gerekecek.MCP sunucunuzu Claude Desktop ile kullanmak için, Claude yapılandırmanıza ekleyin:
{
"mcpServers": {
"spotify": {
"command": "node",
"args": ["spotify-mcp-server/build/index.js"]
}
}
}
Cursor için, Cursor Settings içindeki MCP sekmesine gidin (command + shift + J). Bu komutla bir sunucu ekleyin:
node path/to/spotify-mcp-server/build/index.js
Cline ile MCP'nizi doğru şekilde kurmak için şu dosya yapılandırmasının ayarlanmış olduğundan emin olun cline_mcp_settings.json:
{
"mcpServers": {
"spotify": {
"command": "node",
"args": ["~/../spotify-mcp-server/build/index.js"],
"autoApprove": ["getListeningHistory", "getNowPlaying"]
}
}
}
Araçların müdahale olmadan çalışması için otomatik onay dizisine ek araçlar ekleyebilirsiniz.
Tüm MCP protokol özelliklerini kullanan MCP sunucusu.
Python'da MCP sunucuları oluşturmak için üst düzey bir framework.
Ekran ve ses kaydını zaman damgasıyla indeksleyen, SQL/embedding storage kullanan, semantic search ve LLM tabanlı geçmiş analizi yapan local-first sistem. NextJS plugin ekosistemi aracılığıyla bağlam farkında AI ajanlar oluşturmayı ve event-triggered aksiyonları destekler.
YouTube video bilgilerini çıkartıp dönüştürün.
Obsidian ile REST API aracılığıyla etkileşim kurma
AI ajanlarını 600+ entegrasyon ile tek bir arayüzden bağlayın - OAuth, scaling ve monitoring dahil