*** Exception: Network.Socket.connect: <socket: 41>: does not exist (Connection refused)
I think it's supposed to return Left (ConnectionError e) instead of raising an IOException.
For now, I work around the issue with
import System.IO.Error (catchIOError)
import qualified Network.MPD as M
catchIOError (M.withMPD M.status) $ return . Left . M.ConnectionError