upmpdcli implements an UPnP Media Renderer, using MPD to perform the real work.
It has been tested with a number of UPnP control points running on Android and Windows. Because of their good support of OpenHome Playlists, which are a significant improvement over bare UPnP, and their general quality, Bubble UPnP (Android app) and Linn Kinsky (free on Windows) work best with it.
The Control Points uses the UPnP protocols to browse the tracks on the Media Server and choses URIs to be played. It then talks UPnP to umpdcli, which uses the MPD client protocol to place the URIs into the MPD playlist. MPD finally retrieves the data from the Media Server using HTTP.
[UPnP Control Point] ^ ^ | | (UPnP) (UPnP) | | V | [upmpdcli] | ^ | | | (MPD protocol) | | | V V [MPD]<--(HTTP)-->[UPnP Media Server]
Each of the Control point, Media Server, MPD and upmpdcli processes can run on any network host.
More information: http://www.lesbonscomptes.com/upmpdcli