Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


Mopidy is an extensible music server that plays music from local disk, Spotify, SoundCloud, Google Play Music, and more. You edit the playlist from any phone, tablet, or computer using a range of MPD and web clients.

Subscribe to updates I use mopidy

Statistics on mopidy

Number of watchers on Github 4907
Number of open issues 208
Average time to close an issue about 1 month
Main language Python
Average time to merge a PR 3 days
Open pull requests 34+
Closed pull requests 27+
Last commit over 1 year ago
Repo Created over 9 years ago
Repo Last Updated over 1 year ago
Size 20.7 MB
Homepage https://www.mopid...
Organization / Authormopidy
Latest Releasev0.19.3
Page Updated
Do you use mopidy? Leave a review!
View open issues (208)
View mopidy activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating mopidy for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


Mopidy is an extensible music server written in Python.

Mopidy plays music from local disk, Spotify, SoundCloud, Google Play Music, and more. You edit the playlist from any phone, tablet, or computer using a range of MPD and web clients.

Stream music from the cloud

Vanilla Mopidy only plays music from your local disk and radio streams. Through extensions, Mopidy can play music from cloud services like Spotify, SoundCloud, and Google Play Music. With Mopidy's extension support, backends for new music sources can be easily added.

Mopidy is just a server

Mopidy is a Python application that runs in a terminal or in the background on Linux computers or Macs that have network connectivity and audio output. Out of the box, Mopidy is an MPD and HTTP server. Additional frontends for controlling Mopidy can be installed from extensions.

Everybody use their favorite client

You and the people around you can all connect their favorite MPD or web client to the Mopidy server to search for music and manage the playlist together. With a browser or MPD client, which is available for all popular operating systems, you can control the music from any phone, tablet, or computer.

Mopidy on Raspberry Pi

The Raspberry Pi is a popular device to run Mopidy on, either using Raspbian or Arch Linux. It is quite slow, but it is very affordable. In fact, the Kickstarter funded Gramofon: Modern Cloud Jukebox project used Mopidy on a Raspberry Pi to prototype the Gramofon device. Mopidy is also a major building block in the Pi Musicbox integrated audio jukebox system for Raspberry Pi.

Mopidy is hackable

Mopidy's extension support and Python, JSON-RPC, and JavaScript APIs make Mopidy perfect for building your own hacks. In one project, a Raspberry Pi was embedded in an old cassette player. The buttons and volume control are wired up with GPIO on the Raspberry Pi, and is used to control playback through a custom Mopidy extension. The cassettes have NFC tags used to select playlists from Spotify.

To get started with Mopidy, check out the installation docs <>_.

  • Documentation <>_
  • Discussion forum <>_
  • Source code <>_
  • Issue tracker <>_
  • IRC: #mopidy at <>_
  • Announcement list: <!forum/mopidy>_
  • Twitter: @mopidy <>_

.. image:: :target: :alt: Latest PyPI version

.. image:: :target: :alt: Travis CI build status

.. image:: :target: :alt: Test coverage

mopidy open issues Ask a question     (View All Issues)
  • almost 3 years mopidy deps doesn't check for python-gst overrides
  • almost 3 years mopidy (mpd frontend) stuck in playing state after last song of queue
  • almost 3 years mopidy/mopidy/internal/ should include field name in errors.
  • almost 3 years `mopidy local scan` doesn't have any tests
  • almost 3 years /mopidy/config/ doesn't implement a check function
  • about 3 years Some streams not getting STREAM_START?
  • about 3 years mms:// URIs not working after upgrade Mopidy 2.0.0 to 2.0.1
  • about 3 years Run tests under multiple locales?
  • about 3 years MPD not started when given hostname in config
  • about 3 years zerconf randomly stops working
  • about 3 years mopidy fails to recover from gstreamer errors
  • about 3 years Create better tests for position tracking
  • about 3 years Support AF_UNIX sockets for mpd
  • about 3 years Implement MPD stats for Cantata
  • about 3 years File backend not unwrapping playlists
  • over 3 years Next track is loaded in currently playing track / Mopidy never changes track
  • over 3 years Clarify unit prefix for Track.bitrate
  • over 3 years Status Information corrupt if using Playlists.
  • over 3 years Feature request: expand backend-interrogation API
  • over 3 years Look into reducing queue latency in audio
  • over 3 years docs: Encourage "frontends" outside of mopidy
  • over 3 years Improve get_images() for stream and file backends
  • over 3 years Missing API docs for mopidy.exceptions
  • over 3 years Consider renaming core.library._backend_error_handling "backend_error_hiding"
  • over 3 years Support cue files
  • over 3 years Sorting in ncmpcpp working very slow and unstable (may be only with Spotify backend)
  • over 3 years Gapless playback - spotify / local files - hearable interception
  • over 3 years Permission denied calling Extension.get_config_dir() with Mopidy running as a service (Debian)
  • over 3 years Remove deprecated Audio APIs
  • over 3 years Remove deprecated Model APIs
mopidy open pull requests (View All Pulls)
  • audio: Workaround crash caused by race
  • core: Persist mopidy state between runs. Fix #310
  • Pass unicode string to `path.is_path_inside_base_dir`
  • Added source field to Track model
  • Find images in audio files
  • audio: be more tolerant of gstreamer states and order. Fix #1453
  • Avoid endless loop if all tracks are unplayable.
  • Fix/gstreamer not pushing tags 2
  • Ignore position of _on_position_changed callback. Fixes #1462
  • Fill mpd date from Fix #1471
  • Fix/816 support zeroconf on non linux machines
  • Replace every non ascii char with blanks - Fix #1502
  • model documentation: update 'composers' and 'performers' type
  • Catch ValueError in tags date parsing.
  • If the date in a tag is invalid, skip it
  • Fix/1133 Add nextsong and nextsongid to mpd status command
  • audio: Postpone set_metadata until track is playing
  • audio: Update scanner to handle sources that only have dynamic pads
  • alexjaw/fix/1512-inconsistent-playlist-state-with-repeat-and-consume
  • Do not scan first-level dirs starting with .
  • Mopidy-File: Added ability to exclude files by extension
  • Improve duration workaround and change how we handle mms scanning again
  • Return previous track with repeat enabled
  • remove leftover utf-8 encode from path handling
  • Add download flag to playbin
  • File: Add feature to file module for sorting files vs directories.
  • Lookup track metadata for MPD load and listplaylistinfo
  • Fix library.lookup with an empty uri list
  • Remove Deezer backend
  • docs: fix typo
  • Fix/1599 catch unicode decoding errors in encoding.locale_decode()
  • Allow volume slider to change sink volume
  • Fix/1531 add unix domain socket
  • Start mopidy after the snapcast server
mopidy list of languages used
mopidy latest release notes
v0.19.3 Mopidy v0.19.3

Bug fix release.

  • Audio: Fix negative track length for radio streams. (Fixes: #662, PR: #796)
  • Audio: Tell GStreamer to not pick Jack sink. (Fixes: #604)
  • Zeroconf: Fix discovery by adding .local to the announced hostname. (PR: #795)
  • Zeroconf: Fix intermittent DBus/Avahi exception.
  • Extensions: Fail early if trying to setup an extension which doesnt implement the mopidy.ext.Extension.setup() method. (Fixes: #813)
v0.19.2 Mopidy v0.19.2

Bug fix release, directly from the Mopidy development sprint at EuroPython 2014 in Berlin.

  • Audio: Make audio/mixer_volume work on the software mixer again. This was broken with the mixer changes in 0.19.0. (Fixes: #791)
  • HTTP frontend: When using Tornado 4.0, allow WebSocket requests from other hosts. (Fixes: #788)
  • MPD frontend: Fix crash when MPD commands are called with the wrong number of arguments. This was broken with the MPD command changes in 0.19.0. (Fixes: #789)
v0.19.1 Mopidy v0.19.1

Bug fix release.

  • Dependencies: Mopidy now requires Tornado >= 2.3, instead of >= 3.1. This should make Mopidy continue to work on Debian/Raspbian stable, where Tornado 2.3 is the newest version available.
  • HTTP frontend: Add missing string interpolation placeholder.
  • Development: mopidy --version and mopidy.core.Core.get_version() now returns the correct version when Mopidy is run from a Git repo other than Mopidys own. (Related to #706)
Other projects in Python