mpd_send_play() does just what the name says: it sends the "play" command, but doesn't do anything else. Specifically, it doesn't wait for MPD's response and of course doesn't evaluate it. Therefore, the connection is in state "waiting for MPD reply", a state in which you can't send further commands.

The function mpd_response_finish(connection) waits for a response and checks if it is successful. Any payload data which may be present will be discarded; there are special functions for receiving the payload (mpd_recv_entity and others).

Simpler solution: use mpd_run_play(), which combines mpd_send_play() and mpd_response_finish(). Most _send_ functions have an equivalent _run_ function for convenience.